From 8942c9bd7969d484aa0518028657a30cc337a4b5 Mon Sep 17 00:00:00 2001 From: starfish <50672801+starfi5h@users.noreply.github.com> Date: Sat, 6 Apr 2024 01:26:00 +0800 Subject: [PATCH] Add command /dev --- NebulaWorld/Chat/ChatCommandRegistry.cs | 1 + .../Chat/Commands/DevCommandHandler.cs | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 NebulaWorld/Chat/Commands/DevCommandHandler.cs diff --git a/NebulaWorld/Chat/ChatCommandRegistry.cs b/NebulaWorld/Chat/ChatCommandRegistry.cs index d6d2ed9e3..c255fd375 100644 --- a/NebulaWorld/Chat/ChatCommandRegistry.cs +++ b/NebulaWorld/Chat/ChatCommandRegistry.cs @@ -28,6 +28,7 @@ static ChatCommandRegistry() RegisterCommand("reconnect", new ReconnectCommandHandler(), "r"); RegisterCommand("server", new ServerCommandHandler()); RegisterCommand("playerdata", new PlayerDataCommandHandler()); + RegisterCommand("dev", new DevCommandHandler()); } private static void RegisterCommand(string commandName, IChatCommandHandler commandHandlerHandler, params string[] aliases) diff --git a/NebulaWorld/Chat/Commands/DevCommandHandler.cs b/NebulaWorld/Chat/Commands/DevCommandHandler.cs new file mode 100644 index 000000000..fa930a289 --- /dev/null +++ b/NebulaWorld/Chat/Commands/DevCommandHandler.cs @@ -0,0 +1,57 @@ +#region + +using NebulaWorld.MonoBehaviours.Local.Chat; +using NebulaModel.DataStructures.Chat; +using HarmonyLib; + +#endregion + +namespace NebulaWorld.Chat.Commands; + +public class DevCommandHandler : IChatCommandHandler +{ + public void Execute(ChatWindow window, string[] parameters) + { + if (parameters.Length < 1) + { + throw new ChatCommandUsageException("Not enough arguments!".Translate()); + } + + switch (parameters[0]) + { + case "sandbox": + { + GameMain.sandboxToolsEnabled = !GameMain.sandboxToolsEnabled; + GameMain.data.gameDesc.isSandboxMode = GameMain.sandboxToolsEnabled; + window.SendLocalChatMessage("SandboxTool enable: " + GameMain.sandboxToolsEnabled, ChatMessageType.CommandOutputMessage); + return; + } + case "load-cfg": + { + window.SendLocalChatMessage("Overwrite settings from nebulaGameDescSettings.cfg", ChatMessageType.CommandOutputMessage); + AccessTools.Method(AccessTools.TypeByName("NebulaPatcher.NebulaPlugin"), "SetGameDescFromConfigFile").Invoke(null, [GameMain.data.gameDesc]); + return; + } + + case "self-destruct": + { + GameMain.mainPlayer.Kill(); + return; + } + + default: + window.SendLocalChatMessage("Unknown command: " + parameters[0], ChatMessageType.CommandOutputMessage); + return; + } + } + + public string GetDescription() + { + return "Developer/Sandbox tool commands".Translate(); + } + + public string[] GetUsage() + { + return ["sandbox", "load-cfg", "self-destruct"]; + } +}