aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ShiftOS.WinForms/Commands.cs473
-rw-r--r--ShiftOS_TheReturn/AppearanceManager.cs2
-rw-r--r--ShiftOS_TheReturn/Commands.cs473
-rw-r--r--ShiftOS_TheReturn/ShiftOS.Engine.csproj1
4 files changed, 474 insertions, 475 deletions
diff --git a/ShiftOS.WinForms/Commands.cs b/ShiftOS.WinForms/Commands.cs
index e69de29..23b8f19 100644
--- a/ShiftOS.WinForms/Commands.cs
+++ b/ShiftOS.WinForms/Commands.cs
@@ -0,0 +1,473 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#define DEVEL
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using ShiftOS.Engine.Properties;
+using System.IO;
+using Newtonsoft.Json;
+using System.IO.Compression;
+
+using ShiftOS.Objects;
+using ShiftOS.Engine.Scripting;
+using ShiftOS.Objects.ShiftFS;
+
+namespace ShiftOS.Engine
+{
+ [TutorialLock]
+ public static class TerminalCommands
+ {
+ [Command("clear", description = "{DESC_CLEAR}")]
+ public static bool Clear()
+ {
+ AppearanceManager.ConsoleOut.Clear();
+ return true;
+ }
+ }
+
+ public static class ShiftOSCommands
+ {
+
+ [Command("setsfxenabled", description = "{DESC_SETSFXENABLED}")]
+ [RequiresArgument("value")]
+ public static bool SetSfxEnabled(Dictionary<string, object> args)
+ {
+ try
+ {
+ bool value = Convert.ToBoolean(args["value"].ToString());
+ SaveSystem.CurrentSave.SoundEnabled = value;
+ SaveSystem.SaveGame();
+ }
+ catch
+ {
+ Console.WriteLine("{ERR_BADBOOL}");
+ }
+ return true;
+ }
+
+
+
+ [Command("setmusicenabled", description = "{DESC_SETMUSICENABLED}")]
+ [RequiresArgument("value")]
+ public static bool SetMusicEnabled(Dictionary<string, object> args)
+ {
+ try
+ {
+ bool value = Convert.ToBoolean(args["value"].ToString());
+ SaveSystem.CurrentSave.MusicEnabled = value;
+ SaveSystem.SaveGame();
+ }
+ catch
+ {
+ Console.WriteLine("{ERR_BADBOOL}");
+ }
+ return true;
+ }
+
+
+
+ [Command("setvolume", description ="{DESC_SETVOLUME}")]
+ [RequiresArgument("value")]
+ public static bool SetSfxVolume(Dictionary<string, object> args)
+ {
+ int value = int.Parse(args["value"].ToString());
+ if(value >= 0 && value <= 100)
+ {
+ SaveSystem.CurrentSave.MusicVolume = value;
+ SaveSystem.SaveGame();
+ }
+ else
+ {
+ Console.WriteLine("{ERR_BADPERCENT}");
+ }
+ return true;
+ }
+
+ [RemoteLock]
+ [Command("shutdown", description = "{DESC_SHUTDOWN}")]
+ public static bool Shutdown()
+ {
+ SaveSystem.SaveGame();
+ AppearanceManager.Exit();
+ return true;
+ }
+
+ [Command("lang", description = "{DESC_LANG}")]
+ [RequiresArgument("language")]
+ public static bool SetLanguage(Dictionary<string, object> userArgs)
+ {
+ try
+ {
+ string lang = "";
+
+ lang = (string)userArgs["language"];
+
+ if (Localization.GetAllLanguages().Contains(lang))
+ {
+ SaveSystem.CurrentSave.Language = lang;
+ SaveSystem.SaveGame();
+ Console.WriteLine("{RES_LANGUAGE_CHANGED}");
+ return true;
+ }
+
+ throw new Exception("{ERR_NOLANG}");
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ [Command("commands", "", "{DESC_COMMANDS}")]
+ public static bool Commands()
+ {
+ var sb = new StringBuilder();
+ sb.AppendLine("{GEN_COMMANDS}");
+ sb.AppendLine("=================");
+ sb.AppendLine();
+ //print all unique namespaces.
+ foreach (var n in TerminalBackend.Commands.Where(x => !(x is TerminalBackend.WinOpenCommand) && Shiftorium.UpgradeInstalled(x.Dependencies) && x.CommandInfo.hide == false).OrderBy(x => x.CommandInfo.name))
+ {
+ sb.Append(n.CommandInfo.name);
+ if (!string.IsNullOrWhiteSpace(n.CommandInfo.description))
+ if (Shiftorium.UpgradeInstalled("help_description"))
+ sb.Append(" - " + n.CommandInfo.description);
+ sb.AppendLine();
+ }
+
+ Console.WriteLine(sb.ToString());
+
+ return true;
+ }
+
+ [Command("help", description = "{DESC_HELP}")]
+ public static bool Help()
+ {
+ Commands();
+ WindowCommands.Programs();
+ return true;
+ }
+
+
+ [MultiplayerOnly]
+ [Command("save", description = "{DESC_SAVE}")]
+ public static bool Save()
+ {
+ SaveSystem.SaveGame();
+ return true;
+ }
+
+ [MultiplayerOnly]
+ [Command("status", description = "{DESC_STATUS}")]
+ public static bool Status()
+ {
+ string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
+
+ string cp = SaveSystem.CurrentSave.Codepoints.ToString();
+ string installed = SaveSystem.CurrentSave.CountUpgrades().ToString();
+ string available = Shiftorium.GetAvailable().Length.ToString();
+
+ Console.WriteLine(Localization.Parse("{COM_STATUS}", new Dictionary<string, string>
+ {
+ ["%cp"] = cp,
+ ["%version"] = version,
+ ["%installed"] = installed,
+ ["%available"] = available
+ }));
+ Console.WriteLine("{GEN_OBJECTIVES}");
+ try
+ {
+ if (Story.CurrentObjectives.Count > 0)
+ {
+ foreach (var obj in Story.CurrentObjectives)
+ {
+ Console.WriteLine(obj.Name);
+ Console.WriteLine("-------------------------------");
+ Console.WriteLine();
+ Console.WriteLine(obj.Description);
+ }
+ }
+ else
+ {
+ Console.WriteLine("{RES_NOOBJECTIVES}");
+ }
+ }
+ catch
+ {
+ Console.WriteLine("{RES_NOOBJECTIVES}");
+ }
+ return true;
+ }
+ }
+
+ [MultiplayerOnly]
+ public static class ShiftoriumCommands
+ {
+ [Command("buy", description = "{DESC_BUY}")]
+ [RequiresArgument("upgrade")]
+ public static bool BuyUpgrade(Dictionary<string, object> userArgs)
+ {
+ try
+ {
+ string upgrade = "";
+
+ upgrade = (string)userArgs["upgrade"];
+
+ var upg = Shiftorium.GetAvailable().FirstOrDefault(x => x.ID == upgrade);
+ if(upg != null)
+ {
+ if (Shiftorium.Buy(upg.ID, upg.Cost) == true)
+ Console.WriteLine("{RES_UPGRADEINSTALLED}");
+ else
+ Console.WriteLine("{ERR_NOTENOUGHCODEPOINTS}");
+ }
+ else
+ {
+ Console.WriteLine("{ERR_NOUPGRADE}");
+ }
+
+ }
+ catch
+ {
+ Console.WriteLine("{ERR_GENERAL}");
+ }
+ return true;
+ }
+
+ [RequiresUpgrade("shiftorium_bulk_buy")]
+ [Command("bulkbuy", description = "{DESC_BULKBUY}")]
+ [RequiresArgument("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)
+ {
+ var dict = new Dictionary<string, object>();
+ dict.Add("upgrade", upg);
+ BuyUpgrade(dict);
+ }
+ }
+ return true;
+ }
+
+
+ [Command("upgradeinfo", description ="{DESC_UPGRADEINFO}")]
+ [RequiresArgument("upgrade")]
+ public static bool ViewInfo(Dictionary<string, object> userArgs)
+ {
+ try
+ {
+ string upgrade = "";
+
+ upgrade = (string)userArgs["upgrade"];
+
+ foreach (var upg in Shiftorium.GetDefaults())
+ {
+ if (upg.ID == upgrade)
+ {
+ Console.WriteLine(Localization.Parse("{COM_UPGRADEINFO}", new Dictionary<string, string>
+ {
+ ["%id"] = upg.ID,
+ ["%category"] = upg.Category,
+ ["%name"] = upg.Name,
+ ["%cost"] = upg.Cost.ToString(),
+ ["%description"] = upg.Description
+ }));
+
+ return true;
+ }
+ }
+
+ throw new Exception("{ERR_NOUPGRADE}");
+ }
+ catch
+ {
+ return false;
+ }
+ }
+
+ [Command("upgradecategories", description = "{DESC_UPGRADECATEGORIES}")]
+ public static bool ListCategories()
+ {
+ foreach(var cat in Shiftorium.GetCategories())
+ {
+ Console.WriteLine(Localization.Parse("{SHFM_CATEGORY}", new Dictionary<string, string>
+ {
+ ["%name"] = cat,
+ ["%available"] = Shiftorium.GetAvailable().Where(x=>x.Category==cat).Count().ToString()
+ }));
+ }
+ return true;
+ }
+
+ [Command("upgrades", description ="{DESC_UPGRADES}")]
+ public static bool ListAll(Dictionary<string, object> args)
+ {
+ try
+ {
+ bool showOnlyInCategory = false;
+
+ string cat = "Other";
+
+ if (args.ContainsKey("cat"))
+ {
+ showOnlyInCategory = true;
+ cat = args["cat"].ToString();
+ }
+
+ Dictionary<string, ulong> upgrades = new Dictionary<string, ulong>();
+ int maxLength = 5;
+
+ IEnumerable<ShiftoriumUpgrade> upglist = Shiftorium.GetAvailable();
+ if (showOnlyInCategory)
+ {
+ if (Shiftorium.IsCategoryEmptied(cat))
+ {
+ ConsoleEx.Bold = true;
+ ConsoleEx.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine("{SHFM_QUERYERROR}");
+ Console.WriteLine();
+ ConsoleEx.Bold = false;
+ ConsoleEx.ForegroundColor = ConsoleColor.Gray;
+ Console.WriteLine("{ERR_EMPTYCATEGORY}");
+ return true;
+ }
+ upglist = Shiftorium.GetAvailable().Where(x => x.Category == cat);
+ }
+
+
+ if(upglist.Count() == 0)
+ {
+ ConsoleEx.Bold = true;
+ ConsoleEx.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine("{SHFM_NOUPGRADES}");
+ Console.WriteLine();
+ ConsoleEx.Bold = false;
+ ConsoleEx.ForegroundColor = ConsoleColor.Gray;
+ Console.WriteLine("{ERR_NOMOREUPGRADES}");
+ return true;
+
+ }
+ foreach (var upg in upglist)
+ {
+ if (upg.ID.Length > maxLength)
+ {
+ maxLength = upg.ID.Length;
+ }
+
+ upgrades.Add(upg.ID, upg.Cost);
+ }
+
+ foreach (var upg in upgrades)
+ {
+ Console.WriteLine(Localization.Parse("{SHFM_UPGRADE}", new Dictionary<string, string>
+ {
+ ["%id"] = upg.Key,
+ ["%cost"] = upg.Value.ToString()
+ }));
+ }
+ return true;
+ }
+ catch (Exception e)
+ {
+ CrashHandler.Start(e);
+ return false;
+ }
+ }
+ }
+
+ public static class WindowCommands
+ {
+ [RemoteLock]
+ [Command("processes", description = "{DESC_PROCESSES}")]
+ public static bool List()
+ {
+ Console.WriteLine("{GEN_CURRENTPROCESSES}");
+ foreach (var app in AppearanceManager.OpenForms)
+ {
+ //Windows are displayed the order in which they were opened.
+ Console.WriteLine($"{AppearanceManager.OpenForms.IndexOf(app)}\t{app.Text}");
+ }
+ return true;
+ }
+
+ [Command("programs", description = "{DESC_PROGRAMS}")]
+ public static bool Programs()
+ {
+ Console.WriteLine("{GEN_PROGRAMS}");
+ Console.WriteLine("===============");
+ Console.WriteLine();
+ foreach(var cmd in TerminalBackend.Commands.Where(x=>x is TerminalBackend.WinOpenCommand && Shiftorium.UpgradeInstalled(x.Dependencies)).OrderBy(x => x.CommandInfo.name))
+ {
+ Console.Write(" - " + cmd.CommandInfo.name);
+ if (!string.IsNullOrWhiteSpace(cmd.CommandInfo.description))
+ if (Shiftorium.UpgradeInstalled("help_description"))
+ Console.Write(": " + cmd.CommandInfo.description);
+ Console.WriteLine();
+ }
+ return true;
+ }
+
+ [RemoteLock]
+ [Command("close", usage = "{win:integer32}", description ="{DESC_CLOSE}")]
+ [RequiresArgument("win")]
+ [RequiresUpgrade("close_command")]
+ public static bool CloseWindow(Dictionary<string, object> args)
+ {
+ int winNum = -1;
+ if (args.ContainsKey("win"))
+ winNum = Convert.ToInt32(args["win"].ToString());
+ string err = null;
+
+ if (winNum < 0 || winNum >= AppearanceManager.OpenForms.Count)
+ err = Localization.Parse("{ERR_BADWINID}", new Dictionary<string, string>
+ {
+ ["%max"] = (AppearanceManager.OpenForms.Count - 1).ToString()
+ });
+
+ if (string.IsNullOrEmpty(err))
+ {
+ Console.WriteLine("{RES_WINDOWCLOSED}");
+ AppearanceManager.Close(AppearanceManager.OpenForms[winNum].ParentWindow);
+ }
+ else
+ {
+ Console.WriteLine(err);
+ }
+
+ return true;
+ }
+
+ }
+}
diff --git a/ShiftOS_TheReturn/AppearanceManager.cs b/ShiftOS_TheReturn/AppearanceManager.cs
index 76060dd..47aa5fb 100644
--- a/ShiftOS_TheReturn/AppearanceManager.cs
+++ b/ShiftOS_TheReturn/AppearanceManager.cs
@@ -166,7 +166,7 @@ namespace ShiftOS.Engine
public static event EmptyEventHandler OnExit;
// Starts the engine's exit routine, firing the OnExit event.
- internal static void Exit()
+ public static void Exit()
{
OnExit?.Invoke();
//disconnect from MUD
diff --git a/ShiftOS_TheReturn/Commands.cs b/ShiftOS_TheReturn/Commands.cs
deleted file mode 100644
index 3a2b79a..0000000
--- a/ShiftOS_TheReturn/Commands.cs
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * MIT License
- *
- * Copyright (c) 2017 Michael VanOverbeek and ShiftOS devs
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#define DEVEL
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-using ShiftOS.Engine.Properties;
-using System.IO;
-using Newtonsoft.Json;
-using System.IO.Compression;
-
-using ShiftOS.Objects;
-using ShiftOS.Engine.Scripting;
-using ShiftOS.Objects.ShiftFS;
-
-namespace ShiftOS.Engine
-{
- [TutorialLock]
- public static class TerminalCommands
- {
- [Command("clear", description = "{DESC_CLEAR}")]
- public static bool Clear()
- {
- AppearanceManager.ConsoleOut.Clear();
- return true;
- }
- }
-
- public static class ShiftOSCommands
- {
-
- [Command("setsfxenabled", description = "{DESC_SETSFXENABLED}")]
- [RequiresArgument("value")]
- public static bool SetSfxEnabled(Dictionary<string, object> args)
- {
- try
- {
- bool value = Convert.ToBoolean(args["value"].ToString());
- SaveSystem.CurrentSave.SoundEnabled = value;
- SaveSystem.SaveGame();
- }
- catch
- {
- Console.WriteLine("{ERR_BADBOOL}");
- }
- return true;
- }
-
-
-
- [Command("setmusicenabled", description = "{DESC_SETMUSICENABLED}")]
- [RequiresArgument("value")]
- public static bool SetMusicEnabled(Dictionary<string, object> args)
- {
- try
- {
- bool value = Convert.ToBoolean(args["value"].ToString());
- SaveSystem.CurrentSave.MusicEnabled = value;
- SaveSystem.SaveGame();
- }
- catch
- {
- Console.WriteLine("{ERR_BADBOOL}");
- }
- return true;
- }
-
-
-
- [Command("setvolume", description ="{DESC_SETVOLUME}")]
- [RequiresArgument("value")]
- public static bool SetSfxVolume(Dictionary<string, object> args)
- {
- int value = int.Parse(args["value"].ToString());
- if(value >= 0 && value <= 100)
- {
- SaveSystem.CurrentSave.MusicVolume = value;
- SaveSystem.SaveGame();
- }
- else
- {
- Console.WriteLine("{ERR_BADPERCENT}");
- }
- return true;
- }
-
- [RemoteLock]
- [Command("shutdown", description = "{DESC_SHUTDOWN}")]
- public static bool Shutdown()
- {
- TerminalBackend.InvokeCommand("sos.save");
- AppearanceManager.Exit();
- return true;
- }
-
- [Command("lang", description = "{DESC_LANG}")]
- [RequiresArgument("language")]
- public static bool SetLanguage(Dictionary<string, object> userArgs)
- {
- try
- {
- string lang = "";
-
- lang = (string)userArgs["language"];
-
- if (Localization.GetAllLanguages().Contains(lang))
- {
- SaveSystem.CurrentSave.Language = lang;
- SaveSystem.SaveGame();
- Console.WriteLine("{RES_LANGUAGE_CHANGED}");
- return true;
- }
-
- throw new Exception("{ERR_NOLANG}");
- }
- catch
- {
- return false;
- }
- }
-
- [Command("commands", "", "{DESC_COMMANDS}")]
- public static bool Commands()
- {
- var sb = new StringBuilder();
- sb.AppendLine("{GEN_COMMANDS}");
- sb.AppendLine("=================");
- sb.AppendLine();
- //print all unique namespaces.
- foreach (var n in TerminalBackend.Commands.Where(x => !(x is TerminalBackend.WinOpenCommand) && Shiftorium.UpgradeInstalled(x.Dependencies) && x.CommandInfo.hide == false).OrderBy(x => x.CommandInfo.name))
- {
- sb.Append(n.CommandInfo.name);
- if (!string.IsNullOrWhiteSpace(n.CommandInfo.description))
- if (Shiftorium.UpgradeInstalled("help_description"))
- sb.Append(" - " + n.CommandInfo.description);
- sb.AppendLine();
- }
-
- Console.WriteLine(sb.ToString());
-
- return true;
- }
-
- [Command("help", description = "{DESC_HELP}")]
- public static bool Help()
- {
- Commands();
- WindowCommands.Programs();
- return true;
- }
-
-
- [MultiplayerOnly]
- [Command("save", description = "{DESC_SAVE}")]
- public static bool Save()
- {
- SaveSystem.SaveGame();
- return true;
- }
-
- [MultiplayerOnly]
- [Command("status", description = "{DESC_STATUS}")]
- public static bool Status()
- {
- string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
-
- string cp = SaveSystem.CurrentSave.Codepoints.ToString();
- string installed = SaveSystem.CurrentSave.CountUpgrades().ToString();
- string available = Shiftorium.GetAvailable().Length.ToString();
-
- Console.WriteLine(Localization.Parse("{COM_STATUS}", new Dictionary<string, string>
- {
- ["%cp"] = cp,
- ["%version"] = version,
- ["%installed"] = installed,
- ["%available"] = available
- }));
- Console.WriteLine("{GEN_OBJECTIVES}");
- try
- {
- if (Story.CurrentObjectives.Count > 0)
- {
- foreach (var obj in Story.CurrentObjectives)
- {
- Console.WriteLine(obj.Name);
- Console.WriteLine("-------------------------------");
- Console.WriteLine();
- Console.WriteLine(obj.Description);
- }
- }
- else
- {
- Console.WriteLine("{RES_NOOBJECTIVES}");
- }
- }
- catch
- {
- Console.WriteLine("{RES_NOOBJECTIVES}");
- }
- return true;
- }
- }
-
- [MultiplayerOnly]
- public static class ShiftoriumCommands
- {
- [Command("buy", description = "{DESC_BUY}")]
- [RequiresArgument("upgrade")]
- public static bool BuyUpgrade(Dictionary<string, object> userArgs)
- {
- try
- {
- string upgrade = "";
-
- upgrade = (string)userArgs["upgrade"];
-
- var upg = Shiftorium.GetAvailable().FirstOrDefault(x => x.ID == upgrade);
- if(upg != null)
- {
- if (Shiftorium.Buy(upg.ID, upg.Cost) == true)
- Console.WriteLine("{RES_UPGRADEINSTALLED}");
- else
- Console.WriteLine("{ERR_NOTENOUGHCODEPOINTS}");
- }
- else
- {
- Console.WriteLine("{ERR_NOUPGRADE}");
- }
-
- }
- catch
- {
- Console.WriteLine("{ERR_GENERAL}");
- }
- return true;
- }
-
- [RequiresUpgrade("shiftorium_bulk_buy")]
- [Command("bulkbuy", description = "{DESC_BULKBUY}")]
- [RequiresArgument("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)
- {
- var dict = new Dictionary<string, object>();
- dict.Add("upgrade", upg);
- BuyUpgrade(dict);
- }
- }
- return true;
- }
-
-
- [Command("upgradeinfo", description ="{DESC_UPGRADEINFO}")]
- [RequiresArgument("upgrade")]
- public static bool ViewInfo(Dictionary<string, object> userArgs)
- {
- try
- {
- string upgrade = "";
-
- upgrade = (string)userArgs["upgrade"];
-
- foreach (var upg in Shiftorium.GetDefaults())
- {
- if (upg.ID == upgrade)
- {
- Console.WriteLine(Localization.Parse("{COM_UPGRADEINFO}", new Dictionary<string, string>
- {
- ["%id"] = upg.ID,
- ["%category"] = upg.Category,
- ["%name"] = upg.Name,
- ["%cost"] = upg.Cost.ToString(),
- ["%description"] = upg.Description
- }));
-
- return true;
- }
- }
-
- throw new Exception("{ERR_NOUPGRADE}");
- }
- catch
- {
- return false;
- }
- }
-
- [Command("upgradecategories", description = "{DESC_UPGRADECATEGORIES}")]
- public static bool ListCategories()
- {
- foreach(var cat in Shiftorium.GetCategories())
- {
- Console.WriteLine(Localization.Parse("{SHFM_CATEGORY}", new Dictionary<string, string>
- {
- ["%name"] = cat,
- ["%available"] = Shiftorium.GetAvailable().Where(x=>x.Category==cat).Count().ToString()
- }));
- }
- return true;
- }
-
- [Command("upgrades", description ="{DESC_UPGRADES}")]
- public static bool ListAll(Dictionary<string, object> args)
- {
- try
- {
- bool showOnlyInCategory = false;
-
- string cat = "Other";
-
- if (args.ContainsKey("cat"))
- {
- showOnlyInCategory = true;
- cat = args["cat"].ToString();
- }
-
- Dictionary<string, ulong> upgrades = new Dictionary<string, ulong>();
- int maxLength = 5;
-
- IEnumerable<ShiftoriumUpgrade> upglist = Shiftorium.GetAvailable();
- if (showOnlyInCategory)
- {
- if (Shiftorium.IsCategoryEmptied(cat))
- {
- ConsoleEx.Bold = true;
- ConsoleEx.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("{SHFM_QUERYERROR}");
- Console.WriteLine();
- ConsoleEx.Bold = false;
- ConsoleEx.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine("{ERR_EMPTYCATEGORY}");
- return true;
- }
- upglist = Shiftorium.GetAvailable().Where(x => x.Category == cat);
- }
-
-
- if(upglist.Count() == 0)
- {
- ConsoleEx.Bold = true;
- ConsoleEx.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("{SHFM_NOUPGRADES}");
- Console.WriteLine();
- ConsoleEx.Bold = false;
- ConsoleEx.ForegroundColor = ConsoleColor.Gray;
- Console.WriteLine("{ERR_NOMOREUPGRADES}");
- return true;
-
- }
- foreach (var upg in upglist)
- {
- if (upg.ID.Length > maxLength)
- {
- maxLength = upg.ID.Length;
- }
-
- upgrades.Add(upg.ID, upg.Cost);
- }
-
- foreach (var upg in upgrades)
- {
- Console.WriteLine(Localization.Parse("{SHFM_UPGRADE}", new Dictionary<string, string>
- {
- ["%id"] = upg.Key,
- ["%cost"] = upg.Value.ToString()
- }));
- }
- return true;
- }
- catch (Exception e)
- {
- CrashHandler.Start(e);
- return false;
- }
- }
- }
-
- public static class WindowCommands
- {
- [RemoteLock]
- [Command("processes", description = "{DESC_PROCESSES}")]
- public static bool List()
- {
- Console.WriteLine("{GEN_CURRENTPROCESSES}");
- foreach (var app in AppearanceManager.OpenForms)
- {
- //Windows are displayed the order in which they were opened.
- Console.WriteLine($"{AppearanceManager.OpenForms.IndexOf(app)}\t{app.Text}");
- }
- return true;
- }
-
- [Command("programs", description = "{DESC_PROGRAMS}")]
- public static bool Programs()
- {
- Console.WriteLine("{GEN_PROGRAMS}");
- Console.WriteLine("===============");
- Console.WriteLine();
- foreach(var cmd in TerminalBackend.Commands.Where(x=>x is TerminalBackend.WinOpenCommand && Shiftorium.UpgradeInstalled(x.Dependencies)).OrderBy(x => x.CommandInfo.name))
- {
- Console.Write(" - " + cmd.CommandInfo.name);
- if (!string.IsNullOrWhiteSpace(cmd.CommandInfo.description))
- if (Shiftorium.UpgradeInstalled("help_description"))
- Console.Write(": " + cmd.CommandInfo.description);
- Console.WriteLine();
- }
- return true;
- }
-
- [RemoteLock]
- [Command("close", usage = "{win:integer32}", description ="{DESC_CLOSE}")]
- [RequiresArgument("win")]
- [RequiresUpgrade("close_command")]
- public static bool CloseWindow(Dictionary<string, object> args)
- {
- int winNum = -1;
- if (args.ContainsKey("win"))
- winNum = Convert.ToInt32(args["win"].ToString());
- string err = null;
-
- if (winNum < 0 || winNum >= AppearanceManager.OpenForms.Count)
- err = Localization.Parse("{ERR_BADWINID}", new Dictionary<string, string>
- {
- ["%max"] = (AppearanceManager.OpenForms.Count - 1).ToString()
- });
-
- if (string.IsNullOrEmpty(err))
- {
- Console.WriteLine("{RES_WINDOWCLOSED}");
- AppearanceManager.Close(AppearanceManager.OpenForms[winNum].ParentWindow);
- }
- else
- {
- Console.WriteLine(err);
- }
-
- return true;
- }
-
- }
-}
diff --git a/ShiftOS_TheReturn/ShiftOS.Engine.csproj b/ShiftOS_TheReturn/ShiftOS.Engine.csproj
index 5d434fc..66d2747 100644
--- a/ShiftOS_TheReturn/ShiftOS.Engine.csproj
+++ b/ShiftOS_TheReturn/ShiftOS.Engine.csproj
@@ -124,7 +124,6 @@
<Compile Include="AudioManager.cs" />
<Compile Include="BFInterpreter.cs" />
<Compile Include="CommandParser.cs" />
- <Compile Include="Commands.cs" />
<Compile Include="Command.cs" />
<Compile Include="ConsoleEx.cs" />
<Compile Include="CrashHandler.cs" />