From 46d99f5baf3aa5bf7ba66d9f5d45b52a2c3efc0c Mon Sep 17 00:00:00 2001 From: Timerix Date: Sat, 27 Dec 2025 00:00:15 +0500 Subject: [PATCH] updated project files and created scripts --- .gitignore | 22 +++++-- UplinkLauncher/App.config | 6 -- UplinkLauncher/UplinkLauncher.cs | 52 ++++++++++----- UplinkLauncher/UplinkLauncher.csproj | 92 ++++++++------------------- UplinkLauncher/UplinkSE_logo.ico | Bin 112922 -> 0 bytes UplinkSE.sln | 31 ++++++--- UplinkSE/App.config | 6 -- UplinkSE/UplinkSE.cs | 50 +++++++-------- UplinkSE/UplinkSE.csproj | 79 +++++++---------------- UplinkSE/UplinkSE_logo.ico | Bin 112922 -> 0 bytes build.sh | 8 +++ install.sh | 10 +++ launch.sh | 6 ++ 13 files changed, 172 insertions(+), 190 deletions(-) delete mode 100644 UplinkLauncher/App.config delete mode 100644 UplinkLauncher/UplinkSE_logo.ico delete mode 100644 UplinkSE/App.config delete mode 100644 UplinkSE/UplinkSE_logo.ico create mode 100755 build.sh create mode 100755 install.sh create mode 100755 launch.sh diff --git a/.gitignore b/.gitignore index 66c9c19..47db3fd 100644 --- a/.gitignore +++ b/.gitignore @@ -11,16 +11,30 @@ x86/ [Aa][Rr][Mm]/ [Aa][Rr][Mm]64/ bld/ +.bin/ [Bb]in/ [Oo]bj/ +[Oo]ut/ +[Nn]uget/ + +# Temporary files [Ll]og/ [Ll]ogs/ +*.log +[Tt]emp/ +[Tt]mp/ +*.tmp +*.temp +.old*/ +old/ -# Visual Studio 2015/2017 cache/options directory +# IDE files .vs/ +.idea/ +.editorconfig +*.user +*.vcxproj.filters #/Bin64/ symlink [Bb]in64/ - -#Files -*.bat \ No newline at end of file +[Bb]in64 diff --git a/UplinkLauncher/App.config b/UplinkLauncher/App.config deleted file mode 100644 index 193aecc..0000000 --- a/UplinkLauncher/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/UplinkLauncher/UplinkLauncher.cs b/UplinkLauncher/UplinkLauncher.cs index c157183..75b135e 100644 --- a/UplinkLauncher/UplinkLauncher.cs +++ b/UplinkLauncher/UplinkLauncher.cs @@ -1,38 +1,58 @@ using System; using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using VRage.Plugins; using SpaceEngineers; using System.IO; -using System.Reflection; -using System.Threading; +using DTLib.Demystifier; +namespace UplinkLauncher; -namespace Lunar.UplinkLauncher +internal static class UplinkLauncher { - internal class UplinkLauncher + public static readonly string PluginsLocalDir = "Plugins\\Local"; + public static void Main(string[] args) { - public static int Main(string[] args) + try { - string exeLocation = Path.GetDirectoryName(Path.GetFullPath(Assembly.GetExecutingAssembly().Location)); + Console.WriteLine("Starting Uplink SE"); + Console.WriteLine(new string('-', Console.WindowWidth)); + + //MANUALLY ADDED, REMOVE LATER + string[] enabledPlugins = + { + "ModelSwap.dll", + "DontTellMeWhatToBuild.dll" + }; List plugins = new List(); - //MANUALLY ADDED, REMOVE LATER - plugins.Add("C:\\Users\\Lunar\\Games\\Steam\\steamapps\\common\\SpaceEngineers\\Bin64\\Plugins\\Local\\ModelSwap.dll"); - plugins.Add("C:\\Users\\Lunar\\Games\\Steam\\steamapps\\common\\SpaceEngineers\\Bin64\\Plugins\\Local\\DontTellMeWhatToBuild.dll"); + if (!Directory.Exists(PluginsLocalDir)) + Directory.CreateDirectory(PluginsLocalDir); + foreach (string plugin in enabledPlugins) + { + Console.WriteLine("Adding plugin: " + plugin); + plugins.Add(Path.GetFullPath(Path.Combine(PluginsLocalDir, plugin))); + } + MyPlugins.RegisterUserAssemblyFiles(plugins); - string appIdFile = Path.Combine(exeLocation, "steam_appid.txt"); + // why this file isn't created automatically? + // how game handles this without this magnificent launcher??? + string appIdFile = "steam_appid.txt"; if (!File.Exists(appIdFile)) { + Console.WriteLine($"Could not find '{appIdFile}', creating new file"); File.WriteAllText(appIdFile, "244850"); } + // finally start ze game!!! MyProgram.Main(args); - return 0; + } + catch (Exception e) + { + Console.WriteLine("Crashed with exception:"); + Console.WriteLine(e.ToStringDemystified()); + Console.WriteLine("\nPress enter to exit..."); + Console.ReadLine(); } } -} +} \ No newline at end of file diff --git a/UplinkLauncher/UplinkLauncher.csproj b/UplinkLauncher/UplinkLauncher.csproj index 86d6a92..ae9c8d6 100644 --- a/UplinkLauncher/UplinkLauncher.csproj +++ b/UplinkLauncher/UplinkLauncher.csproj @@ -1,77 +1,39 @@ - - - + + - Debug - AnyCPU - {2534AAEB-1F27-43F9-86C5-A1726DACB98D} - WinExe - Lunar.UplinkLauncher - UplinkLauncher - v4.8 - 512 - true - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - + Exe + net48 + Release;Debug + x64 x64 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - UplinkSE_logo.ico + latest + disable + enable + true + false + false + true + ..\UplinkSE_logo.ico + - + + + - - - - - - - - ..\..\SpaceEngineersLauncher\Bin64\0Harmony.dll + + false - - False - ..\Bin64\Sandbox.Game.dll + + false - - False - ..\Bin64\SpaceEngineers.exe + + false - - False - ..\Bin64\SpaceEngineers.Game.dll - - - False - ..\Bin64\Steamworks.NET.dll - - - - False - ..\Bin64\VRage.dll + + false - + \ No newline at end of file diff --git a/UplinkLauncher/UplinkSE_logo.ico b/UplinkLauncher/UplinkSE_logo.ico deleted file mode 100644 index 433f0a26cfa84078b3629040c2dd3a95c29662f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112922 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 diff --git a/UplinkSE.sln b/UplinkSE.sln index 01008b2..5761a6f 100644 --- a/UplinkSE.sln +++ b/UplinkSE.sln @@ -7,20 +7,31 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UplinkSE", "UplinkSE\Uplink EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UplinkLauncher", "UplinkLauncher\UplinkLauncher.csproj", "{2534AAEB-1F27-43F9-86C5-A1726DACB98D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionFolder", "SolutionFolder", "{F9D624C2-7460-4672-AA31-1E8887084041}" + ProjectSection(SolutionItems) = preProject + .gitignore = .gitignore + README.md = README.md + UplinkSE_logo.ico = UplinkSE_logo.ico + UplinkSE_logo.png = UplinkSE_logo.png + install.sh = install.sh + launch.sh = launch.sh + build.sh = build.sh + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Debug|x64 = Debug|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Release|Any CPU.Build.0 = Release|Any CPU - {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Release|Any CPU.Build.0 = Release|Any CPU + {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Release|x64.ActiveCfg = Release|x64 + {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Release|x64.Build.0 = Release|x64 + {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Debug|x64.ActiveCfg = Debug|x64 + {2534AAEB-1F27-43F9-86C5-A1726DACB98D}.Debug|x64.Build.0 = Debug|x64 + {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Release|x64.ActiveCfg = Release|x64 + {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Release|x64.Build.0 = Release|x64 + {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Debug|x64.ActiveCfg = Debug|x64 + {28965A64-C9EC-4168-82E2-AE66B5D8A29F}.Debug|x64.Build.0 = Debug|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/UplinkSE/App.config b/UplinkSE/App.config deleted file mode 100644 index 193aecc..0000000 --- a/UplinkSE/App.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/UplinkSE/UplinkSE.cs b/UplinkSE/UplinkSE.cs index 8f1f66f..3339129 100644 --- a/UplinkSE/UplinkSE.cs +++ b/UplinkSE/UplinkSE.cs @@ -1,33 +1,27 @@ -using HarmonyLib; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System; using VRage.Plugins; -namespace Lunar.Uplink +namespace UplinkSE; + +internal class UplinkSE : IHandleInputPlugin { - internal class UplinkSE : IHandleInputPlugin + public void Init(object gameInstance) { - public void Init(object gameInstance) - { - throw new NotImplementedException(); - } - - public void HandleInput() - { - throw new NotImplementedException(); - } - - public void Update() - { - throw new NotImplementedException(); - } - - public void Dispose() - { - throw new NotImplementedException(); - } + throw new NotImplementedException(); } -} + + public void HandleInput() + { + throw new NotImplementedException(); + } + + public void Update() + { + throw new NotImplementedException(); + } + + public void Dispose() + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/UplinkSE/UplinkSE.csproj b/UplinkSE/UplinkSE.csproj index acb99aa..8232793 100644 --- a/UplinkSE/UplinkSE.csproj +++ b/UplinkSE/UplinkSE.csproj @@ -1,68 +1,37 @@ - - - + + - Debug - AnyCPU - {28965A64-C9EC-4168-82E2-AE66B5D8A29F} Library - Lunar.Uplink - UplinkSE - v4.8 - 512 - true - true - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - + net48 + Release;Debug + x64 x64 - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - UplinkSE_logo.ico + latest + disable + enable + true + false + false + true + - + + - - - - - - - - ..\Bin64\0Harmony.dll + + false - - ..\Bin64\Sandbox.Game.dll + + false - - ..\Bin64\SpaceEngineers.exe + + false - - ..\Bin64\SpaceEngineers.Game.dll - - - ..\Bin64\VRage.dll + + false - + \ No newline at end of file diff --git a/UplinkSE/UplinkSE_logo.ico b/UplinkSE/UplinkSE_logo.ico deleted file mode 100644 index 433f0a26cfa84078b3629040c2dd3a95c29662f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112922 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 diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..0757936 --- /dev/null +++ b/build.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -eo pipefail + +BUILD_PATH="bin" +rm -rf "$BUILD_PATH" +dotnet publish "UplinkLauncher/UplinkLauncher.csproj" -o "$BUILD_PATH" \ + -c Debug --arch x64 +tree -h bin diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..c8ba714 --- /dev/null +++ b/install.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -eo pipefail + +# symlink to ???/SpaceEngineers/Bin64 +GAME_BIN64_PATH="Bin64" +BUILD_PATH="bin" + +for f in $(find "$BUILD_PATH" -type f); do + cp -v "$f" "$GAME_BIN64_PATH" +done diff --git a/launch.sh b/launch.sh new file mode 100755 index 0000000..fef2393 --- /dev/null +++ b/launch.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -eo pipefail + +GAME_BIN64_PATH="Bin64" +cd "$GAME_BIN64_PATH" +./UplinkLauncher.exe