diff options
Diffstat (limited to 'ShiftOS_TheReturn/Commands.cs')
| -rw-r--r-- | ShiftOS_TheReturn/Commands.cs | 299 |
1 files changed, 198 insertions, 101 deletions
diff --git a/ShiftOS_TheReturn/Commands.cs b/ShiftOS_TheReturn/Commands.cs index 9822c1c..70486bb 100644 --- a/ShiftOS_TheReturn/Commands.cs +++ b/ShiftOS_TheReturn/Commands.cs @@ -42,11 +42,14 @@ using Discoursistency.Base.Models.Authentication; using ShiftOS.Engine.Scripting; using ShiftOS.Objects.ShiftFS; -namespace ShiftOS.Engine { +namespace ShiftOS.Engine +{ [Namespace("virus")] - public class VirusTestCommands { + public class VirusTestCommands + { [Command("infect")] - public static void InfectFileWithMUDVirus(Dictionary<string, object> args) { + public static void InfectFileWithMUDVirus(Dictionary<string, object> args) + { string signature = ""; if (args.ContainsKey("signature")) @@ -56,15 +59,18 @@ namespace ShiftOS.Engine { string script = ""; - Action<string> scriptFound = new Action<string>((s) => { + Action<string> scriptFound = new Action<string>((s) => + { script = s; Virus v = new LuaVirus(s, 1); VirusEngine.Add(v); VirusEngine.Infect($"lua.{v.Signature}.1"); }); - ServerManager.MessageReceived += (srv) => { - if (srv.Name == "mud_virus") { + ServerManager.MessageReceived += (srv) => + { + if (srv.Name == "mud_virus") + { scriptFound?.Invoke(srv.Contents); scriptFound = null; } @@ -77,9 +83,11 @@ namespace ShiftOS.Engine { [RequiresUpgrade("mud_fundamentals")] [Namespace("mud")] - public static class MUDCommands { + public static class MUDCommands + { [Command("addvirus")] - public static void Virus_AddToDatabase(Dictionary<string, object> args) { + public static void Virus_AddToDatabase(Dictionary<string, object> args) + { string file = ""; int threatLevel = 0; @@ -100,23 +108,31 @@ namespace ShiftOS.Engine { [Command("status")] - public static bool Status() { + public static bool Status() + { ServerManager.PrintDiagnostics(); return true; } [Command("connect")] - public static bool Connect(Dictionary<string, object> args) { - try { + public static bool Connect(Dictionary<string, object> args) + { + try + { string ip = (args.ContainsKey("addr") == true) ? args["addr"] as string : "michaeltheshifter.me"; int port = (args.ContainsKey("port") == true) ? Convert.ToInt32(args["port"] as string) : 13370; - try { + try + { ServerManager.Initiate(ip, port); - } catch (Exception ex) { + } + catch (Exception ex) + { Console.WriteLine("{ERROR}: " + ex.Message); } return true; - } catch (Exception ex) { + } + catch (Exception ex) + { Console.WriteLine("Error running script:" + ex); return false; } @@ -127,34 +143,39 @@ namespace ShiftOS.Engine { [RequiresUpgrade("mud_fundamentals")] [Namespace("chat")] - public static class ChatCommands { + public static class ChatCommands + { [RequiresArgument("id")] [RequiresArgument("name")] [RequiresArgument("topic")] [Command("create")] - public static bool CreateChat(Dictionary<string, object> args) { + public static bool CreateChat(Dictionary<string, object> args) + { string id = ""; string topic = ""; string name = ""; int max_users = 0; - id = args["id"] as string; - name = args["topic"] as string; - topic = args["name"] as string; + id = args["id"] as string; + name = args["topic"] as string; + topic = args["name"] as string; bool valid = true; if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(name) || string.IsNullOrEmpty(topic)) valid = false; - if (valid) { + if (valid) + { ServerManager.SendMessage("chat_create", $@"{{ id: ""{id}"", name: ""{name}"", topic: ""{topic}"", max_users: {max_users} }}"); - } else { + } + else + { Console.WriteLine("{CHAT_PLEASE_PROVIDE_VALID_CHANNEL_DATA}"); } return true; @@ -162,17 +183,21 @@ namespace ShiftOS.Engine { } + [TutorialLock] [Namespace("trm")] - public static class TerminalCommands { + public static class TerminalCommands + { [Command("clear")] - public static bool Clear() { + public static bool Clear() + { AppearanceManager.ConsoleOut.Clear(); return true; } - + [Command("echo")] [RequiresArgument("text")] - public static bool Echo(Dictionary<string, object> args) { + public static bool Echo(Dictionary<string, object> args) + { Console.WriteLine(args["text"]); return true; } @@ -180,33 +205,41 @@ namespace ShiftOS.Engine { #if DEVEL [Namespace("cheats", true)] - public static class CheatCommands { + public static class CheatCommands + { [Command("freecp", true)] [CommandObsolete("{OBSOLETE_CHEATS_FREECP}", "dev.freecp", true)] - public static bool FreeCodepoints(Dictionary<string, object> args) { + public static bool FreeCodepoints(Dictionary<string, object> args) + { // never called return true; } } [Namespace("dev")] - public static class ShiftOSDevCommands { + public static class ShiftOSDevCommands + { [Command("multarg")] [RequiresArgument("id")] [RequiresArgument("name")] [RequiresArgument("type")] - public static bool MultArg(Dictionary<string, object> args) { + public static bool MultArg(Dictionary<string, object> args) + { return true; } [Command("freecp")] - public static bool FreeCodepoints(Dictionary<string, object> args) { + public static bool FreeCodepoints(Dictionary<string, object> args) + { if (args.ContainsKey("amount")) - try { + try + { int codepointsToAdd = Convert.ToInt32(args["amount"].ToString()); SaveSystem.TransferCodepointsFrom("dev", codepointsToAdd); return true; - } catch (Exception ex) { + } + catch (Exception ex) + { Console.WriteLine("{ERROR}: " + ex.Message); return true; } @@ -216,41 +249,55 @@ namespace ShiftOS.Engine { } [Command("unlockeverything")] - public static bool GetAllUpgrades() { - foreach (var upg in Shiftorium.GetDefaults()) { + public static bool GetAllUpgrades() + { + foreach (var upg in Shiftorium.GetDefaults()) + { Shiftorium.Buy(upg.ID, 0); } return true; } [Command("info")] - public static bool DevInformation() { + public static bool DevInformation() + { Console.WriteLine("{SHIFTOS_PLUS_MOTTO}"); Console.WriteLine("{SHIFTOS_VERSION_INFO}" + Assembly.GetExecutingAssembly().GetName().Version); return true; } [Command("pullfile")] - public static bool PullFile(Dictionary<string, object> args) { - if (args.ContainsKey("physical") && args.ContainsKey("virtual")) { + public static bool PullFile(Dictionary<string, object> args) + { + if (args.ContainsKey("physical") && args.ContainsKey("virtual")) + { string file = (string)args["physical"]; string dest = (string)args["virtual"]; - if (System.IO.File.Exists(file)) { + if (System.IO.File.Exists(file)) + { Console.WriteLine("Pulling physical file to virtual drive..."); byte[] filebytes = System.IO.File.ReadAllBytes(file); ShiftOS.Objects.ShiftFS.Utils.WriteAllBytes(dest, filebytes); - } else { + } + else + { Console.WriteLine("The specified file does not exist on the physical drive."); } - } else { + } + else + { Console.WriteLine("You must supply a physical path."); } return true; } [Command("crash")] - public static bool CrashInstantly() { - try { + public static bool CrashInstantly() + { + try + { throw new Exception("ShiftOS was sent a command to forcefully crash."); - } catch (Exception e) { + } + catch (Exception e) + { CrashHandler.Start(e); return true; } @@ -259,46 +306,36 @@ namespace ShiftOS.Engine { #endif [Namespace("sos")] - public static class ShiftOSCommands { - + public static class ShiftOSCommands + { [Command("shutdown")] - public static bool Shutdown() { + public static bool Shutdown() + { SaveSystem.ShuttingDown = true; TerminalBackend.InvokeCommand("sos.save"); AppearanceManager.Exit(); return true; } - [Command("verify")] - public static bool Verify(Dictionary<string, object> args) { - if (SaveSystem.CurrentSave.StoryPosition == 4) { - if (args.ContainsKey(Localization.Parse("{ARGS_PASSWORD}"))) { - if (args[Localization.Parse("{ARGS_PASSWORD}")] as string == "theepicwin") { - SaveSystem.CurrentSave.StoryPosition++; - } else { - Console.WriteLine("{SENTIENCE_INVALIDPASSWORD}"); - } - } else { - Console.WriteLine("{SENTIENCE_INVALIDPASSWORD}"); - } - return true; - } else { - return false; - } - } [Command("help", "{COMMAND_HELP_USAGE}", "{COMMAND_HELP_DESCRIPTION}")] - public static bool Help() { + public static bool Help() + { var asm = Assembly.GetExecutingAssembly(); var types = asm.GetTypes(); - foreach (var type in types) { - if (Shiftorium.UpgradeAttributesUnlocked(type)) { - foreach (var a in type.GetCustomAttributes(false)) { - if (a is Namespace) { + foreach (var type in types) + { + if (Shiftorium.UpgradeAttributesUnlocked(type)) + { + foreach (var a in type.GetCustomAttributes(false)) + { + if (a is Namespace) + { var ns = a as Namespace; - if (!ns.hide) { + if (!ns.hide) + { string descp = "{NAMESPACE_" + ns.name.ToUpper() + "_DESCRIPTION}"; if (descp == Localization.Parse(descp)) descp = ""; @@ -307,13 +344,18 @@ namespace ShiftOS.Engine { Console.WriteLine($"{{NAMESPACE}}{ns.name}" + descp); - foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Static)) { - if (Shiftorium.UpgradeAttributesUnlocked(method)) { - foreach (var ma in method.GetCustomAttributes(false)) { - if (ma is Command) { + foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Static)) + { + if (Shiftorium.UpgradeAttributesUnlocked(method)) + { + foreach (var ma in method.GetCustomAttributes(false)) + { + if (ma is Command) + { var cmd = ma as Command; - if (!cmd.hide) { + if (!cmd.hide) + { string descriptionparse = "{COMMAND_" + ns.name.ToUpper() + "_" + cmd.name.ToUpper() + "_DESCRIPTION}"; string usageparse = "{COMMAND_" + ns.name.ToUpper() + "_" + cmd.name.ToUpper() + "_USAGE}"; if (descriptionparse == Localization.Parse(descriptionparse)) @@ -347,13 +389,15 @@ namespace ShiftOS.Engine { } [Command("save")] - public static bool Save() { + public static bool Save() + { SaveSystem.SaveGame(); return true; } [Command("status")] - public static bool Status() { + public static bool Status() + { Console.WriteLine($@"ShiftOS version {Assembly.GetExecutingAssembly().GetName().Version.ToString()} Codepoints: {SaveSystem.CurrentSave.Codepoints} @@ -365,11 +409,14 @@ Upgrades: {SaveSystem.CurrentSave.CountUpgrades()} installed, [Namespace("shiftorium")] - public static class ShiftoriumCommands { + public static class ShiftoriumCommands + { [Command("buy")] [RequiresArgument("upgrade")] - public static bool BuyUpgrade(Dictionary<string, object> userArgs) { - try { + public static bool BuyUpgrade(Dictionary<string, object> userArgs) + { + try + { string upgrade = ""; if (userArgs.ContainsKey("upgrade")) @@ -377,15 +424,19 @@ Upgrades: {SaveSystem.CurrentSave.CountUpgrades()} installed, else throw new Exception("You must specify a valid 'upgrade' value."); - foreach (var upg in Shiftorium.GetAvailable()) { - if (upg.ID == upgrade) { + foreach (var upg in Shiftorium.GetAvailable()) + { + if (upg.ID == upgrade) + { Shiftorium.Buy(upgrade, upg.Cost); return true; } } throw new Exception($"Couldn't find upgrade with ID: {upgrade}"); - } catch { + } + catch + { return false; } } @@ -393,15 +444,20 @@ Upgrades: {SaveSystem.CurrentSave.CountUpgrades()} installed, [RequiresUpgrade("shiftorium_bulk_buy")] [Command("bulkbuy")] [RequiresArgument("upgrades")] - public static bool BuyBulk(Dictionary<string, object> args) { - if (args.ContainsKey("upgrades")) { + public static bool BuyBulk(Dictionary<string, object> args) + { + if (args.ContainsKey("upgrades")) + { string[] upgrade_list = (args["upgrades"] as string).Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); - foreach (var upg in upgrade_list) { + foreach (var upg in upgrade_list) + { var dict = new Dictionary<string, object>(); dict.Add("upgrade", upg); BuyUpgrade(dict); } - } else { + } + else + { throw new Exception("Please specify a list of upgrades in the 'upgrades' argument. Each upgrade is separated by a comma."); } return true; @@ -409,8 +465,10 @@ Upgrades: {SaveSystem.CurrentSave.CountUpgrades()} installed, [Command("info")] - public static bool ViewInfo(Dictionary<string, object> userArgs) { - try { + public static bool ViewInfo(Dictionary<string, object> userArgs) + { + try + { string upgrade = ""; if (userArgs.ContainsKey("upgrade")) @@ -418,8 +476,10 @@ Upgrades: {SaveSystem.CurrentSave.CountUpgrades()} installed, else throw new Exception("You must specify a valid 'upgrade' value."); - foreach (var upg in Shiftorium.GetDefaults()) { - if (upg.ID == upgrade) { + foreach (var upg in Shiftorium.GetDefaults()) + { + if (upg.ID == upgrade) + { Console.WriteLine($@"Information for {upgrade}: {upg.Name} - {upg.Cost} Codepoints @@ -434,18 +494,24 @@ shiftorium.buy{{upgrade:""{upg.ID}""}}"); } throw new Exception($"Couldn't find upgrade with ID: {upgrade}"); - } catch { + } + catch + { return false; } } [Command("list")] - public static bool ListAll() { - try { + public static bool ListAll() + { + try + { Dictionary<string, int> upgrades = new Dictionary<string, int>(); int maxLength = 5; - foreach (var upg in Shiftorium.GetAvailable()) { - if (upg.ID.Length > maxLength) { + foreach (var upg in Shiftorium.GetAvailable()) + { + if (upg.ID.Length > maxLength) + { maxLength = upg.ID.Length; } @@ -454,11 +520,14 @@ shiftorium.buy{{upgrade:""{upg.ID}""}}"); Console.WriteLine("ID".PadRight((maxLength + 5) - 2) + "Cost (Codepoints)"); - foreach (var upg in upgrades) { + foreach (var upg in upgrades) + { Console.WriteLine(upg.Key.PadRight((maxLength + 5) - upg.Key.Length) + " " + upg.Value.ToString()); } return true; - } catch (Exception e) { + } + catch (Exception e) + { CrashHandler.Start(e); return false; } @@ -466,15 +535,18 @@ shiftorium.buy{{upgrade:""{upg.ID}""}}"); } [Namespace("win")] - public static class WindowCommands { + public static class WindowCommands + { [Command("list")] - public static bool List() { + public static bool List() + { Console.WriteLine("{ID}\t{WINDOW}"); - foreach (var app in AppearanceManager.OpenForms) { + foreach (var app in AppearanceManager.OpenForms) + { //All .NET object instances have a unique hash code. Good for fake process management. Console.WriteLine($"{app.GetHashCode()}\t{app.Text}"); } @@ -536,7 +608,32 @@ shiftorium.buy{{upgrade:""{upg.ID}""}}"); } else { - Console.WriteLine("Please specify a valid 'app' param."); + foreach (var asmExec in System.IO.Directory.GetFiles(Environment.CurrentDirectory)) + { + if (asmExec.EndsWith(".exe") || asmExec.EndsWith(".dll")) + { + var asm = Assembly.LoadFile(asmExec); + + foreach (var type in asm.GetTypes()) + { + if (type.GetInterfaces().Contains(typeof(IShiftOSWindow))) + { + foreach (var attr in type.GetCustomAttributes(false)) + { + if (attr is WinOpenAttribute) + { + if (Shiftorium.UpgradeAttributesUnlocked(type)) + { + Console.WriteLine("win.open{app:\"" + (attr as WinOpenAttribute).ID + "\"}"); + } + } + } + } + } + } + } + + return true; } Console.WriteLine("Couldn't find the specified app on your system."); |
