From fcea1f183829d2e1311ee40e4092d5be39694cae Mon Sep 17 00:00:00 2001 From: GeoB99 Date: Sun, 10 May 2026 16:35:43 +0200 Subject: [PATCH] [COTLMPSERVER] Initial implementation of the dedicated server command line parser --- COTLMP.sln | 10 ++++-- COTLMP/COTLMP.csproj | 1 + COTLMPServer/COTLMPServer.csproj | 6 ++++ COTLMPServer/DedicatedServer/Cli.cs | 30 ++++++++++++++++ .../DedicatedServer/DedicatedServer.csproj | 20 +++++++++++ .../DedicatedServer/DedicatedServerOptions.cs | 36 +++++++++++++++++++ COTLMPServer/DedicatedServer/Launcher.cs | 25 +++++++++++++ 7 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 COTLMPServer/DedicatedServer/Cli.cs create mode 100644 COTLMPServer/DedicatedServer/DedicatedServer.csproj create mode 100644 COTLMPServer/DedicatedServer/DedicatedServerOptions.cs create mode 100644 COTLMPServer/DedicatedServer/Launcher.cs diff --git a/COTLMP.sln b/COTLMP.sln index f545747..f8e12f0 100644 --- a/COTLMP.sln +++ b/COTLMP.sln @@ -1,12 +1,14 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.14.36310.24 +# Visual Studio Version 18 +VisualStudioVersion = 18.5.11723.231 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "COTLMP", "COTLMP\COTLMP.csproj", "{75CAB2D0-F823-DEFE-5EF0-A25BC117280F}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "COTLMPServer", "COTLMPServer\COTLMPServer.csproj", "{9476AA40-C94F-43C7-BF81-9427F4329E8F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DedicatedServer", "COTLMPServer\DedicatedServer\DedicatedServer.csproj", "{1D6C6C2A-38F4-4574-918D-24A33F1FB8C6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -21,6 +23,10 @@ Global {9476AA40-C94F-43C7-BF81-9427F4329E8F}.Debug|Any CPU.Build.0 = Debug|Any CPU {9476AA40-C94F-43C7-BF81-9427F4329E8F}.Release|Any CPU.ActiveCfg = Release|Any CPU {9476AA40-C94F-43C7-BF81-9427F4329E8F}.Release|Any CPU.Build.0 = Release|Any CPU + {1D6C6C2A-38F4-4574-918D-24A33F1FB8C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1D6C6C2A-38F4-4574-918D-24A33F1FB8C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1D6C6C2A-38F4-4574-918D-24A33F1FB8C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1D6C6C2A-38F4-4574-918D-24A33F1FB8C6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/COTLMP/COTLMP.csproj b/COTLMP/COTLMP.csproj index abfb6fa..3b2df87 100644 --- a/COTLMP/COTLMP.csproj +++ b/COTLMP/COTLMP.csproj @@ -13,6 +13,7 @@ https://nuget.samboy.dev/v3/index.json COTLMP + false diff --git a/COTLMPServer/COTLMPServer.csproj b/COTLMPServer/COTLMPServer.csproj index 939a2ed..1a91244 100644 --- a/COTLMPServer/COTLMPServer.csproj +++ b/COTLMPServer/COTLMPServer.csproj @@ -2,6 +2,12 @@ netstandard2.0 + false + false + + + + diff --git a/COTLMPServer/DedicatedServer/Cli.cs b/COTLMPServer/DedicatedServer/Cli.cs new file mode 100644 index 0000000..681a78c --- /dev/null +++ b/COTLMPServer/DedicatedServer/Cli.cs @@ -0,0 +1,30 @@ +/* + * PROJECT: Cult of the Lamb Multiplayer Mod + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: Core dedicated server CLI parser + * COPYRIGHT: Copyright 2026 GeoB99 + */ + +/* IMPORTS ********************************************************************/ + +using System; +using CommandLine; + +/* CLASSES & CODE *************************************************************/ + +namespace COTLMPServer.DedicatedServer +{ + internal static class Cli + { + public static void Initialize(string[] Arguments) + { + CommandLine.Parser.Default.ParseArguments(Arguments) + .WithParsed(Options => + { + // TODO + }); + } + } +} + +/* EOF */ diff --git a/COTLMPServer/DedicatedServer/DedicatedServer.csproj b/COTLMPServer/DedicatedServer/DedicatedServer.csproj new file mode 100644 index 0000000..a1fdb04 --- /dev/null +++ b/COTLMPServer/DedicatedServer/DedicatedServer.csproj @@ -0,0 +1,20 @@ + + + + Exe + net10.0 + CultOfTheLambServer + false + false + CultOfTheLambServer + + + + + + + + + + + diff --git a/COTLMPServer/DedicatedServer/DedicatedServerOptions.cs b/COTLMPServer/DedicatedServer/DedicatedServerOptions.cs new file mode 100644 index 0000000..5de9c68 --- /dev/null +++ b/COTLMPServer/DedicatedServer/DedicatedServerOptions.cs @@ -0,0 +1,36 @@ +/* + * PROJECT: Cult of the Lamb Multiplayer Mod + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: Dedicated server command line options + * COPYRIGHT: Copyright 2026 GeoB99 + */ + +/* IMPORTS ********************************************************************/ + +using System; +using CommandLine; + +/* CLASSES & CODE *************************************************************/ + +namespace COTLMPServer.DedicatedServer +{ + internal class DedicatedServerOptions + { + [Value(0, Required = true, HelpText = "Port number used to create and estabilish server connection.")] + public ushort PortNumber { get; set; } + + [Option('n', "Name", Required = true, HelpText = "The name of the server used to setup the dedicated server.")] + public string ServerName { get; set; } + + [Option('c', "Count", Required = true, HelpText = "Number of allowed players to join the server.")] + public uint MaxPlayers { get; set; } + + [Option('p', "Password", Required = false, HelpText = "(Optional) Setup a password to protect the server from players joining your server.")] + public string Password { get; set; } + + [Option('g', "Game", Required = false, HelpText = "(Optional) The game-mode to use when creating the server. Default = Standard.")] + public string GameMode { get; set; } + } +} + +/* EOF */ diff --git a/COTLMPServer/DedicatedServer/Launcher.cs b/COTLMPServer/DedicatedServer/Launcher.cs new file mode 100644 index 0000000..2c536d0 --- /dev/null +++ b/COTLMPServer/DedicatedServer/Launcher.cs @@ -0,0 +1,25 @@ +/* + * PROJECT: Cult of the Lamb Multiplayer Mod + * LICENSE: MIT (https://spdx.org/licenses/MIT) + * PURPOSE: Main entry point dedicated server launcher + * COPYRIGHT: Copyright 2026 GeoB99 + */ + +/* IMPORTS ********************************************************************/ + +using System; + +/* CLASSES & CODE *************************************************************/ + +namespace COTLMPServer.DedicatedServer +{ + internal static class Launcher + { + public static void Main(string[] args) + { + COTLMPServer.DedicatedServer.Cli.Initialize(args); + } + } +} + +/* EOF */