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