diff --git a/Master/Nucleus.PkgMaker/App.config b/Master/Nucleus.PkgMaker/App.config
new file mode 100644
index 00000000..88fa4027
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Master/Nucleus.PkgMaker/Forms/BaseForm.cs b/Master/Nucleus.PkgMaker/Forms/BaseForm.cs
new file mode 100644
index 00000000..0b57a6ca
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Forms/BaseForm.cs
@@ -0,0 +1,81 @@
+using Nucleus.Gaming;
+using System;
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace Nucleus.PkgMaker
+{
+ ///
+ /// Form that all other forms inherit from. Has all
+ /// the default design parameters to have the Nucleus Coop look and feel
+ ///
+ public class BaseForm : Form, IDynamicSized
+ {
+ public BaseForm()
+ {
+ // Default DPI = 96 = 100%
+ // 1 pt = 1/72 inch
+ // 12pt = 1/6 inch
+ // 12 * 300% = 36
+ // 12 * 125% = 15
+ // 12 * 150% = 18
+ AutoScaleMode = AutoScaleMode.None;
+ BackColor = Color.FromArgb(50, 50, 50);
+ ForeColor = Color.White;
+ Margin = new Padding(4, 4, 4, 4);
+ Name = "BaseForm";
+ Text = "BaseForm";
+
+ // create it here, else the desgienr will show the default windows font
+ Font = new Font("Segoe UI", 12, GraphicsUnit.Point);
+
+ DPIManager.Register(this);
+ }
+ ~BaseForm()
+ {
+ DPIManager.Unregister(this);
+ }
+
+ public void UpdateSize(float scale)
+ {
+ if (IsDisposed)
+ {
+ DPIManager.Unregister(this);
+ return;
+ }
+
+ //SuspendLayout();
+
+ //Font = DPIManager.Font;
+
+ //Size defaultSize = DefaultSize;
+ //int wid = DPIManager.Adjust(defaultSize.Width, scale);
+ //int hei = DPIManager.Adjust(defaultSize.Height, scale);
+ ////Size = new Size(wid, hei);
+ //Console.WriteLine("Changed to {0}x{1}", wid, hei);
+
+ //ResumeLayout();
+ }
+
+ ///
+ /// Removes the flickering from constantly painting, if needed
+ ///
+ public void RemoveFlicker()
+ {
+ this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
+ }
+
+ ///
+ /// Position the form on the same monitor the user has put our app!
+ /// (by default, forms are open on the primary monitor, but if the user dragged
+ /// our form to another monitor the child forms still get created on the main monitor.
+ /// This is a small quality of life fix)
+ ///
+ /// The form to move
+ public void SetUpForm(Form f)
+ {
+ Point desktop = this.DesktopLocation;
+ f.SetDesktopLocation(desktop.X + 100, desktop.Y + 100);
+ }
+ }
+}
diff --git a/Master/Nucleus.PkgMaker/Forms/BaseForm.resx b/Master/Nucleus.PkgMaker/Forms/BaseForm.resx
new file mode 100644
index 00000000..091e3e42
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Forms/BaseForm.resx
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAEAQEAQAAEABABoCgAAFgAAACgAAABAAAAAgAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AABHTyYAFDnQAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAMzMzMzMzMzMzMzMzMiIiIiIiIiMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIiIiIiMz
+ MzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiACIiIiIjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIAAAAA
+ IiIiMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIAAAAAACIiIjMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIA
+ AAAAAAAiIiIiIiIiMzMzMzMzMzMzMzMiIiIiIiIiIAAAAAAAAAIiIiIiIiIiMzMzMzMzMzMzMiIiIiIi
+ IiIiAAAAAAAAIiIiIiIiIiIjMzMzMzMzMzMiIiIiICIiIiIgAAAAAAIiIiIiAiIiIiIzMzMzMzMzMiIi
+ IgAAAiIiIiIAAAAAIiIiIgAAACIiIiMzMzMzMzMyIiIAAAACIiIiIiAAAAIiIiIiIAAAACIiIjMzMzMz
+ MyIiIAAAAAIiICIiIgAAIiIiAiIgAAAAAiIiMzMzMzMzIiIAAAAAAiIgAiIiIAIiIiACIiAAAAAAIiIz
+ MzMzMzIiIgAAAAACIiAAIiIiIiIiAAIiIAAAAAAiIiMzMzMzMiIgAAAAAAIiIAACIiIiIiAAAiIgAAAA
+ AAIiIzMzMzMyIiAAAAAAAiIgAAAiIiIiAAACIiAAAAAAAiIjMzMzMzIiAAAAAAACIiAAAAIiIiAAAAIi
+ IAAAAAACIiMzMzMzMiIAAAAAAAIiIAAAIiIiIgAAAiIgAAAAAAIiIzMzMzMyIiAAAAAAAiIgAAIiIiIi
+ IAACIiAAAAAAAiIjMzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiMzMzMzMiIiIiIiIiIiIiIi
+ IiIiIiIiIiIiIiIiIiIiIzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiMzMzMiIiIiIiIiIi
+ IiIiIiIiIiIiIiIiIiIiIiIiIiIiMzMiIiIiIAAAAAIiIiIiERERESIiIiIgAAAAAiIiIiIzMiIiIiIi
+ AAAAAiIiIiEREREREiIiIiAAAAAiIiIiIiMiIiICIiIgAAACIiIiERERERERIiIiIAAAAiIiICIiIiIi
+ IAAiIiIAAAIiIiERERERERESIiIgAAAiIiIAAiIiIiIAAAIiIiAAIiIiEREREREREREiIiIAAiIiIAAA
+ IiIiIAAAACIiIgIiIiERERERERERERIiIiAiIiIAAAACIiIgAAAAAiIiIiIiIREREREREREREiIiIiIi
+ IAAAAAIiIiAAAAAAIiIiIiIhERERERERERESIiIiIiIAAAAAAiIiAAAAAAACIiIiIiERERERERERERIi
+ IiIiIAAAAAAAIiIAAAAAAAIiIiIiIREREREREREREiIiIiIgAAAAAAAiIiAAAAAAIiIiIiIhERERERER
+ ERESIiIiIiIAAAAAAiIiIAAAAAIiIiIiIiERERERERERERIiIiIiIiAAAAACIiIgAAAAIiIiAiIiIRER
+ EREREREREiIiICIiIgAAAAIiIiIAAAIiIiAAIiIiEREREREREREiIiIAAiIiIAAAIiIiIiAAIiIiAAAC
+ IiIhEREREREREiIiIAAAIiIiAAIiIiIiIgIiIiAAAAIiIiIREREREREiIiIgAAACIiIgIiIiMiIiIiIi
+ AAAAAiIiIiEREREREiIiIiAAAAAiIiIiIiMzIiIiIiAAAAACIiIiIhEREREiIiIiIAAAAAIiIiIiMzMy
+ IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi
+ MzMzMzIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiMzMzMzMiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi
+ IiIiIzMzMzMyIgAAAAAAAiIgAAIiIiIiIAACIiAAAAAAAiIjMzMzMzIiAAAAAAACIiAAACIiIiIAAAIi
+ IAAAAAACIiMzMzMzMiIAAAAAAAIiIAAAAiIiIAAAAiIgAAAAAAIiIzMzMzMyIiAAAAAAAiIgAAAiIiIi
+ AAACIiAAAAAAAiIjMzMzMzIiIAAAAAACIiAAAiIiIiIgAAIiIAAAAAACIiMzMzMzMiIiAAAAAAIiIAAi
+ IiIiIiIAAiIgAAAAACIiIzMzMzMzIiIAAAAAAiIgAiIiIAIiIiACIiAAAAAAIiIzMzMzMzMiIiAAAAAC
+ IiAiIiIAACIiIgIiIAAAAAIiIjMzMzMzMzIiIgAAAAIiIiIiIAAAAiIiIiIgAAAAIiIjMzMzMzMzMiIi
+ IgAAAiIiIiIAAAAAIiIiIgAAACIiIiMzMzMzMzMzIiIiIgAiIiIiIAAAAAACIiIiIgIiIiIiMzMzMzMz
+ MzMyIiIiIiIiIiIAAAAAAAAiIiIiIiIiIiMzMzMzMzMzMzMyIiIiIiIiIAAAAAAAAAIiIiIiIiIjMzMz
+ MzMzMzMzMzMyIiIiIiIiAAAAAAAAIiIiIiIiIzMzMzMzMzMzMzMzMzMzMzMyIiIgAAAAAAIiIiMzMzMz
+ MzMzMzMzMzMzMzMzMzMzMzMiIiIAAAAAIiIiMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzIiIiIiIiIiIiMz
+ MzMzMzMzMzMzMzMzMzMzMzMzMzMzMyIiIiIiIiIiMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMiIiIiIi
+ IiMzMzMzMzMzMzMzMzP///+AAf///////wAAf//////+AAA///////wAAD//////+AAAH/////AAAAAA
+ D///wAAAAAAD//+AAAAAAAH//wAAAAAAAP/+AAAAAAAAf/4AAAAAAAA//AAAAAAAAD/8AAAAAAAAP/gA
+ AAAAAAAf+AAAAAAAAB/4AAAAAAAAH/gAAAAAAAAf+AAAAAAAAB/4AAAAAAAAH/gAAAAAAAAf+AAAAAAA
+ AB/wAAAAAAAAD+AAAAAAAAADwAAAAAAAAAOAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAcAAAAAAAAAD4AAAAAAAAAfwAAAAAAAAD/gA
+ AAAAAAAf+AAAAAAAAB/4AAAAAAAAH/gAAAAAAAAf+AAAAAAAAB/4AAAAAAAAH/gAAAAAAAAf+AAAAAAA
+ AB/8AAAAAAAAP/wAAAAAAAA//gAAAAAAAH/+AAAAAAAAf/8AAAAAAAD//4AAAAAAAf//4AAAAAAH///4
+ AAAAAB/////4AAAf//////wAAD///////gAAf///////AAD///////+AAf///w==
+
+
+
\ No newline at end of file
diff --git a/Master/Nucleus.PkgMaker/Forms/MainForm.Designer.cs b/Master/Nucleus.PkgMaker/Forms/MainForm.Designer.cs
new file mode 100644
index 00000000..237aef89
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Forms/MainForm.Designer.cs
@@ -0,0 +1,39 @@
+namespace Nucleus.PkgMaker
+{
+ partial class MainForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Text = "Form1";
+ }
+
+ #endregion
+ }
+}
+
diff --git a/Master/Nucleus.PkgMaker/Forms/MainForm.cs b/Master/Nucleus.PkgMaker/Forms/MainForm.cs
new file mode 100644
index 00000000..b1a7142c
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Forms/MainForm.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Nucleus.PkgMaker
+{
+ public partial class MainForm : BaseForm
+ {
+ public MainForm()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Master/Nucleus.PkgMaker/Nucleus.PkgMaker.csproj b/Master/Nucleus.PkgMaker/Nucleus.PkgMaker.csproj
new file mode 100644
index 00000000..664850fb
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Nucleus.PkgMaker.csproj
@@ -0,0 +1,91 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}
+ WinExe
+ Nucleus.PkgMaker
+ Nucleus.PkgMaker
+ v4.5.2
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+ BaseForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+ {223dbdae-e362-452c-9455-f518d002b154}
+ Nucleus.Gaming
+
+
+
+
\ No newline at end of file
diff --git a/Master/Nucleus.PkgMaker/Program.cs b/Master/Nucleus.PkgMaker/Program.cs
new file mode 100644
index 00000000..60f458cf
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Nucleus.PkgMaker
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+ }
+}
diff --git a/Master/Nucleus.PkgMaker/Properties/AssemblyInfo.cs b/Master/Nucleus.PkgMaker/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..ca2e08b9
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Nucleus.PkgMaker")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Nucleus.PkgMaker")]
+[assembly: AssemblyCopyright("Copyright © 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5d1254b0-64be-447c-bf97-d899f8540a6d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Master/Nucleus.PkgMaker/Properties/Resources.Designer.cs b/Master/Nucleus.PkgMaker/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..2a194120
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Nucleus.PkgMaker.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Nucleus.PkgMaker.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Master/Nucleus.PkgMaker/Properties/Resources.resx b/Master/Nucleus.PkgMaker/Properties/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Master/Nucleus.PkgMaker/Properties/Settings.Designer.cs b/Master/Nucleus.PkgMaker/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..6729eb9c
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Nucleus.PkgMaker.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Master/Nucleus.PkgMaker/Properties/Settings.settings b/Master/Nucleus.PkgMaker/Properties/Settings.settings
new file mode 100644
index 00000000..39645652
--- /dev/null
+++ b/Master/Nucleus.PkgMaker/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Master/NucleusCoop.sln b/Master/NucleusCoop.sln
index c80b0b9f..5821f799 100644
--- a/Master/NucleusCoop.sln
+++ b/Master/NucleusCoop.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio 15
+VisualStudioVersion = 15.0.26430.16
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nucleus.Gaming", "NucleusGaming\Nucleus.Gaming.csproj", "{223DBDAE-E362-452C-9455-F518D002B154}"
EndProject
@@ -96,6 +96,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TypescriptSyntaxPaste", "Ty
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TypescriptSyntaxPaste.Library", "..\Submodules\TypescriptSyntaxPaste\TypescriptSyntaxPasteLibrary\TypescriptSyntaxPaste.Library.csproj", "{D347E492-0977-4855-BCE2-EA0211E47091}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nucleus.PkgMaker", "Nucleus.PkgMaker\Nucleus.PkgMaker.csproj", "{5D1254B0-64BE-447C-BF97-D899F8540A6D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -932,6 +934,46 @@ Global
{D347E492-0977-4855-BCE2-EA0211E47091}.TestDebug|x64.Build.0 = Debug|Any CPU
{D347E492-0977-4855-BCE2-EA0211E47091}.TestDebug|x86.ActiveCfg = Debug|Any CPU
{D347E492-0977-4855-BCE2-EA0211E47091}.TestDebug|x86.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|Win32.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|x64.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Debug|x86.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|Win32.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|Win32.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|x64.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|x64.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|x86.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.Release|x86.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|Any CPU.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|Any CPU.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|Mixed Platforms.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|Win32.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|Win32.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|x64.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|x64.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|x86.ActiveCfg = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.SaveEdit Packaging|x86.Build.0 = Release|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|Any CPU.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|Win32.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|Win32.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|x64.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|x64.Build.0 = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|x86.ActiveCfg = Debug|Any CPU
+ {5D1254B0-64BE-447C-BF97-D899F8540A6D}.TestDebug|x86.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Master/NucleusGaming/BuildEngine/BuildProgram.cs b/Master/NucleusGaming/BuildEngine/BuildProgram.cs
deleted file mode 100644
index 93334ac5..00000000
--- a/Master/NucleusGaming/BuildEngine/BuildProgram.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text;
-
-namespace Nucleus.Gaming.Build
-{
- public class BuildProgram
- {
- private DirectoryInfo startLocation;
- private FileInfo solutionFile;
- private DirectoryInfo solutionRoot;
- public BuildProgram()
- {
- startLocation = new DirectoryInfo(AssemblyUtil.GetStartFolder());
- }
-
- public FileInfo GetSolutionFile()
- {
- if (solutionFile == null)
- {
- solutionFile = RecursiveGetSolutionFile(startLocation);
- }
- return solutionFile;
- }
-
- public DirectoryInfo GetStartLocation()
- {
- return startLocation;
- }
-
- public DirectoryInfo GetSolutionRoot()
- {
- if (solutionRoot == null)
- {
- GetSolutionFile();
- if (solutionFile != null)
- {
- solutionRoot = new DirectoryInfo(Path.GetDirectoryName(solutionFile.FullName));
- }
- }
- return solutionRoot;
- }
-
- private FileInfo RecursiveGetSolutionFile(DirectoryInfo dir)
- {
- FileInfo[] files = dir.GetFiles("*.sln");
- if (files.Length > 0)
- {
- return files.First();
- }
-
- if (dir.Parent == dir.Parent.Root)
- {
- return null;
- }
- return RecursiveGetSolutionFile(dir.Parent);
- }
- }
-}
diff --git a/Master/NucleusGaming/Controls/ControlListBox.cs b/Master/NucleusGaming/Controls/ControlListBox.cs
index 1320b934..a9f72738 100644
--- a/Master/NucleusGaming/Controls/ControlListBox.cs
+++ b/Master/NucleusGaming/Controls/ControlListBox.cs
@@ -29,12 +29,22 @@ public ControlListBox()
{
//this.AutoScroll = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-
this.AutoScroll = false;
- this.HorizontalScroll.Visible = false;
- this.HorizontalScroll.Enabled = false;
- this.VerticalScroll.Visible = false;
+ }
+ public override bool AutoScroll
+ {
+ get => base.AutoScroll;
+ set
+ {
+ base.AutoScroll = value;
+ if (!value)
+ {
+ this.HorizontalScroll.Visible = false;
+ this.HorizontalScroll.Enabled = false;
+ this.VerticalScroll.Visible = false;
+ }
+ }
}
protected override void OnSizeChanged(EventArgs e)
@@ -52,7 +62,7 @@ public void UpdateSizes()
}
updatingSize = true;
-
+
totalHeight = 0;
bool isVerticalVisible = VerticalScroll.Visible;
int v = isVerticalVisible ? (1 + SystemInformation.VerticalScrollBarWidth) : 0;
@@ -110,7 +120,7 @@ protected override void OnControlAdded(ControlEventArgs e)
}
}
-
+
private void C_ControlAdded(object sender, ControlEventArgs e)
{
@@ -138,7 +148,7 @@ private void c_MouseEnter(object sender, EventArgs e)
if (parent != SelectedControl && parent is IRadioControl)
{
- IRadioControl high = (IRadioControl) parent;
+ IRadioControl high = (IRadioControl)parent;
high.UserOver();
}
}
diff --git a/Master/NucleusGaming/Managers/GameManager.cs b/Master/NucleusGaming/Coop/GameManager.cs
similarity index 100%
rename from Master/NucleusGaming/Managers/GameManager.cs
rename to Master/NucleusGaming/Coop/GameManager.cs
diff --git a/Master/NucleusGaming/Coop/GameOption.cs b/Master/NucleusGaming/Coop/GameOption.cs
index 33e00222..b5df78ce 100644
--- a/Master/NucleusGaming/Coop/GameOption.cs
+++ b/Master/NucleusGaming/Coop/GameOption.cs
@@ -4,7 +4,7 @@
using System.Linq;
using System.Text;
-namespace Nucleus.Gaming
+namespace Nucleus.Gaming.Coop
{
///
/// A custom game option that can be modified by the user
diff --git a/Master/NucleusGaming/Coop/Generic/GenericGameHandler.cs b/Master/NucleusGaming/Coop/Generic/GenericGameHandler.cs
index b8e80a41..5ea042ed 100644
--- a/Master/NucleusGaming/Coop/Generic/GenericGameHandler.cs
+++ b/Master/NucleusGaming/Coop/Generic/GenericGameHandler.cs
@@ -20,6 +20,7 @@
using WindowScrape.Types;
using Nucleus.Gaming.Coop;
using System.Reflection;
+using Nucleus.Gaming.Tools.GameStarter;
namespace Nucleus.Gaming
{
diff --git a/Master/NucleusGaming/Coop/Javascript/JSUserInputControl.cs b/Master/NucleusGaming/Coop/Generic/JSUserInputControl.cs
similarity index 99%
rename from Master/NucleusGaming/Coop/Javascript/JSUserInputControl.cs
rename to Master/NucleusGaming/Coop/Generic/JSUserInputControl.cs
index 1e062bf8..a5fe60bb 100644
--- a/Master/NucleusGaming/Coop/Javascript/JSUserInputControl.cs
+++ b/Master/NucleusGaming/Coop/Generic/JSUserInputControl.cs
@@ -65,6 +65,8 @@ public override void Initialize(UserGameInfo game, GameProfile profile)
{
ControlListBox list = new ControlListBox();
list.Size = this.Size;
+ list.AutoScroll = true;
+
this.Controls.Add(list);
collection = option.List;
diff --git a/Master/NucleusGaming/Player/PlayerInfo.cs b/Master/NucleusGaming/Coop/PlayerInfo.cs
similarity index 98%
rename from Master/NucleusGaming/Player/PlayerInfo.cs
rename to Master/NucleusGaming/Coop/PlayerInfo.cs
index cea7c96d..fc0dfec1 100644
--- a/Master/NucleusGaming/Player/PlayerInfo.cs
+++ b/Master/NucleusGaming/Coop/PlayerInfo.cs
@@ -7,7 +7,7 @@
using SlimDX.DirectInput;
using Nucleus.Gaming.Coop;
-namespace Nucleus.Gaming
+namespace Nucleus.Gaming.Coop
{
public class PlayerInfo
{
diff --git a/Master/NucleusGaming/Globals.cs b/Master/NucleusGaming/Globals.cs
index d865f7f6..c98baf30 100644
--- a/Master/NucleusGaming/Globals.cs
+++ b/Master/NucleusGaming/Globals.cs
@@ -8,7 +8,5 @@ namespace Nucleus.Gaming
public static class Globals
{
public const double Version = 8;
-
-
}
}
diff --git a/Master/NucleusGaming/Nucleus.Gaming.csproj b/Master/NucleusGaming/Nucleus.Gaming.csproj
index f5ff039f..81de39d2 100644
--- a/Master/NucleusGaming/Nucleus.Gaming.csproj
+++ b/Master/NucleusGaming/Nucleus.Gaming.csproj
@@ -76,7 +76,6 @@
-
Component
@@ -142,7 +141,7 @@
-
+
UserControl
@@ -184,7 +183,7 @@
-
+
UserControl
@@ -208,12 +207,12 @@
UserControl
-
+
-
+
@@ -231,10 +230,9 @@
-
+
-
@@ -260,7 +258,7 @@
-
+
diff --git a/Master/NucleusGaming/Util/StartGameUtil.cs b/Master/NucleusGaming/Tools/GameStarter/StartGameUtil.cs
similarity index 99%
rename from Master/NucleusGaming/Util/StartGameUtil.cs
rename to Master/NucleusGaming/Tools/GameStarter/StartGameUtil.cs
index 3d10f488..3e2c66ef 100644
--- a/Master/NucleusGaming/Util/StartGameUtil.cs
+++ b/Master/NucleusGaming/Tools/GameStarter/StartGameUtil.cs
@@ -6,7 +6,7 @@
using System.Reflection;
using System.Text;
-namespace Nucleus
+namespace Nucleus.Gaming.Tools.GameStarter
{
///
/// Util class for executing and reading output from the Nucleus.Coop.StartGame application
diff --git a/Master/NucleusGaming/Util/CmdUtil.cs b/Master/NucleusGaming/Util/CmdUtil.cs
index 4e328135..d112f5a7 100644
--- a/Master/NucleusGaming/Util/CmdUtil.cs
+++ b/Master/NucleusGaming/Util/CmdUtil.cs
@@ -5,7 +5,7 @@
using System.Linq;
using System.Text;
-namespace Nucleus
+namespace Nucleus.Gaming
{
public static class CmdUtil
{
diff --git a/Master/NucleusGaming/Util/ConsoleU.cs b/Master/NucleusGaming/Util/ConsoleU.cs
index 25242a09..ad7b03a9 100644
--- a/Master/NucleusGaming/Util/ConsoleU.cs
+++ b/Master/NucleusGaming/Util/ConsoleU.cs
@@ -3,7 +3,7 @@
using System.Linq;
using System.Text;
-namespace System
+namespace Nucleus.Gaming
{
public static class ConsoleU
{
diff --git a/Master/NucleusGaming/Util/Extensions/DirectoryInfoExtensions.cs b/Master/NucleusGaming/Util/Extensions/DirectoryInfoExtensions.cs
index f5745854..8026bb87 100644
--- a/Master/NucleusGaming/Util/Extensions/DirectoryInfoExtensions.cs
+++ b/Master/NucleusGaming/Util/Extensions/DirectoryInfoExtensions.cs
@@ -4,7 +4,7 @@
using System.Linq;
using System.Text;
-namespace Nucleus
+namespace Nucleus.Gaming
{
public static class DirectoryInfoExtensions
{
diff --git a/Master/NucleusGaming/New/Utils/RectangleUtil.cs b/Master/NucleusGaming/Util/RectangleUtil.cs
similarity index 100%
rename from Master/NucleusGaming/New/Utils/RectangleUtil.cs
rename to Master/NucleusGaming/Util/RectangleUtil.cs
diff --git a/Master/NucleusGaming/Util/ViewportUtil.cs b/Master/NucleusGaming/Util/ViewportUtil.cs
deleted file mode 100644
index 552a486f..00000000
--- a/Master/NucleusGaming/Util/ViewportUtil.cs
+++ /dev/null
@@ -1,184 +0,0 @@
-//using System;
-//using System.Collections.Generic;
-//using System.Drawing;
-//using System.Linq;
-//using System.Text;
-//using System.Windows.Forms;
-
-//namespace Nucleus.Gaming
-//{
-// public static class ViewportUtil
-// {
-// public static readonly Dictionary Complementar = new Dictionary()
-// {
-// {ScreenType.HorizontalTop, ScreenType.HorizontalBottom},
-// {ScreenType.HorizontalBottom, ScreenType.HorizontalTop},
-// {ScreenType.VerticalLeft, ScreenType.VerticalRight},
-// {ScreenType.VerticalRight, ScreenType.VerticalLeft}
-// };
-
-// ///
-// /// Method useful for games that run 2 players in 1 instance
-// ///
-// public static List GetPlayerDuets(List players)
-// {
-// List newPlayers = new List();
-// List analyzed = new List();
-
-// Screen[] allScreens = Screen.AllScreens;
-
-
-// for (int i = 0; i < players.Count; i++)
-// {
-// PlayerInfo p = players[i];
-// if (analyzed.Contains (i))
-// {
-// continue;
-// }
-// analyzed.Add(i);
-
-// Screen s = allScreens[p.ScreenIndex];
-
-// int width = s.Bounds.Width;
-// int height = s.Bounds.Height;
-// int x = s.Bounds.X;
-// int y = s.Bounds.Y;
-
-// PlayerInfo other = null;
-
-// bool multiMonitor = false;
-
-// for (int j = 1; j < players.Count; j++)
-// {
-// PlayerInfo a = players[j];
-// if (analyzed.Contains(j))
-// {
-// continue;
-// }
-
-// ScreenType comp = Complementar[a.ScreenType];
-// if (a.ScreenType == comp)
-// {
-// other = a;
-// break;
-// }
-// else if (p.ScreenType == ScreenType.Fullscreen &&
-// a.ScreenType == ScreenType.Fullscreen)
-// {
-// // check if they're next to each other
-// if (p.ScreenIndex == a.ScreenIndex -1 ||
-// p.ScreenIndex == a.ScreenIndex + 1)// abs should work better but whateva
-// {
-// other = a;
-// multiMonitor = true;
-
-// s = allScreens[other.ScreenIndex];
-// width += s.Bounds.Width;
-// height += s.Bounds.Height;
-// x = Math.Min(x, s.Bounds.X);
-// y = Math.Min(y, s.Bounds.Y);
-// break;
-// }
-// }
-
-// }
-
-// DuetPlayerInfo duet = new DuetPlayerInfo();
-// duet.PlayerInfo1 = p;
-// duet.IsMultiMonitor = multiMonitor;
-// newPlayers.Add(duet);
-// duet.TotalBounds = new Rectangle(x, y, width, height);
-// if (other != null)
-// {
-// duet.PlayerInfo2 = other;
-// analyzed.Add(players.IndexOf(other));
-// }
-// }
-
-// return newPlayers;
-// }
-
-
-// public static void GetPlayerViewport(PlayerInfo player, int titleHeight, out int width, out int height, out Point location)
-// {
-// width = -1;
-// height = -1;
-// location = new Point();
-
-// Screen[] all = Screen.AllScreens;
-// Screen first = all[0];
-// Rectangle fbounds = first.Bounds;
-
-// Screen screen = all[player.ScreenIndex];
-// Rectangle bounds = screen.Bounds;
-
-// switch (player.ScreenType)
-// {
-// case ScreenType.Fullscreen:
-// {
-// width = bounds.Width;
-// height = bounds.Height;
-// location = new Point(screen.Bounds.X, screen.Bounds.Y);
-// }
-// break;
-// case ScreenType.HorizontalTop:
-// {
-// width = screen.Bounds.Width;
-// height = (screen.Bounds.Height / 2) - titleHeight;
-// location = new Point(screen.Bounds.X, screen.Bounds.Y);
-// }
-// break;
-// case ScreenType.HorizontalBottom:
-// {
-// width = screen.Bounds.Width;
-// height = (screen.Bounds.Height / 2) - titleHeight;
-// location = new Point(screen.Bounds.X, screen.Bounds.Y + (screen.Bounds.Height / 2));
-// }
-// break;
-// case ScreenType.VerticalLeft:
-// {
-// width = screen.Bounds.Width / 2;
-// height = screen.Bounds.Height;
-// location = new Point(screen.Bounds.X, screen.Bounds.Y);
-// }
-// break;
-// case ScreenType.VerticalRight:
-// {
-// width = screen.Bounds.Width / 2;
-// height = screen.Bounds.Height;
-// location = new Point(screen.Bounds.X + (screen.Bounds.Width / 2), screen.Bounds.Y);
-// }
-// break;
-// case ScreenType.TopLeft:
-// {
-// width = screen.Bounds.Width / 2;
-// height = screen.Bounds.Height / 2;
-// location = new Point(screen.Bounds.X, screen.Bounds.Y);
-// }
-// break;
-// case ScreenType.TopRight:
-// {
-// width = screen.Bounds.Width / 2;
-// height = screen.Bounds.Height / 2;
-// location = new Point(screen.Bounds.X + width, screen.Bounds.Y);
-// }
-// break;
-// case ScreenType.BottomLeft:
-// {
-// width = screen.Bounds.Width / 2;
-// height = screen.Bounds.Height / 2;
-// location = new Point(screen.Bounds.X, screen.Bounds.Y + height);
-// }
-// break;
-// case ScreenType.BottomRight:
-// {
-// width = screen.Bounds.Width / 2;
-// height = screen.Bounds.Height / 2;
-// location = new Point(screen.Bounds.X + width, screen.Bounds.Y + height);
-// }
-// break;
-// }
-
-// }
-// }
-//}
diff --git a/Master/StartGame/Program.cs b/Master/StartGame/Program.cs
index cb8c15dc..5e43a18e 100644
--- a/Master/StartGame/Program.cs
+++ b/Master/StartGame/Program.cs
@@ -1,4 +1,5 @@
using Nucleus;
+using Nucleus.Gaming;
using Nucleus.Gaming.Windows;
using Nucleus.Interop.User32;
using System;
diff --git a/README.md b/README.md
index 81d059ac..5d284dd2 100644
--- a/README.md
+++ b/README.md
@@ -3,27 +3,10 @@ Nucles Co-Op is a tool for Windows that allows split-screen play on many games t
Its purspose is to make it as easy as possible for the average user to play games locally.
Support its development by helping on my Patreon! https://www.patreon.com/distro
-Subscribe to our subreddit: https://www.reddit.com/r/nucleuscoop/
-
-
-Currently Supported Games:
-
-- Borderlands 1
-- Borderlands 2
-- Borderlands: The Pre Sequel
-- Don't Starve Together
-- Left 4 Dead 2
+Subscribe to our subreddit: https://www.reddit.com/r/nucleuscoop/
-Working but not with all features:
-- Borderlands
- ALPHA 8: Everything works if you're using gamepads, but not with a keyboard + mouse player
-
-So close but not there yet:
-
-- Saints Row 3
- Working: All instances open correctly using SmartSteamEmu, can control all instances freely
- Issue: Can't find the game on LAN. If from the Shift + Tab menu, the game says the session is no longer available.
+Join our Discord: https://discord.gg/jrbPvKW
# How does it work?
@@ -40,35 +23,13 @@ When the user hits play:
- Now we keep track of the processes, looking for the launcher and the actual game window, so we can position it correctly on the screen.
-
-Next on the List:
-
-- Left 4 Dead 1
-- Portal 2
-- Call of Duty: Black Ops
-- Call of Duty: Modern Warfare 2
-- Saints Row 3
-- Saints Row 4
-- Team Fortress 2 (support for 64 players on 1 machine FTW)
-- Unlimited Power mode (multiple keyboards + mouses + gamepads)
-
-Games I want to add but I don't own:
-
-- Call of Duty: World At War
-- Call of Duty: Modern Warfare 3
-
-
-A ton of games will be supported thank for the godsend tool called SmartSteamEmu, developed by syahmixp, grabbed from http://cs.rin.ru/forum/viewtopic.php?f=10&t=62935
-Awesome application that emulates Steam and even enables LAN connections, so we can play everything easily!
-
-
# How to help on the development?
If you want to truly code, here follows a somewhat summup of what you need to begin developing:
+TODO: finish up this section :/
For the application:
- Visual Studio 2015 or 2017 (Community works fine)
For the games's Javascript files
- Visual Studio Code
- - Node.js (not yet)
- ProcessExplorer
\ No newline at end of file