├── .vs └── UniversalGameLauncher │ ├── DesignTimeBuild │ └── .dtbcache │ └── v15 │ ├── .suo │ └── Server │ └── sqlite3 │ ├── db.lock │ ├── storage.ide │ ├── storage.ide-shm │ └── storage.ide-wal ├── LICENSE ├── README.md ├── UniversalGameLauncher.sln ├── UniversalGameLauncher ├── App.config ├── Constants.cs ├── DownloadProgressTracker.cs ├── Extract.cs ├── Hasher.cs ├── LauncherForm.Designer.cs ├── LauncherForm.cs ├── LauncherForm.resx ├── NativeWinAPI.cs ├── PatchNoteBlock.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── FacebookLogo.png │ ├── Fantasy_Background_1028x643.jpg │ ├── Placeholder_Logo.png │ ├── Placeholder_Logo_280x58.png │ ├── Placeholder_Logo_363x75.png │ ├── TwitterLogo.png │ ├── cancel_12x12.png │ ├── instagram.png │ ├── minimize_12x12.png │ └── playbuttontest.png ├── StringUtility.cs ├── UniversalGameLauncher.csproj ├── UniversalGameLauncher.csproj.user ├── bin │ ├── Debug │ │ ├── UniversalGameLauncher.exe │ │ ├── UniversalGameLauncher.exe.config │ │ └── UniversalGameLauncher.pdb │ └── Release │ │ ├── ICSharpCode.SharpZipLib.dll │ │ ├── ICSharpCode.SharpZipLib.pdb │ │ ├── ICSharpCode.SharpZipLib.xml │ │ ├── UniversalGameLauncher.exe │ │ ├── UniversalGameLauncher.exe.config │ │ └── UniversalGameLauncher.pdb ├── obj │ ├── Debug │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── TempPE │ │ │ └── Properties.Resources.Designer.cs.dll │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ ├── UniversalGameLauncher.Application.resources │ │ ├── UniversalGameLauncher.Properties.Resources.resources │ │ ├── UniversalGameLauncher.csproj.CoreCompileInputs.cache │ │ ├── UniversalGameLauncher.csproj.FileListAbsolute.txt │ │ ├── UniversalGameLauncher.csproj.GenerateResource.cache │ │ ├── UniversalGameLauncher.csprojAssemblyReference.cache │ │ ├── UniversalGameLauncher.exe │ │ └── UniversalGameLauncher.pdb │ └── Release │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── TempPE │ │ └── Properties.Resources.Designer.cs.dll │ │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ │ ├── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ │ ├── UniversalGameLauncher.Application.resources │ │ ├── UniversalGameLauncher.Properties.Resources.resources │ │ ├── UniversalGameLauncher.csproj.CopyComplete │ │ ├── UniversalGameLauncher.csproj.CoreCompileInputs.cache │ │ ├── UniversalGameLauncher.csproj.FileListAbsolute.txt │ │ ├── UniversalGameLauncher.csproj.GenerateResource.cache │ │ ├── UniversalGameLauncher.csprojAssemblyReference.cache │ │ ├── UniversalGameLauncher.exe │ │ └── UniversalGameLauncher.pdb └── packages.config └── packages └── SharpZipLib.1.1.0 ├── .signature.p7s ├── SharpZipLib.1.1.0.nupkg └── lib ├── net45 ├── ICSharpCode.SharpZipLib.dll ├── ICSharpCode.SharpZipLib.pdb └── ICSharpCode.SharpZipLib.xml └── netstandard2.0 ├── ICSharpCode.SharpZipLib.dll ├── ICSharpCode.SharpZipLib.pdb └── ICSharpCode.SharpZipLib.xml /.vs/UniversalGameLauncher/DesignTimeBuild/.dtbcache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/.vs/UniversalGameLauncher/DesignTimeBuild/.dtbcache -------------------------------------------------------------------------------- /.vs/UniversalGameLauncher/v15/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/.vs/UniversalGameLauncher/v15/.suo -------------------------------------------------------------------------------- /.vs/UniversalGameLauncher/v15/Server/sqlite3/db.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/.vs/UniversalGameLauncher/v15/Server/sqlite3/db.lock -------------------------------------------------------------------------------- /.vs/UniversalGameLauncher/v15/Server/sqlite3/storage.ide: -------------------------------------------------------------------------------- 1 | SQLite format 3@ .A  -------------------------------------------------------------------------------- /.vs/UniversalGameLauncher/v15/Server/sqlite3/storage.ide-shm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/.vs/UniversalGameLauncher/v15/Server/sqlite3/storage.ide-shm -------------------------------------------------------------------------------- /.vs/UniversalGameLauncher/v15/Server/sqlite3/storage.ide-wal: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/.vs/UniversalGameLauncher/v15/Server/sqlite3/storage.ide-wal -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Teemu Sillanpää 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Universal Game Launcher 2 | 3 | ## Key features: 4 | - Easy to use and customize 5 | - Version checking/Auto updating of your game 6 | - Grab XML data from the server to display things like the built-in patch notes 7 | - Will work with games from any game engine (Unity, Unreal Engine, Godot, any!) 8 | 9 | ![image_1](http://temsoft.io/launcher/Launcher_Ready.png) 10 | ![image_2](http://temsoft.io/launcher/Launcher_Updating.png) 11 | 12 | 13 | 14 | 15 | ## Setting it up: 16 | 17 | The application is written in Visual Studio 2017. 18 | 19 | Everything that you need to modify to get the launcher working with your settings, is in the "Constants.cs" class. Assuming that you've already downloaded and opened the solution (UniversalGameLauncher.sln), go ahead and open up Constants.cs now. 20 | 21 | 1. Let's start by entering your game's name in the "GAME_TITLE" field. This should be the name of your executable game client. 22 | 23 | 2. Set up the path for your game if you'd like. By default, the data gets saved into your home directory in a folder by the name of "GAME_TITLE". 24 | 25 | 3. Let's now upload the necessary files to get everything up and running: 26 | 27 | 3.1. Pack your client along with whatever else files are necessary for the client to run into a ZIP file. Make sure that the client you want the launcher to run shares the value of "GAME_TITLE" in Constants.cs 28 | 29 | 3.2. Create a text file called "version.txt" and enter the number "1.0.0.0" (or similar) into it. That's it. 30 | 31 | 3.3. Lastly, the XML file for our patch notes. Download or copy the contents from https://temsoft.io/temsoft_assets/updates.xml and modify the text to your liking. 32 | 33 | 3.4. Although not required to run, now might be a good time to grab your desired logo, icon and background for the launcher as well. 34 | 35 | 4. Now upload these items onto a host of your choosing. Ideally one that you know will keep the files up and alive. 36 | 37 | 5. Next, you'll want to add the URLs of your recently uploaded items. This should be pretty self-explanatory, but make sure that the file extensions are correct. 38 | 39 | 6. Now we should arrive at the navigation bar buttons. Give them the names and links that you wish. 40 | 41 | 7. At the bottom you'll find some basic settings for the launcher. Change them up how you'd like. Or don't. Up to you. 42 | 43 | 8. Once you're done editing the class, hit the "Build" button at the top and open up "Configuration Manager". On the first dropdown list, select "Release" instead of "Debug". Close the window. Click "Build" again, and then "Build solution". Done. Your updated launcher is now in \bin\release\. 44 | 45 | ## Auto Updating 46 | 47 | The application's version will start at 1.0.0.0, as should the text file's value that you uploaded earlier. When you upload a new version of your game and want the launcher to prompt an update, all you have to do is raise the value of the number in your "version.txt" file. 48 | This will create a mismatch between the launcher's local version and the version you're hosting on your server, and the launcher will prompt to re-download your game the next time it's ran. 49 | 50 | This might also be a good time to update your updates.xml file with the latest patch notes, if that's something you're keeping track of. 51 | 52 | 53 | ## Support 54 | 55 | For support, inquiries or anything else, you can contact me at https://temsoft.io 56 | -------------------------------------------------------------------------------- /UniversalGameLauncher.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27703.2026 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalGameLauncher", "UniversalGameLauncher\UniversalGameLauncher.csproj", "{FC42614E-0B3E-43F4-A3D7-C778DDE64175}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {FC42614E-0B3E-43F4-A3D7-C778DDE64175}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {FC42614E-0B3E-43F4-A3D7-C778DDE64175}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {FC42614E-0B3E-43F4-A3D7-C778DDE64175}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {FC42614E-0B3E-43F4-A3D7-C778DDE64175}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {F4150DC8-718B-4A7A-8D78-1EAF8CFFD52E} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /UniversalGameLauncher/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 1.0.0.0 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Constants.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace UniversalGameLauncher { 9 | class Constants : Application { 10 | 11 | /// 12 | /// Core game info 13 | /// 14 | public static readonly string GAME_TITLE = "TemsoftAutoClicker"; 15 | public static readonly string LAUNCHER_NAME = "Temsoft Launcher"; 16 | 17 | /// 18 | /// Paths & urls 19 | /// 20 | public static readonly string DESTINATION_PATH = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), GAME_TITLE); 21 | public static readonly string ZIP_PATH = Path.Combine(DESTINATION_PATH, GAME_TITLE + ".zip"); 22 | public static readonly string GAME_EXECUTABLE_PATH = Path.Combine(DESTINATION_PATH, GAME_TITLE + ".exe"); 23 | 24 | public static readonly string VERSION_URL = "https://temsoft.io/version.txt"; 25 | public static readonly string APPLICATION_ICON_URL = "https://temsoft.io/temsoft_assets/temsoft_logo_ico.ico"; // Needs to be .ico 26 | public static readonly string LOGO_URL = "https://temsoft.io/temsoft_assets/Placeholder_Logo_White_280x58.png"; // Ideally around 283x75 27 | public static readonly string BACKGROUND_URL = "https://temsoft.io/temsoft_assets/fantasy-3077928_1280.jpg"; 28 | public static readonly string PATCH_NOTES_URL = "https://temsoft.io/temsoft_assets/updates.xml"; 29 | public static readonly string CLIENT_DOWNLOAD_URL = "https://temsoft.io/temsoft_assets/TemsoftAutoClicker.zip"; 30 | 31 | /// 32 | /// Navigation bar buttons 33 | /// 34 | public static readonly string NAVBAR_BUTTON_1_TEXT = "Website"; 35 | public static readonly string NAVBAR_BUTTON_1_URL = "https://temsoft.io/"; 36 | public static readonly string NAVBAR_BUTTON_2_TEXT = "News"; 37 | public static readonly string NAVBAR_BUTTON_2_URL = "https://google.com/"; 38 | public static readonly string NAVBAR_BUTTON_3_TEXT = "Community"; 39 | public static readonly string NAVBAR_BUTTON_3_URL = "https://youtube.com/"; 40 | public static readonly string NAVBAR_BUTTON_4_TEXT = "Support"; 41 | public static readonly string NAVBAR_BUTTON_4_URL = "https://github.com/"; 42 | public static readonly string NAVBAR_BUTTON_5_TEXT = "Discord"; 43 | public static readonly string NAVBAR_BUTTON_5_URL = "https://github.com/"; 44 | 45 | // Modify this array if you're adding or removing a button 46 | public static readonly string[] NAVBAR_BUTTON_TEXT_ARRAY = {NAVBAR_BUTTON_1_TEXT, NAVBAR_BUTTON_2_TEXT, NAVBAR_BUTTON_3_TEXT, 47 | NAVBAR_BUTTON_4_TEXT, NAVBAR_BUTTON_5_TEXT }; 48 | 49 | /// 50 | /// Settings 51 | /// 52 | public static bool SHOW_VERSION_TEXT = true; 53 | public static bool AUTOMATICALLY_BEGIN_UPDATING = false; 54 | public static bool AUTOMATICALLY_LAUNCH_GAME_AFTER_UPDATING = false; 55 | public static bool SHOW_ERROR_BOX_IF_PATCH_NOTES_DOWNLOAD_FAILS = true; 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /UniversalGameLauncher/DownloadProgressTracker.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace UniversalGameLauncher { 8 | public class DownloadProgressTracker { 9 | 10 | private long _totalFileSize; 11 | private readonly int _sampleSize; 12 | private readonly TimeSpan _valueDelay; 13 | 14 | private DateTime _lastUpdateCalculated; 15 | private long _previousProgress; 16 | 17 | private double _cachedSpeed; 18 | 19 | private Queue> _changes = new Queue>(); 20 | 21 | public DownloadProgressTracker(int sampleSize, TimeSpan valueDelay) { 22 | _lastUpdateCalculated = DateTime.Now; 23 | _sampleSize = sampleSize; 24 | _valueDelay = valueDelay; 25 | } 26 | 27 | public void Reset() { 28 | _previousProgress = 0; 29 | } 30 | 31 | public void SetProgress(long bytesReceived, long totalBytesToReceive) { 32 | _totalFileSize = totalBytesToReceive; 33 | 34 | long diff = bytesReceived - _previousProgress; 35 | if (diff <= 0) 36 | return; 37 | 38 | _previousProgress = bytesReceived; 39 | 40 | _changes.Enqueue(new Tuple(DateTime.Now, diff)); 41 | while (_changes.Count > _sampleSize) 42 | _changes.Dequeue(); 43 | } 44 | 45 | public double GetProgress() { 46 | return _previousProgress / (double) _totalFileSize; 47 | } 48 | 49 | public string GetProgressString() { 50 | return String.Format("{0:P0}", GetProgress()); 51 | } 52 | 53 | public string GetBytesPerSecondString() { 54 | double speed = GetBytesPerSecond(); 55 | var prefix = new[] { "", "K", "M", "G"}; 56 | 57 | int index = 0; 58 | while (speed > 1024 && index < prefix.Length - 1) 59 | { 60 | speed /= 1024; 61 | index++; 62 | } 63 | 64 | int intLen = ((int) speed).ToString().Length; 65 | int decimals = 3 - intLen; 66 | if (decimals < 0) 67 | decimals = 0; 68 | 69 | string format = String.Format("{{0:F{0}}}", decimals) + "{1}B/s"; 70 | 71 | return String.Format(format, speed, prefix[index]); 72 | } 73 | 74 | public double GetBytesPerSecond() { 75 | if (DateTime.Now >= _lastUpdateCalculated + _valueDelay) { 76 | _lastUpdateCalculated = DateTime.Now; 77 | _cachedSpeed = GetRateInternal(); 78 | } 79 | 80 | return _cachedSpeed; 81 | } 82 | 83 | private double GetRateInternal() { 84 | if (_changes.Count == 0) 85 | return 0; 86 | 87 | TimeSpan timespan = _changes.Last().Item1 - _changes.First().Item1; 88 | long bytes = _changes.Sum(t => t.Item2); 89 | 90 | double rate = bytes / timespan.TotalSeconds; 91 | 92 | if (double.IsInfinity(rate) || double.IsNaN(rate)) 93 | return 0; 94 | 95 | return rate; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Extract.cs: -------------------------------------------------------------------------------- 1 | using ICSharpCode.SharpZipLib.Zip; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace UniversalGameLauncher { 10 | class Extract { 11 | 12 | private Application _application; 13 | 14 | public Extract(Application application) { 15 | _application = application; 16 | } 17 | 18 | public void Run() { 19 | BackgroundWorker bgw = new BackgroundWorker { 20 | WorkerReportsProgress = true 21 | }; 22 | 23 | bgw.DoWork += new DoWorkEventHandler( 24 | delegate(object o, DoWorkEventArgs args) { 25 | BackgroundWorker bw = o as BackgroundWorker; 26 | FastZip fastZip = new FastZip(); 27 | fastZip.ExtractZip(Constants.ZIP_PATH, Constants.DESTINATION_PATH, null); 28 | }); 29 | 30 | bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler( 31 | delegate(object o, RunWorkerCompletedEventArgs args) { 32 | _application.SetLauncherReady(); 33 | }); 34 | 35 | bgw.RunWorkerAsync(); 36 | 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Hasher.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Security.Cryptography; 3 | using System.Text; 4 | 5 | namespace UniversalGameLauncher { 6 | internal enum HashType { 7 | MD5, 8 | SHA1, 9 | SHA512 10 | } 11 | 12 | internal static class Hasher { 13 | internal static string HashFile(string filePath, HashType algo) { 14 | switch(algo) { 15 | case HashType.MD5: 16 | return MakeHashString(MD5.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); 17 | case HashType.SHA1: 18 | return MakeHashString(SHA1.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); 19 | case HashType.SHA512: 20 | return MakeHashString(SHA512.Create().ComputeHash(new FileStream(filePath, FileMode.Open))); 21 | default: 22 | return string.Empty; 23 | } 24 | } 25 | 26 | private static string MakeHashString(byte[] hash) { 27 | StringBuilder sb = new StringBuilder(hash.Length * 2); 28 | 29 | foreach(byte b in hash) { 30 | sb.Append(b.ToString("X2").ToLower()); 31 | } 32 | 33 | return sb.ToString(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /UniversalGameLauncher/LauncherForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace UniversalGameLauncher { 2 | partial class Application { 3 | /// 4 | /// Required designer variable. 5 | /// 6 | private System.ComponentModel.IContainer components = null; 7 | 8 | /// 9 | /// Clean up any resources being used. 10 | /// 11 | /// true if managed resources should be disposed; otherwise, false. 12 | protected override void Dispose(bool disposing) { 13 | if (disposing && (components != null)) { 14 | components.Dispose(); 15 | } 16 | base.Dispose(disposing); 17 | } 18 | 19 | #region Windows Form Designer generated code 20 | 21 | /// 22 | /// Required method for Designer support - do not modify 23 | /// the contents of this method with the code editor. 24 | /// 25 | private void InitializeComponent() { 26 | this.updateProgressBar = new System.Windows.Forms.ProgressBar(); 27 | this.updateLabelText = new System.Windows.Forms.Label(); 28 | this.currentVersionLabel = new System.Windows.Forms.Label(); 29 | this.navbarButton2 = new System.Windows.Forms.Button(); 30 | this.navbarPanel = new System.Windows.Forms.Panel(); 31 | this.logoPictureBox = new System.Windows.Forms.PictureBox(); 32 | this.minimizePictureBox = new System.Windows.Forms.PictureBox(); 33 | this.closePictureBox = new System.Windows.Forms.PictureBox(); 34 | this.navbarButton5 = new System.Windows.Forms.Button(); 35 | this.navbarButton4 = new System.Windows.Forms.Button(); 36 | this.navbarButton3 = new System.Windows.Forms.Button(); 37 | this.navbarButton1 = new System.Windows.Forms.Button(); 38 | this.clientReadyLabel = new System.Windows.Forms.Label(); 39 | this.patchPanel1 = new System.Windows.Forms.Panel(); 40 | this.patchText1 = new System.Windows.Forms.Label(); 41 | this.patchButton1 = new System.Windows.Forms.Button(); 42 | this.patchTitle1 = new System.Windows.Forms.Label(); 43 | this.patchPanel2 = new System.Windows.Forms.Panel(); 44 | this.patchText2 = new System.Windows.Forms.Label(); 45 | this.patchButton2 = new System.Windows.Forms.Button(); 46 | this.patchTitle2 = new System.Windows.Forms.Label(); 47 | this.patchPanel3 = new System.Windows.Forms.Panel(); 48 | this.patchText3 = new System.Windows.Forms.Label(); 49 | this.patchButton3 = new System.Windows.Forms.Button(); 50 | this.patchTitle3 = new System.Windows.Forms.Label(); 51 | this.patchContainerPanel = new System.Windows.Forms.Panel(); 52 | this.label5 = new System.Windows.Forms.Label(); 53 | this.playButton = new System.Windows.Forms.Button(); 54 | this.navbarPanel.SuspendLayout(); 55 | ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); 56 | ((System.ComponentModel.ISupportInitialize)(this.minimizePictureBox)).BeginInit(); 57 | ((System.ComponentModel.ISupportInitialize)(this.closePictureBox)).BeginInit(); 58 | this.patchPanel1.SuspendLayout(); 59 | this.patchPanel2.SuspendLayout(); 60 | this.patchPanel3.SuspendLayout(); 61 | this.patchContainerPanel.SuspendLayout(); 62 | this.SuspendLayout(); 63 | // 64 | // updateProgressBar 65 | // 66 | this.updateProgressBar.BackColor = System.Drawing.SystemColors.ControlDarkDark; 67 | this.updateProgressBar.Location = new System.Drawing.Point(17, 571); 68 | this.updateProgressBar.Name = "updateProgressBar"; 69 | this.updateProgressBar.Size = new System.Drawing.Size(802, 60); 70 | this.updateProgressBar.TabIndex = 1; 71 | this.updateProgressBar.Visible = false; 72 | // 73 | // updateLabelText 74 | // 75 | this.updateLabelText.BackColor = System.Drawing.Color.Transparent; 76 | this.updateLabelText.Font = new System.Drawing.Font("Segoe UI", 12.25F); 77 | this.updateLabelText.ForeColor = System.Drawing.SystemColors.Control; 78 | this.updateLabelText.Location = new System.Drawing.Point(17, 527); 79 | this.updateLabelText.Name = "updateLabelText"; 80 | this.updateLabelText.Size = new System.Drawing.Size(802, 30); 81 | this.updateLabelText.TabIndex = 2; 82 | this.updateLabelText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 83 | // 84 | // currentVersionLabel 85 | // 86 | this.currentVersionLabel.AutoSize = true; 87 | this.currentVersionLabel.BackColor = System.Drawing.Color.Transparent; 88 | this.currentVersionLabel.ForeColor = System.Drawing.SystemColors.Control; 89 | this.currentVersionLabel.Location = new System.Drawing.Point(18, 544); 90 | this.currentVersionLabel.Name = "currentVersionLabel"; 91 | this.currentVersionLabel.Size = new System.Drawing.Size(40, 13); 92 | this.currentVersionLabel.TabIndex = 3; 93 | this.currentVersionLabel.Text = "1.0.0.0"; 94 | // 95 | // navbarButton2 96 | // 97 | this.navbarButton2.BackColor = System.Drawing.Color.Transparent; 98 | this.navbarButton2.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 99 | this.navbarButton2.FlatAppearance.BorderSize = 0; 100 | this.navbarButton2.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 101 | this.navbarButton2.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 102 | this.navbarButton2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 103 | this.navbarButton2.Font = new System.Drawing.Font("Segoe UI", 15F); 104 | this.navbarButton2.Location = new System.Drawing.Point(433, 0); 105 | this.navbarButton2.Name = "navbarButton2"; 106 | this.navbarButton2.Size = new System.Drawing.Size(125, 72); 107 | this.navbarButton2.TabIndex = 0; 108 | this.navbarButton2.TabStop = false; 109 | this.navbarButton2.Text = "News"; 110 | this.navbarButton2.UseVisualStyleBackColor = true; 111 | // 112 | // navbarPanel 113 | // 114 | this.navbarPanel.BackColor = System.Drawing.Color.Transparent; 115 | this.navbarPanel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; 116 | this.navbarPanel.Controls.Add(this.logoPictureBox); 117 | this.navbarPanel.Controls.Add(this.minimizePictureBox); 118 | this.navbarPanel.Controls.Add(this.closePictureBox); 119 | this.navbarPanel.Controls.Add(this.navbarButton5); 120 | this.navbarPanel.Controls.Add(this.navbarButton4); 121 | this.navbarPanel.Controls.Add(this.navbarButton3); 122 | this.navbarPanel.Controls.Add(this.navbarButton1); 123 | this.navbarPanel.Controls.Add(this.navbarButton2); 124 | this.navbarPanel.Location = new System.Drawing.Point(0, -1); 125 | this.navbarPanel.Name = "navbarPanel"; 126 | this.navbarPanel.Size = new System.Drawing.Size(1028, 75); 127 | this.navbarPanel.TabIndex = 0; 128 | // 129 | // logoPictureBox 130 | // 131 | this.logoPictureBox.BackColor = System.Drawing.Color.Transparent; 132 | this.logoPictureBox.Location = new System.Drawing.Point(0, 0); 133 | this.logoPictureBox.Name = "logoPictureBox"; 134 | this.logoPictureBox.Size = new System.Drawing.Size(283, 75); 135 | this.logoPictureBox.TabIndex = 2; 136 | this.logoPictureBox.TabStop = false; 137 | // 138 | // minimizePictureBox 139 | // 140 | this.minimizePictureBox.BackColor = System.Drawing.Color.Transparent; 141 | this.minimizePictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; 142 | this.minimizePictureBox.Image = global::UniversalGameLauncher.Properties.Resources.minimize_12x12; 143 | this.minimizePictureBox.Location = new System.Drawing.Point(955, 3); 144 | this.minimizePictureBox.Name = "minimizePictureBox"; 145 | this.minimizePictureBox.Size = new System.Drawing.Size(25, 25); 146 | this.minimizePictureBox.TabIndex = 1; 147 | this.minimizePictureBox.TabStop = false; 148 | this.minimizePictureBox.Click += new System.EventHandler(this.minimizePictureBox_Click); 149 | this.minimizePictureBox.MouseEnter += new System.EventHandler(this.OnMouseEnterIcon); 150 | this.minimizePictureBox.MouseLeave += new System.EventHandler(this.OnMouseLeaveIcon); 151 | // 152 | // closePictureBox 153 | // 154 | this.closePictureBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 155 | this.closePictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; 156 | this.closePictureBox.Image = global::UniversalGameLauncher.Properties.Resources.cancel_12x12; 157 | this.closePictureBox.Location = new System.Drawing.Point(1000, 3); 158 | this.closePictureBox.Name = "closePictureBox"; 159 | this.closePictureBox.Size = new System.Drawing.Size(25, 25); 160 | this.closePictureBox.TabIndex = 1; 161 | this.closePictureBox.TabStop = false; 162 | this.closePictureBox.Click += new System.EventHandler(this.closePictureBox_Click); 163 | this.closePictureBox.MouseEnter += new System.EventHandler(this.OnMouseEnterIcon); 164 | this.closePictureBox.MouseLeave += new System.EventHandler(this.OnMouseLeaveIcon); 165 | // 166 | // navbarButton5 167 | // 168 | this.navbarButton5.BackColor = System.Drawing.Color.Transparent; 169 | this.navbarButton5.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 170 | this.navbarButton5.FlatAppearance.BorderSize = 0; 171 | this.navbarButton5.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 172 | this.navbarButton5.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 173 | this.navbarButton5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 174 | this.navbarButton5.Font = new System.Drawing.Font("Segoe UI", 15F); 175 | this.navbarButton5.Location = new System.Drawing.Point(823, 0); 176 | this.navbarButton5.Name = "navbarButton5"; 177 | this.navbarButton5.Size = new System.Drawing.Size(125, 72); 178 | this.navbarButton5.TabIndex = 0; 179 | this.navbarButton5.TabStop = false; 180 | this.navbarButton5.Text = "Discord"; 181 | this.navbarButton5.UseVisualStyleBackColor = false; 182 | // 183 | // navbarButton4 184 | // 185 | this.navbarButton4.BackColor = System.Drawing.Color.Transparent; 186 | this.navbarButton4.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 187 | this.navbarButton4.FlatAppearance.BorderSize = 0; 188 | this.navbarButton4.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 189 | this.navbarButton4.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 190 | this.navbarButton4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 191 | this.navbarButton4.Font = new System.Drawing.Font("Segoe UI", 15F); 192 | this.navbarButton4.Location = new System.Drawing.Point(693, 0); 193 | this.navbarButton4.Name = "navbarButton4"; 194 | this.navbarButton4.Size = new System.Drawing.Size(125, 72); 195 | this.navbarButton4.TabIndex = 0; 196 | this.navbarButton4.TabStop = false; 197 | this.navbarButton4.Text = "Support"; 198 | this.navbarButton4.UseVisualStyleBackColor = false; 199 | // 200 | // navbarButton3 201 | // 202 | this.navbarButton3.BackColor = System.Drawing.Color.Transparent; 203 | this.navbarButton3.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 204 | this.navbarButton3.FlatAppearance.BorderSize = 0; 205 | this.navbarButton3.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 206 | this.navbarButton3.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 207 | this.navbarButton3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 208 | this.navbarButton3.Font = new System.Drawing.Font("Segoe UI", 15F); 209 | this.navbarButton3.Location = new System.Drawing.Point(563, 0); 210 | this.navbarButton3.Name = "navbarButton3"; 211 | this.navbarButton3.Size = new System.Drawing.Size(125, 72); 212 | this.navbarButton3.TabIndex = 0; 213 | this.navbarButton3.TabStop = false; 214 | this.navbarButton3.Text = "Community"; 215 | this.navbarButton3.UseVisualStyleBackColor = false; 216 | // 217 | // navbarButton1 218 | // 219 | this.navbarButton1.BackColor = System.Drawing.Color.Transparent; 220 | this.navbarButton1.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 221 | this.navbarButton1.FlatAppearance.BorderSize = 0; 222 | this.navbarButton1.FlatAppearance.MouseDownBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 223 | this.navbarButton1.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 224 | this.navbarButton1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 225 | this.navbarButton1.Font = new System.Drawing.Font("Segoe UI", 15F); 226 | this.navbarButton1.Location = new System.Drawing.Point(303, 0); 227 | this.navbarButton1.Name = "navbarButton1"; 228 | this.navbarButton1.Size = new System.Drawing.Size(125, 72); 229 | this.navbarButton1.TabIndex = 0; 230 | this.navbarButton1.TabStop = false; 231 | this.navbarButton1.Text = "Website"; 232 | this.navbarButton1.UseVisualStyleBackColor = true; 233 | // 234 | // clientReadyLabel 235 | // 236 | this.clientReadyLabel.BackColor = System.Drawing.Color.Transparent; 237 | this.clientReadyLabel.Font = new System.Drawing.Font("Segoe UI", 15.25F); 238 | this.clientReadyLabel.Location = new System.Drawing.Point(499, 581); 239 | this.clientReadyLabel.Name = "clientReadyLabel"; 240 | this.clientReadyLabel.Size = new System.Drawing.Size(320, 46); 241 | this.clientReadyLabel.TabIndex = 4; 242 | this.clientReadyLabel.Text = "Your client is up to date!"; 243 | this.clientReadyLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 244 | // 245 | // patchPanel1 246 | // 247 | this.patchPanel1.BackColor = System.Drawing.Color.Transparent; 248 | this.patchPanel1.Controls.Add(this.patchText1); 249 | this.patchPanel1.Controls.Add(this.patchButton1); 250 | this.patchPanel1.Controls.Add(this.patchTitle1); 251 | this.patchPanel1.Location = new System.Drawing.Point(30, 76); 252 | this.patchPanel1.Name = "patchPanel1"; 253 | this.patchPanel1.Size = new System.Drawing.Size(195, 300); 254 | this.patchPanel1.TabIndex = 5; 255 | // 256 | // patchText1 257 | // 258 | this.patchText1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 259 | this.patchText1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 260 | this.patchText1.Font = new System.Drawing.Font("Segoe UI", 10F); 261 | this.patchText1.ForeColor = System.Drawing.SystemColors.Control; 262 | this.patchText1.Location = new System.Drawing.Point(0, 42); 263 | this.patchText1.Name = "patchText1"; 264 | this.patchText1.Size = new System.Drawing.Size(195, 216); 265 | this.patchText1.TabIndex = 3; 266 | // 267 | // patchButton1 268 | // 269 | this.patchButton1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 270 | this.patchButton1.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 271 | this.patchButton1.FlatAppearance.BorderSize = 0; 272 | this.patchButton1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 273 | this.patchButton1.Font = new System.Drawing.Font("Segoe UI", 15F); 274 | this.patchButton1.Location = new System.Drawing.Point(0, 253); 275 | this.patchButton1.Name = "patchButton1"; 276 | this.patchButton1.Size = new System.Drawing.Size(195, 47); 277 | this.patchButton1.TabIndex = 2; 278 | this.patchButton1.TabStop = false; 279 | this.patchButton1.Text = "Read more..."; 280 | this.patchButton1.UseVisualStyleBackColor = false; 281 | this.patchButton1.Click += new System.EventHandler(this.OnClickButton); 282 | // 283 | // patchTitle1 284 | // 285 | this.patchTitle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 286 | this.patchTitle1.Font = new System.Drawing.Font("Segoe UI", 15F); 287 | this.patchTitle1.Location = new System.Drawing.Point(0, 0); 288 | this.patchTitle1.Name = "patchTitle1"; 289 | this.patchTitle1.Size = new System.Drawing.Size(195, 42); 290 | this.patchTitle1.TabIndex = 0; 291 | this.patchTitle1.Text = "15.07.2019"; 292 | this.patchTitle1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 293 | // 294 | // patchPanel2 295 | // 296 | this.patchPanel2.BackColor = System.Drawing.Color.Transparent; 297 | this.patchPanel2.Controls.Add(this.patchText2); 298 | this.patchPanel2.Controls.Add(this.patchButton2); 299 | this.patchPanel2.Controls.Add(this.patchTitle2); 300 | this.patchPanel2.Location = new System.Drawing.Point(260, 76); 301 | this.patchPanel2.Name = "patchPanel2"; 302 | this.patchPanel2.Size = new System.Drawing.Size(195, 300); 303 | this.patchPanel2.TabIndex = 5; 304 | // 305 | // patchText2 306 | // 307 | this.patchText2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 308 | this.patchText2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 309 | this.patchText2.Font = new System.Drawing.Font("Segoe UI", 10F); 310 | this.patchText2.ForeColor = System.Drawing.SystemColors.Control; 311 | this.patchText2.Location = new System.Drawing.Point(0, 42); 312 | this.patchText2.Name = "patchText2"; 313 | this.patchText2.Size = new System.Drawing.Size(195, 216); 314 | this.patchText2.TabIndex = 3; 315 | // 316 | // patchButton2 317 | // 318 | this.patchButton2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 319 | this.patchButton2.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 320 | this.patchButton2.FlatAppearance.BorderSize = 0; 321 | this.patchButton2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 322 | this.patchButton2.Font = new System.Drawing.Font("Segoe UI", 15F); 323 | this.patchButton2.Location = new System.Drawing.Point(0, 253); 324 | this.patchButton2.Name = "patchButton2"; 325 | this.patchButton2.Size = new System.Drawing.Size(195, 47); 326 | this.patchButton2.TabIndex = 2; 327 | this.patchButton2.TabStop = false; 328 | this.patchButton2.Text = "Read more..."; 329 | this.patchButton2.UseVisualStyleBackColor = false; 330 | this.patchButton2.Click += new System.EventHandler(this.OnClickButton); 331 | // 332 | // patchTitle2 333 | // 334 | this.patchTitle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 335 | this.patchTitle2.Font = new System.Drawing.Font("Segoe UI", 15F); 336 | this.patchTitle2.Location = new System.Drawing.Point(0, 0); 337 | this.patchTitle2.Name = "patchTitle2"; 338 | this.patchTitle2.Size = new System.Drawing.Size(195, 42); 339 | this.patchTitle2.TabIndex = 0; 340 | this.patchTitle2.Text = "15.07.2019"; 341 | this.patchTitle2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 342 | // 343 | // patchPanel3 344 | // 345 | this.patchPanel3.BackColor = System.Drawing.Color.Transparent; 346 | this.patchPanel3.Controls.Add(this.patchText3); 347 | this.patchPanel3.Controls.Add(this.patchButton3); 348 | this.patchPanel3.Controls.Add(this.patchTitle3); 349 | this.patchPanel3.Location = new System.Drawing.Point(490, 76); 350 | this.patchPanel3.Name = "patchPanel3"; 351 | this.patchPanel3.Size = new System.Drawing.Size(195, 300); 352 | this.patchPanel3.TabIndex = 5; 353 | // 354 | // patchText3 355 | // 356 | this.patchText3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 357 | this.patchText3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 358 | this.patchText3.Font = new System.Drawing.Font("Segoe UI", 10F); 359 | this.patchText3.ForeColor = System.Drawing.SystemColors.Control; 360 | this.patchText3.Location = new System.Drawing.Point(0, 42); 361 | this.patchText3.Name = "patchText3"; 362 | this.patchText3.Size = new System.Drawing.Size(195, 216); 363 | this.patchText3.TabIndex = 3; 364 | // 365 | // patchButton3 366 | // 367 | this.patchButton3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 368 | this.patchButton3.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 369 | this.patchButton3.FlatAppearance.BorderSize = 0; 370 | this.patchButton3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 371 | this.patchButton3.Font = new System.Drawing.Font("Segoe UI", 15F); 372 | this.patchButton3.Location = new System.Drawing.Point(0, 253); 373 | this.patchButton3.Name = "patchButton3"; 374 | this.patchButton3.Size = new System.Drawing.Size(195, 47); 375 | this.patchButton3.TabIndex = 2; 376 | this.patchButton3.TabStop = false; 377 | this.patchButton3.Text = "Read more..."; 378 | this.patchButton3.UseVisualStyleBackColor = false; 379 | this.patchButton3.Click += new System.EventHandler(this.OnClickButton); 380 | // 381 | // patchTitle3 382 | // 383 | this.patchTitle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 384 | this.patchTitle3.Font = new System.Drawing.Font("Segoe UI", 15F); 385 | this.patchTitle3.Location = new System.Drawing.Point(0, 0); 386 | this.patchTitle3.Name = "patchTitle3"; 387 | this.patchTitle3.Size = new System.Drawing.Size(195, 42); 388 | this.patchTitle3.TabIndex = 0; 389 | this.patchTitle3.Text = "15.07.2019"; 390 | this.patchTitle3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 391 | // 392 | // patchContainerPanel 393 | // 394 | this.patchContainerPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); 395 | this.patchContainerPanel.Controls.Add(this.label5); 396 | this.patchContainerPanel.Controls.Add(this.patchPanel2); 397 | this.patchContainerPanel.Controls.Add(this.patchPanel1); 398 | this.patchContainerPanel.Controls.Add(this.patchPanel3); 399 | this.patchContainerPanel.Location = new System.Drawing.Point(144, 106); 400 | this.patchContainerPanel.Name = "patchContainerPanel"; 401 | this.patchContainerPanel.Size = new System.Drawing.Size(717, 397); 402 | this.patchContainerPanel.TabIndex = 4; 403 | // 404 | // label5 405 | // 406 | this.label5.BackColor = System.Drawing.Color.Transparent; 407 | this.label5.Font = new System.Drawing.Font("Segoe UI", 25.25F, System.Drawing.FontStyle.Italic); 408 | this.label5.Location = new System.Drawing.Point(0, 0); 409 | this.label5.Name = "label5"; 410 | this.label5.Size = new System.Drawing.Size(717, 73); 411 | this.label5.TabIndex = 6; 412 | this.label5.Text = "Patch Notes"; 413 | this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; 414 | // 415 | // playButton 416 | // 417 | this.playButton.BackColor = System.Drawing.SystemColors.Highlight; 418 | this.playButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); 419 | this.playButton.FlatAppearance.BorderSize = 0; 420 | this.playButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 421 | this.playButton.Font = new System.Drawing.Font("Segoe UI", 25.25F, System.Drawing.FontStyle.Bold); 422 | this.playButton.Location = new System.Drawing.Point(825, 571); 423 | this.playButton.Name = "playButton"; 424 | this.playButton.Size = new System.Drawing.Size(191, 60); 425 | this.playButton.TabIndex = 0; 426 | this.playButton.TabStop = false; 427 | this.playButton.Text = "Play"; 428 | this.playButton.UseVisualStyleBackColor = false; 429 | this.playButton.Click += new System.EventHandler(this.OnClickPlay); 430 | // 431 | // Application 432 | // 433 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 434 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 435 | this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange; 436 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); 437 | this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 438 | this.ClientSize = new System.Drawing.Size(1028, 643); 439 | this.Controls.Add(this.patchContainerPanel); 440 | this.Controls.Add(this.clientReadyLabel); 441 | this.Controls.Add(this.navbarPanel); 442 | this.Controls.Add(this.currentVersionLabel); 443 | this.Controls.Add(this.updateLabelText); 444 | this.Controls.Add(this.updateProgressBar); 445 | this.Controls.Add(this.playButton); 446 | this.DoubleBuffered = true; 447 | this.Font = new System.Drawing.Font("Segoe UI", 8.25F); 448 | this.ForeColor = System.Drawing.SystemColors.Control; 449 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 450 | this.Name = "Application"; 451 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 452 | this.Text = "Universal Game Launcher"; 453 | this.TransparencyKey = System.Drawing.Color.SandyBrown; 454 | this.Load += new System.EventHandler(this.OnLoadApplication); 455 | this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Application_MouseDown); 456 | this.navbarPanel.ResumeLayout(false); 457 | ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); 458 | ((System.ComponentModel.ISupportInitialize)(this.minimizePictureBox)).EndInit(); 459 | ((System.ComponentModel.ISupportInitialize)(this.closePictureBox)).EndInit(); 460 | this.patchPanel1.ResumeLayout(false); 461 | this.patchPanel2.ResumeLayout(false); 462 | this.patchPanel3.ResumeLayout(false); 463 | this.patchContainerPanel.ResumeLayout(false); 464 | this.ResumeLayout(false); 465 | this.PerformLayout(); 466 | 467 | } 468 | 469 | #endregion 470 | 471 | private System.Windows.Forms.Button playButton; 472 | private System.Windows.Forms.ProgressBar updateProgressBar; 473 | private System.Windows.Forms.Label updateLabelText; 474 | private System.Windows.Forms.Label currentVersionLabel; 475 | private System.Windows.Forms.Button navbarButton2; 476 | private System.Windows.Forms.Button navbarButton5; 477 | private System.Windows.Forms.Button navbarButton4; 478 | private System.Windows.Forms.Button navbarButton3; 479 | private System.Windows.Forms.Panel navbarPanel; 480 | private System.Windows.Forms.PictureBox closePictureBox; 481 | private System.Windows.Forms.PictureBox minimizePictureBox; 482 | private System.Windows.Forms.Label clientReadyLabel; 483 | private System.Windows.Forms.Button navbarButton1; 484 | private System.Windows.Forms.Panel patchPanel1; 485 | private System.Windows.Forms.Label patchTitle1; 486 | private System.Windows.Forms.Button patchButton1; 487 | private System.Windows.Forms.Label patchText1; 488 | private System.Windows.Forms.Panel patchPanel2; 489 | private System.Windows.Forms.Label patchText2; 490 | private System.Windows.Forms.Button patchButton2; 491 | private System.Windows.Forms.Label patchTitle2; 492 | private System.Windows.Forms.Panel patchPanel3; 493 | private System.Windows.Forms.Label patchText3; 494 | private System.Windows.Forms.Button patchButton3; 495 | private System.Windows.Forms.Label patchTitle3; 496 | private System.Windows.Forms.Panel patchContainerPanel; 497 | private System.Windows.Forms.Label label5; 498 | private System.Windows.Forms.PictureBox logoPictureBox; 499 | } 500 | } 501 | 502 | -------------------------------------------------------------------------------- /UniversalGameLauncher/LauncherForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Diagnostics; 5 | using System.Drawing; 6 | using System.IO; 7 | using System.Net; 8 | using System.Threading; 9 | using System.Windows.Forms; 10 | using System.Xml; 11 | using System.Xml.Serialization; 12 | using ICSharpCode.SharpZipLib.Zip; 13 | 14 | namespace UniversalGameLauncher { 15 | public partial class Application : Form { 16 | 17 | private DownloadProgressTracker _downloadProgressTracker; 18 | private WebClient _webClient; 19 | 20 | public Version LocalVersion { get { return new Version(Properties.Settings.Default.VersionText); } } 21 | public Version OnlineVersion { get; private set; } 22 | 23 | private List patchNoteBlocks = new List(); 24 | 25 | private bool _isReady; 26 | public bool IsReady { 27 | get { 28 | return _isReady; 29 | } 30 | set { 31 | _isReady = value; 32 | TogglePlayButton(value); 33 | InitializeFooter(); 34 | } 35 | } 36 | 37 | public bool UpToDate { get { return LocalVersion >= OnlineVersion; } } 38 | 39 | public Application() { 40 | InitializeComponent(); 41 | int style = NativeWinAPI.GetWindowLong(this.Handle, NativeWinAPI.GWL_EXSTYLE); 42 | style |= NativeWinAPI.WS_EX_COMPOSITED; 43 | NativeWinAPI.SetWindowLong(this.Handle, NativeWinAPI.GWL_EXSTYLE, style); 44 | } 45 | 46 | private void OnLoadApplication(object sender, EventArgs e) { 47 | InitializeConstantsSettings(); 48 | InitializeFiles(); 49 | InitializeImages(); 50 | FetchPatchNotes(); 51 | InitializeVersionControl(); 52 | 53 | IsReady = UpToDate; 54 | 55 | _downloadProgressTracker = new DownloadProgressTracker(50, TimeSpan.FromMilliseconds(500)); 56 | 57 | if (!UpToDate && Constants.AUTOMATICALLY_BEGIN_UPDATING) { 58 | DownloadFile(); 59 | } 60 | } 61 | 62 | private void InitializeConstantsSettings() { 63 | Name = Constants.GAME_TITLE; 64 | Text = Constants.LAUNCHER_NAME; 65 | SetUpButtonEvents(); 66 | 67 | currentVersionLabel.Visible = Constants.SHOW_VERSION_TEXT; 68 | 69 | } 70 | 71 | private void InitializeFiles() { 72 | if (!Directory.Exists(Constants.DESTINATION_PATH)) { 73 | Directory.CreateDirectory(Constants.DESTINATION_PATH); 74 | } 75 | } 76 | 77 | private void InitializeImages() { 78 | LoadApplicationIcon(); 79 | navbarPanel.BackColor = Color.FromArgb(25, 100, 100, 100); // // Make panel background semi transparent 80 | logoPictureBox.SizeMode = PictureBoxSizeMode.CenterImage; 81 | closePictureBox.SizeMode = PictureBoxSizeMode.CenterImage; // Center the X icon 82 | minimizePictureBox.SizeMode = PictureBoxSizeMode.CenterImage; // Center the - icon 83 | try { 84 | logoPictureBox.Load(Constants.LOGO_URL); 85 | using(WebClient webClient = new WebClient()) { 86 | using (Stream stream = webClient.OpenRead(Constants.BACKGROUND_URL)) { 87 | BackgroundImage = Image.FromStream(stream); 88 | } 89 | } 90 | } catch (Exception e) { 91 | MessageBox.Show("The launcher was unable to retrieve some game images from the server! " + e, "Error"); 92 | } 93 | } 94 | 95 | private void LoadApplicationIcon() { 96 | WebRequest request = (HttpWebRequest)WebRequest.Create(Constants.APPLICATION_ICON_URL); 97 | 98 | Bitmap bm = new Bitmap(32,32); 99 | MemoryStream memStream; 100 | 101 | using (Stream response = request.GetResponse().GetResponseStream()) { 102 | memStream = new MemoryStream(); 103 | byte[] buffer = new byte[1024]; 104 | int byteCount; 105 | 106 | do { 107 | byteCount = response.Read(buffer, 0, buffer.Length); 108 | memStream.Write(buffer, 0, byteCount); 109 | } while (byteCount > 0); 110 | } 111 | 112 | bm = new Bitmap(Image.FromStream(memStream)); 113 | 114 | if (bm != null) { 115 | Icon = Icon.FromHandle(bm.GetHicon()); 116 | } 117 | 118 | } 119 | 120 | private void InitializeVersionControl() { 121 | currentVersionLabel.Text = Properties.Settings.Default.VersionText; 122 | OnlineVersion = GetOnlineVersion(); 123 | 124 | Console.WriteLine("We are on version " + LocalVersion + " and the online version is " + OnlineVersion); 125 | } 126 | 127 | private void InitializeFooter() { 128 | if (IsReady) { 129 | updateProgressBar.Visible = false; 130 | clientReadyLabel.Visible = true; 131 | } else { 132 | updateProgressBar.Visible = true; 133 | clientReadyLabel.Visible= false; 134 | } 135 | } 136 | 137 | private Version GetOnlineVersion() { 138 | try { 139 | string onlineVersion = new WebClient().DownloadString(Constants.VERSION_URL); 140 | Console.WriteLine(LocalVersion >= new Version(onlineVersion)); 141 | Version.TryParse(onlineVersion, out Version result); 142 | return result; 143 | } catch { 144 | MessageBox.Show("The launcher was unable to read the current client version from the server!", "Fatal error"); 145 | return null; 146 | } 147 | } 148 | 149 | private void OnClickPlay(object sender, EventArgs e) { 150 | if (IsReady) { 151 | LaunchGame(); 152 | } else { 153 | DownloadFile(); 154 | } 155 | } 156 | 157 | private void DownloadFile() { 158 | using (_webClient = new WebClient()) { 159 | _webClient.DownloadProgressChanged += OnDownloadProgressChanged; 160 | _webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(OnDownloadCompleted); 161 | _webClient.DownloadFileAsync(new Uri(Constants.CLIENT_DOWNLOAD_URL), Constants.ZIP_PATH); 162 | } 163 | 164 | } 165 | 166 | private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { 167 | _downloadProgressTracker.SetProgress(e.BytesReceived, e.TotalBytesToReceive); 168 | updateProgressBar.Value = e.ProgressPercentage; 169 | updateLabelText.Text = string.Format("Downloading: {0} of {1} @ {2}", StringUtility.FormatBytes(e.BytesReceived), 170 | StringUtility.FormatBytes(e.TotalBytesToReceive), _downloadProgressTracker.GetBytesPerSecondString()); 171 | 172 | } 173 | 174 | private void OnDownloadCompleted(object sender, AsyncCompletedEventArgs e) { 175 | _downloadProgressTracker.Reset(); 176 | updateLabelText.Text = "Download finished - extracting..."; 177 | 178 | Extract extract = new Extract(this); 179 | extract.Run(); 180 | } 181 | 182 | public void SetLauncherReady() { 183 | updateLabelText.Text = ""; 184 | if (!File.Exists(Constants.GAME_EXECUTABLE_PATH)) { 185 | MessageBox.Show("Couldn't make a connection to the game server. Please try again later or inform the developer if the issue persists.", "Fatal error"); 186 | return; 187 | } 188 | 189 | currentVersionLabel.Text = OnlineVersion.ToString(); 190 | Properties.Settings.Default.VersionText = OnlineVersion.ToString(); 191 | Properties.Settings.Default.Save(); 192 | Console.WriteLine("Updated version. Now running on version: " + LocalVersion); 193 | IsReady = true; 194 | 195 | if (Constants.AUTOMATICALLY_LAUNCH_GAME_AFTER_UPDATING) 196 | LaunchGame(); 197 | 198 | try { 199 | File.Delete(Constants.ZIP_PATH); 200 | } catch { 201 | MessageBox.Show("Couldn't delete the downloaded zip file after extraction."); 202 | } 203 | } 204 | 205 | private void FetchPatchNotes() { 206 | try { 207 | XmlDocument doc = new XmlDocument(); 208 | doc.Load(Constants.PATCH_NOTES_URL); 209 | 210 | foreach(XmlNode node in doc.DocumentElement) { 211 | PatchNoteBlock block = new PatchNoteBlock(); 212 | for(int i = 0; i < node.ChildNodes.Count; i++) { 213 | switch(i) { 214 | case 0: 215 | block.Title = node.ChildNodes[i].InnerText; 216 | break; 217 | case 1: 218 | block.Text = node.ChildNodes[i].InnerText; 219 | break; 220 | case 2: 221 | block.Link = node.ChildNodes[i].InnerText; 222 | break; 223 | } 224 | } 225 | patchNoteBlocks.Add(block); 226 | } 227 | } catch { 228 | patchContainerPanel.Visible = false; 229 | if (Constants.SHOW_ERROR_BOX_IF_PATCH_NOTES_DOWNLOAD_FAILS) 230 | MessageBox.Show("The launcher was unable to retrieve patch notes from the server!"); 231 | } 232 | 233 | Label[] patchTitleObjects = { patchTitle1, patchTitle2, patchTitle3 }; 234 | Label[] patchTextObjects = { patchText1, patchText2, patchText3 }; 235 | 236 | for(int i = 0; i < patchNoteBlocks.Count; i++) { 237 | patchTitleObjects[i].Text = patchNoteBlocks[i].Title; 238 | patchTextObjects[i].Text = patchNoteBlocks[i].Text; 239 | } 240 | } 241 | 242 | private void LaunchGame() { 243 | try { 244 | Process.Start(Constants.GAME_EXECUTABLE_PATH); 245 | Environment.Exit(0); 246 | } catch { 247 | IsReady = false; 248 | DownloadFile(); 249 | MessageBox.Show("Couldn't locate the game executable! Attempting to redownload - please wait.", "Fatal Error"); 250 | } 251 | } 252 | 253 | private void TogglePlayButton(bool toggle) { 254 | switch(toggle) { 255 | case true: 256 | playButton.BackColor = Color.Green; 257 | playButton.Text = "Play"; 258 | break; 259 | case false: 260 | playButton.BackColor = Color.DeepSkyBlue; 261 | playButton.Text = "Update"; 262 | break; 263 | } 264 | } 265 | 266 | // Move the form with LMB 267 | private void Application_MouseDown(object sender, MouseEventArgs e) { 268 | if (e.Button == MouseButtons.Left) { 269 | NativeWinAPI.ReleaseCapture(); 270 | NativeWinAPI.SendMessage(Handle, NativeWinAPI.WM_NCLBUTTONDOWN, NativeWinAPI.HT_CAPTION, 0); 271 | } 272 | } 273 | 274 | private void SetUpButtonEvents() { 275 | Button[] buttons = { navbarButton1, navbarButton2, navbarButton3, navbarButton4, navbarButton5 }; 276 | 277 | for(int i = 0; i < buttons.Length; i++) { 278 | buttons[i].Click += new EventHandler(OnClickButton); 279 | buttons[i].Text = Constants.NAVBAR_BUTTON_TEXT_ARRAY[i]; 280 | } 281 | } 282 | 283 | public void OnClickButton(object sender, EventArgs e) { 284 | Button button = (Button) sender; 285 | switch(button.Name) { 286 | case nameof(navbarButton1): 287 | System.Diagnostics.Process.Start(Constants.NAVBAR_BUTTON_1_URL); 288 | break; 289 | case nameof(navbarButton2): 290 | System.Diagnostics.Process.Start(Constants.NAVBAR_BUTTON_2_URL); 291 | break; 292 | case nameof(navbarButton3): 293 | System.Diagnostics.Process.Start(Constants.NAVBAR_BUTTON_3_URL); 294 | break; 295 | case nameof(navbarButton4): 296 | System.Diagnostics.Process.Start(Constants.NAVBAR_BUTTON_4_URL); 297 | break; 298 | case nameof(navbarButton5): 299 | System.Diagnostics.Process.Start(Constants.NAVBAR_BUTTON_5_URL); 300 | break; 301 | 302 | case nameof(patchButton1): 303 | Process.Start(patchNoteBlocks[0].Link); 304 | break; 305 | case nameof(patchButton2): 306 | Process.Start(patchNoteBlocks[1].Link); 307 | break; 308 | case nameof(patchButton3): 309 | Process.Start(patchNoteBlocks[2].Link); 310 | break; 311 | } 312 | } 313 | 314 | private void OnMouseEnterIcon(object sender, EventArgs e) { 315 | var pictureBox = (PictureBox) sender; 316 | pictureBox.BackColor = Color.FromArgb(50, 255, 255, 255); 317 | } 318 | 319 | private void OnMouseLeaveIcon(object sender, EventArgs e) { 320 | var pictureBox = (PictureBox) sender; 321 | pictureBox.BackColor = Color.FromArgb(0, 255, 255, 255); 322 | } 323 | 324 | private void minimizePictureBox_Click(object sender, EventArgs e) { 325 | WindowState = FormWindowState.Minimized; 326 | } 327 | 328 | private void closePictureBox_Click(object sender, EventArgs e) { 329 | Environment.Exit(0); 330 | } 331 | } 332 | } 333 | -------------------------------------------------------------------------------- /UniversalGameLauncher/LauncherForm.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /UniversalGameLauncher/NativeWinAPI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace UniversalGameLauncher { 9 | internal static class NativeWinAPI { 10 | 11 | public const int WM_NCLBUTTONDOWN = 0xA1; 12 | public const int HT_CAPTION = 0x2; 13 | 14 | [System.Runtime.InteropServices.DllImport("user32.dll")] 15 | public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 16 | [System.Runtime.InteropServices.DllImport("user32.dll")] 17 | public static extern bool ReleaseCapture(); 18 | 19 | internal static readonly int GWL_EXSTYLE = -20; 20 | internal static readonly int WS_EX_COMPOSITED = 0x02000000; 21 | 22 | [DllImport("user32")] 23 | internal static extern int GetWindowLong(IntPtr hWnd, int nIndex); 24 | 25 | [DllImport("user32")] 26 | internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /UniversalGameLauncher/PatchNoteBlock.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Xml.Serialization; 7 | 8 | namespace UniversalGameLauncher { 9 | public class PatchNoteBlock { 10 | 11 | public string Title { get; set; } 12 | public string Text { get; set; } 13 | public string Link { get; set; } 14 | 15 | public PatchNoteBlock() { 16 | 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace UniversalGameLauncher { 8 | static class Program { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() { 14 | System.Windows.Forms.Application.EnableVisualStyles(); 15 | System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); 16 | System.Windows.Forms.Application.Run(new Application()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UniversalGameLauncher")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UniversalGameLauncher")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("fc42614e-0b3e-43f4-a3d7-c778dde64175")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace UniversalGameLauncher.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalGameLauncher.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// Looks up a localized resource of type System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap cancel_12x12 { 67 | get { 68 | object obj = ResourceManager.GetObject("cancel_12x12", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Looks up a localized resource of type System.Drawing.Bitmap. 75 | /// 76 | internal static System.Drawing.Bitmap FacebookLogo { 77 | get { 78 | object obj = ResourceManager.GetObject("FacebookLogo", resourceCulture); 79 | return ((System.Drawing.Bitmap)(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// Looks up a localized resource of type System.Drawing.Bitmap. 85 | /// 86 | internal static System.Drawing.Bitmap instagram { 87 | get { 88 | object obj = ResourceManager.GetObject("instagram", resourceCulture); 89 | return ((System.Drawing.Bitmap)(obj)); 90 | } 91 | } 92 | 93 | /// 94 | /// Looks up a localized resource of type System.Drawing.Bitmap. 95 | /// 96 | internal static System.Drawing.Bitmap minimize_12x12 { 97 | get { 98 | object obj = ResourceManager.GetObject("minimize_12x12", resourceCulture); 99 | return ((System.Drawing.Bitmap)(obj)); 100 | } 101 | } 102 | 103 | /// 104 | /// Looks up a localized resource of type System.Drawing.Bitmap. 105 | /// 106 | internal static System.Drawing.Bitmap TwitterLogo { 107 | get { 108 | object obj = ResourceManager.GetObject("TwitterLogo", resourceCulture); 109 | return ((System.Drawing.Bitmap)(obj)); 110 | } 111 | } 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\cancel_12x12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 123 | 124 | 125 | ..\Resources\FacebookLogo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 126 | 127 | 128 | ..\Resources\instagram.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 129 | 130 | 131 | ..\Resources\minimize_12x12.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 132 | 133 | 134 | ..\Resources\TwitterLogo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 135 | 136 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace UniversalGameLauncher.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("1.0.0.0")] 29 | public string VersionText { 30 | get { 31 | return ((string)(this["VersionText"])); 32 | } 33 | set { 34 | this["VersionText"] = value; 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 1.0.0.0 7 | 8 | 9 | -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/FacebookLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/FacebookLogo.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/Fantasy_Background_1028x643.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/Fantasy_Background_1028x643.jpg -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/Placeholder_Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/Placeholder_Logo.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/Placeholder_Logo_280x58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/Placeholder_Logo_280x58.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/Placeholder_Logo_363x75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/Placeholder_Logo_363x75.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/TwitterLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/TwitterLogo.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/cancel_12x12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/cancel_12x12.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/instagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/instagram.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/minimize_12x12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/minimize_12x12.png -------------------------------------------------------------------------------- /UniversalGameLauncher/Resources/playbuttontest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/Resources/playbuttontest.png -------------------------------------------------------------------------------- /UniversalGameLauncher/StringUtility.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace UniversalGameLauncher { 8 | class StringUtility { 9 | 10 | public static string FormatBytes(long byteCount) { 11 | string[] suf = { "B", "KB", "MB", "GB", "TB", "PB", "EB" }; //Longs run out around EB 12 | if (byteCount == 0) 13 | return "0" + suf[0]; 14 | long bytes = Math.Abs(byteCount); 15 | int place = Convert.ToInt32(Math.Floor(Math.Log(bytes, 1024))); 16 | double num = Math.Round(bytes / Math.Pow(1024, place), 1); 17 | return (Math.Sign(byteCount) * num).ToString() + suf[place]; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /UniversalGameLauncher/UniversalGameLauncher.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {FC42614E-0B3E-43F4-A3D7-C778DDE64175} 8 | WinExe 9 | UniversalGameLauncher 10 | UniversalGameLauncher 11 | v4.6.1 12 | 512 13 | true 14 | publish\ 15 | true 16 | Disk 17 | false 18 | Foreground 19 | 7 20 | Days 21 | false 22 | false 23 | true 24 | 0 25 | 1.0.0.%2a 26 | false 27 | false 28 | true 29 | 30 | 31 | 32 | 33 | AnyCPU 34 | true 35 | full 36 | false 37 | bin\Debug\ 38 | DEBUG;TRACE 39 | prompt 40 | 4 41 | 42 | 43 | AnyCPU 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | 51 | 52 | 53 | ..\packages\SharpZipLib.1.1.0\lib\net45\ICSharpCode.SharpZipLib.dll 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | Form 70 | 71 | 72 | 73 | 74 | Form 75 | 76 | 77 | LauncherForm.cs 78 | 79 | 80 | 81 | 82 | 83 | 84 | True 85 | True 86 | Resources.resx 87 | 88 | 89 | 90 | LauncherForm.cs 91 | 92 | 93 | ResXFileCodeGenerator 94 | Designer 95 | Resources.Designer.cs 96 | 97 | 98 | 99 | SettingsSingleFileGenerator 100 | Settings.Designer.cs 101 | 102 | 103 | True 104 | Settings.settings 105 | True 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | False 114 | Microsoft .NET Framework 4.6.1 %28x86 and x64%29 115 | true 116 | 117 | 118 | False 119 | .NET Framework 3.5 SP1 120 | false 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /UniversalGameLauncher/UniversalGameLauncher.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | publish\ 5 | 6 | 7 | 8 | 9 | 10 | en-US 11 | false 12 | 13 | -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Debug/UniversalGameLauncher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/bin/Debug/UniversalGameLauncher.exe -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Debug/UniversalGameLauncher.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 1.0.0.0 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Debug/UniversalGameLauncher.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/bin/Debug/UniversalGameLauncher.pdb -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Release/ICSharpCode.SharpZipLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/bin/Release/ICSharpCode.SharpZipLib.dll -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Release/ICSharpCode.SharpZipLib.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/bin/Release/ICSharpCode.SharpZipLib.pdb -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Release/UniversalGameLauncher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/bin/Release/UniversalGameLauncher.exe -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Release/UniversalGameLauncher.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 1.0.0.0 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /UniversalGameLauncher/bin/Release/UniversalGameLauncher.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/bin/Release/UniversalGameLauncher.pdb -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.Application.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/UniversalGameLauncher.Application.resources -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/UniversalGameLauncher.Properties.Resources.resources -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 30e6c33d6b4293c6be7305c3b6b6838c517a23c4 2 | -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Debug\UniversalGameLauncher.exe.config 2 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Debug\UniversalGameLauncher.exe 3 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Debug\UniversalGameLauncher.pdb 4 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.Application.resources 5 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.Properties.Resources.resources 6 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.csproj.GenerateResource.cache 7 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.csproj.CoreCompileInputs.cache 8 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.exe 9 | c:\users\teemu\onedrive\tiedostot\visual studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.pdb 10 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Debug\UniversalGameLauncher.csprojAssemblyReference.cache 11 | -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/UniversalGameLauncher.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/UniversalGameLauncher.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/UniversalGameLauncher.exe -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Debug/UniversalGameLauncher.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Debug/UniversalGameLauncher.pdb -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/DesignTimeResolveAssemblyReferences.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/TempPE/Properties.Resources.Designer.cs.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/TempPE/Properties.Resources.Designer.cs.dll -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.Application.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.Application.resources -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.Properties.Resources.resources: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.Properties.Resources.resources -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.csproj.CopyComplete: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.csproj.CopyComplete -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 59c5253abb0d37db6b347b33f44e79466b8dabe4 2 | -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Release\UniversalGameLauncher.exe.config 2 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Release\UniversalGameLauncher.exe 3 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Release\UniversalGameLauncher.pdb 4 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.Application.resources 5 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.Properties.Resources.resources 6 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csproj.GenerateResource.cache 7 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csproj.CoreCompileInputs.cache 8 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.exe 9 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.pdb 10 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Release\ICSharpCode.SharpZipLib.dll 11 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Release\ICSharpCode.SharpZipLib.pdb 12 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\bin\Release\ICSharpCode.SharpZipLib.xml 13 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csproj.CopyComplete 14 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csprojAssemblyReference.cache 15 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\bin\Release\UniversalGameLauncher.exe.config 16 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\bin\Release\UniversalGameLauncher.exe 17 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\bin\Release\UniversalGameLauncher.pdb 18 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\bin\Release\ICSharpCode.SharpZipLib.dll 19 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\bin\Release\ICSharpCode.SharpZipLib.pdb 20 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\bin\Release\ICSharpCode.SharpZipLib.xml 21 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csprojAssemblyReference.cache 22 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.Application.resources 23 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.Properties.Resources.resources 24 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csproj.GenerateResource.cache 25 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csproj.CoreCompileInputs.cache 26 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.csproj.CopyComplete 27 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.exe 28 | C:\Users\teemu\OneDrive\Tiedostot\Visual Studio 2017\Projects\UniversalGameLauncher\GameLauncherRepository\UniversalGameLauncher\UniversalGameLauncher\obj\Release\UniversalGameLauncher.pdb 29 | -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.csproj.GenerateResource.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.csproj.GenerateResource.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.csprojAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.csprojAssemblyReference.cache -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.exe -------------------------------------------------------------------------------- /UniversalGameLauncher/obj/Release/UniversalGameLauncher.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/UniversalGameLauncher/obj/Release/UniversalGameLauncher.pdb -------------------------------------------------------------------------------- /UniversalGameLauncher/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/SharpZipLib.1.1.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/packages/SharpZipLib.1.1.0/.signature.p7s -------------------------------------------------------------------------------- /packages/SharpZipLib.1.1.0/SharpZipLib.1.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/packages/SharpZipLib.1.1.0/SharpZipLib.1.1.0.nupkg -------------------------------------------------------------------------------- /packages/SharpZipLib.1.1.0/lib/net45/ICSharpCode.SharpZipLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/packages/SharpZipLib.1.1.0/lib/net45/ICSharpCode.SharpZipLib.dll -------------------------------------------------------------------------------- /packages/SharpZipLib.1.1.0/lib/net45/ICSharpCode.SharpZipLib.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/packages/SharpZipLib.1.1.0/lib/net45/ICSharpCode.SharpZipLib.pdb -------------------------------------------------------------------------------- /packages/SharpZipLib.1.1.0/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/packages/SharpZipLib.1.1.0/lib/netstandard2.0/ICSharpCode.SharpZipLib.dll -------------------------------------------------------------------------------- /packages/SharpZipLib.1.1.0/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teSill/UniversalGameLauncher/cd5f393a99c4d2b25a8e5eef82243905f732dc3c/packages/SharpZipLib.1.1.0/lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb --------------------------------------------------------------------------------