aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.WinForms')
-rw-r--r--ShiftOS.WinForms/Applications/Artpad.cs1
-rw-r--r--ShiftOS.WinForms/Applications/Chat.cs1
-rw-r--r--ShiftOS.WinForms/Applications/Dialog.cs6
-rw-r--r--ShiftOS.WinForms/Applications/Downloader.cs1
-rw-r--r--ShiftOS.WinForms/Applications/FormatEditor.cs1
-rw-r--r--ShiftOS.WinForms/Applications/GraphicPicker.cs1
-rw-r--r--ShiftOS.WinForms/Applications/MUDControlCentre.cs1
-rw-r--r--ShiftOS.WinForms/Applications/NameChanger.cs1
-rw-r--r--ShiftOS.WinForms/Applications/Pong.cs1
-rw-r--r--ShiftOS.WinForms/Applications/ShiftLetters.cs1
-rw-r--r--ShiftOS.WinForms/Applications/ShiftLotto.cs1
-rw-r--r--ShiftOS.WinForms/Applications/ShiftSweeper.cs1
-rw-r--r--ShiftOS.WinForms/Applications/Shifter.cs25
-rw-r--r--ShiftOS.WinForms/Applications/Shiftnet.cs8
-rw-r--r--ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs1
-rw-r--r--ShiftOS.WinForms/Applications/Terminal.cs16
-rw-r--r--ShiftOS.WinForms/Applications/TutorialBox.cs3
-rw-r--r--ShiftOS.WinForms/Controls/TerminalBox.cs26
-rw-r--r--ShiftOS.WinForms/HackerCommands.cs116
-rw-r--r--ShiftOS.WinForms/Tools/ControlManager.cs42
-rw-r--r--ShiftOS.WinForms/WinformsWindowManager.cs18
21 files changed, 254 insertions, 18 deletions
diff --git a/ShiftOS.WinForms/Applications/Artpad.cs b/ShiftOS.WinForms/Applications/Artpad.cs
index 6c1bc1c..71f7afb 100644
--- a/ShiftOS.WinForms/Applications/Artpad.cs
+++ b/ShiftOS.WinForms/Applications/Artpad.cs
@@ -41,6 +41,7 @@ using ShiftOS.Engine;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[Launcher("Artpad", true, "al_artpad", "Graphics")]
[RequiresUpgrade("artpad")]
[WinOpen("artpad")]
diff --git a/ShiftOS.WinForms/Applications/Chat.cs b/ShiftOS.WinForms/Applications/Chat.cs
index 06a7873..caf8cd2 100644
--- a/ShiftOS.WinForms/Applications/Chat.cs
+++ b/ShiftOS.WinForms/Applications/Chat.cs
@@ -36,6 +36,7 @@ using ShiftOS.Engine;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
public partial class Chat : UserControl, IShiftOSWindow
{
public Chat(string chatId)
diff --git a/ShiftOS.WinForms/Applications/Dialog.cs b/ShiftOS.WinForms/Applications/Dialog.cs
index 26e3040..11fbf1e 100644
--- a/ShiftOS.WinForms/Applications/Dialog.cs
+++ b/ShiftOS.WinForms/Applications/Dialog.cs
@@ -76,12 +76,16 @@ namespace ShiftOS.WinForms.Applications
btnok.Click += (o, a) =>
{
AppearanceManager.Close(this);
+ OpenCallback?.Invoke();
};
}
- public void Open(string title, string msg)
+ private Action OpenCallback = null;
+
+ public void Open(string title, string msg, Action c = null)
{
+ OpenCallback = c;
new Dialog().OpenInternal(title, msg);
}
diff --git a/ShiftOS.WinForms/Applications/Downloader.cs b/ShiftOS.WinForms/Applications/Downloader.cs
index da90c6d..1f240bf 100644
--- a/ShiftOS.WinForms/Applications/Downloader.cs
+++ b/ShiftOS.WinForms/Applications/Downloader.cs
@@ -41,6 +41,7 @@ using System.IO.Compression;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[Launcher("Downloader", false, null, "Networking")]
[DefaultIcon("iconDownloader")]
public partial class Downloader : UserControl, IShiftOSWindow
diff --git a/ShiftOS.WinForms/Applications/FormatEditor.cs b/ShiftOS.WinForms/Applications/FormatEditor.cs
index ef44b47..56b0253 100644
--- a/ShiftOS.WinForms/Applications/FormatEditor.cs
+++ b/ShiftOS.WinForms/Applications/FormatEditor.cs
@@ -34,6 +34,7 @@ using System.Windows.Forms;
using ShiftOS.Engine;
namespace ShiftOS.WinForms.Applications {
+ [MultiplayerOnly]
[Launcher("FormatEditor", true, "al_format_editor", "Games")]
[RequiresUpgrade("format_editor")]
[WinOpen("formateditor")]
diff --git a/ShiftOS.WinForms/Applications/GraphicPicker.cs b/ShiftOS.WinForms/Applications/GraphicPicker.cs
index 2dfe7ec..b3dd8bf 100644
--- a/ShiftOS.WinForms/Applications/GraphicPicker.cs
+++ b/ShiftOS.WinForms/Applications/GraphicPicker.cs
@@ -37,6 +37,7 @@ using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[DefaultTitle("Choose graphic")] [DefaultIcon("icongraphicpicker")]
public partial class GraphicPicker : UserControl, IShiftOSWindow
{
diff --git a/ShiftOS.WinForms/Applications/MUDControlCentre.cs b/ShiftOS.WinForms/Applications/MUDControlCentre.cs
index 02fe868..e2668bd 100644
--- a/ShiftOS.WinForms/Applications/MUDControlCentre.cs
+++ b/ShiftOS.WinForms/Applications/MUDControlCentre.cs
@@ -38,6 +38,7 @@ using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[RequiresUpgrade("mud_fundamentals")]
[Launcher("MUD Control Centre", true, "al_mud_control_centre", "Networking")]
[WinOpen("mud_control_centre")]
diff --git a/ShiftOS.WinForms/Applications/NameChanger.cs b/ShiftOS.WinForms/Applications/NameChanger.cs
index ca76e57..d7c99f7 100644
--- a/ShiftOS.WinForms/Applications/NameChanger.cs
+++ b/ShiftOS.WinForms/Applications/NameChanger.cs
@@ -38,6 +38,7 @@ using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications {
+ [MultiplayerOnly]
[Launcher("Name Changer", true, "al_name_changer", "Customization")]
[RequiresUpgrade("name_changer")]
[WinOpen("name_changer")]
diff --git a/ShiftOS.WinForms/Applications/Pong.cs b/ShiftOS.WinForms/Applications/Pong.cs
index af1e156..157ce8c 100644
--- a/ShiftOS.WinForms/Applications/Pong.cs
+++ b/ShiftOS.WinForms/Applications/Pong.cs
@@ -37,6 +37,7 @@ using ShiftOS.Objects;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[Launcher("Pong", true, "al_pong", "Games")]
[WinOpen("pong")]
[DefaultIcon("iconPong")]
diff --git a/ShiftOS.WinForms/Applications/ShiftLetters.cs b/ShiftOS.WinForms/Applications/ShiftLetters.cs
index 700df7e..b5e9aa4 100644
--- a/ShiftOS.WinForms/Applications/ShiftLetters.cs
+++ b/ShiftOS.WinForms/Applications/ShiftLetters.cs
@@ -36,6 +36,7 @@ using System.Windows.Forms;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[Launcher("ShiftLetters", false, null, "Games")]
[RequiresUpgrade("shiftletters")]
[WinOpen("shiftletters")]
diff --git a/ShiftOS.WinForms/Applications/ShiftLotto.cs b/ShiftOS.WinForms/Applications/ShiftLotto.cs
index 4b1c983..5ab8154 100644
--- a/ShiftOS.WinForms/Applications/ShiftLotto.cs
+++ b/ShiftOS.WinForms/Applications/ShiftLotto.cs
@@ -35,6 +35,7 @@ using ShiftOS.Engine;
namespace ShiftOS.WinForms.Applications
{
[Launcher("ShiftLotto", true, "al_shiftlotto", "Games")]
+ [MultiplayerOnly]
[DefaultIcon("iconShiftLotto")]
[RequiresUpgrade("shiftlotto")]
[WinOpen("shiftlotto")]
diff --git a/ShiftOS.WinForms/Applications/ShiftSweeper.cs b/ShiftOS.WinForms/Applications/ShiftSweeper.cs
index b13880f..cf6d331 100644
--- a/ShiftOS.WinForms/Applications/ShiftSweeper.cs
+++ b/ShiftOS.WinForms/Applications/ShiftSweeper.cs
@@ -36,6 +36,7 @@ using ShiftOS.Engine;
namespace ShiftOS.WinForms.Applications {
[Launcher("ShiftSweeper", true, "al_shiftsweeper", "Games")]
[RequiresUpgrade("shiftsweeper")]
+ [MultiplayerOnly]
[WinOpen("shiftsweeper")]
[DefaultIcon("iconShiftSweeper")]
public partial class ShiftSweeper : UserControl, IShiftOSWindow {
diff --git a/ShiftOS.WinForms/Applications/Shifter.cs b/ShiftOS.WinForms/Applications/Shifter.cs
index 4d29cf8..fe2bf20 100644
--- a/ShiftOS.WinForms/Applications/Shifter.cs
+++ b/ShiftOS.WinForms/Applications/Shifter.cs
@@ -40,6 +40,7 @@ using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications
{
+ [MultiplayerOnly]
[Launcher("Shifter", true, "al_shifter", "Customization")]
[RequiresUpgrade("shifter")]
[WinOpen("shifter")]
@@ -446,6 +447,30 @@ namespace ShiftOS.WinForms.Applications
flbody.Controls.Add(color);
color.Show();
}
+ else if(c.Field.FieldType.IsEnum == true)
+ {
+ var cBox = new ComboBox();
+ cBox.Width = 150;
+ ControlManager.SetupControl(cBox);
+
+ foreach(var itm in Enum.GetNames(c.Field.FieldType))
+ {
+ cBox.Items.Add(itm);
+ }
+
+ cBox.Text = c.Field.GetValue(LoadedSkin).ToString();
+
+ cBox.SelectedIndexChanged += (o, a) =>
+ {
+ c.Field.SetValue(LoadedSkin, Enum.Parse(c.Field.FieldType, cBox.Text));
+ };
+
+ labelHeight = cBox.Height;
+
+ flbody.Controls.Add(cBox);
+ cBox.Show();
+ flbody.SetFlowBreak(cBox, true);
+ }
else if(c.Field.FieldType == typeof(int))
{
if (c.Field.HasShifterEnumMask())
diff --git a/ShiftOS.WinForms/Applications/Shiftnet.cs b/ShiftOS.WinForms/Applications/Shiftnet.cs
index 9540794..c1c81d5 100644
--- a/ShiftOS.WinForms/Applications/Shiftnet.cs
+++ b/ShiftOS.WinForms/Applications/Shiftnet.cs
@@ -34,9 +34,11 @@ using System.Windows.Forms;
using ShiftOS.Engine;
using Newtonsoft.Json;
using static ShiftOS.Engine.SkinEngine;
+using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications {
[Launcher("Shiftnet", false, null, "Networking")]
+ [MultiplayerOnly]
[DefaultIcon("iconShiftnet")]
public partial class Shiftnet : UserControl, IShiftOSWindow {
public Shiftnet() {
@@ -62,6 +64,8 @@ namespace ShiftOS.WinForms.Applications {
}
public string ConstructHtml(string markdown) {
+ var TerminalForeColor = ControlManager.ConvertColor(SkinEngine.LoadedSkin.TerminalForeColorCC);
+ var TerminalBackColor = ControlManager.ConvertColor(SkinEngine.LoadedSkin.TerminalBackColorCC);
string html = $@"<html>
<head>
<style>
@@ -90,8 +94,8 @@ namespace ShiftOS.WinForms.Applications {
pre, code {{
font-family: ""{LoadedSkin.TerminalFont.Name}"";
font-size: {LoadedSkin.TerminalFont.SizeInPoints}pt;
- color: rgb({LoadedSkin.TerminalForeColor.R}, {LoadedSkin.TerminalForeColor.G}, {LoadedSkin.TerminalForeColor.B});
- background-color: rgb({LoadedSkin.TerminalBackColor.R}, {LoadedSkin.TerminalBackColor.G}, {LoadedSkin.TerminalBackColor.B});
+ color: rgb({TerminalForeColor.R}, {TerminalForeColor.G}, {TerminalForeColor.B});
+ background-color: rgb({TerminalBackColor.R}, {TerminalBackColor.G}, {TerminalBackColor.B});
}}
</style>
</head>
diff --git a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
index b3724ae..0580b47 100644
--- a/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
+++ b/ShiftOS.WinForms/Applications/ShiftoriumFrontend.cs
@@ -39,6 +39,7 @@ namespace ShiftOS.WinForms.Applications
{
[Launcher("Shiftorium", true, "al_shiftorium", "Utilities")]
[RequiresUpgrade("shiftorium_gui")]
+ [MultiplayerOnly]
[WinOpen("shiftorium")]
[DefaultTitle("Shiftorium")]
[DefaultIcon("iconShiftorium")]
diff --git a/ShiftOS.WinForms/Applications/Terminal.cs b/ShiftOS.WinForms/Applications/Terminal.cs
index 7bab213..06a6e8d 100644
--- a/ShiftOS.WinForms/Applications/Terminal.cs
+++ b/ShiftOS.WinForms/Applications/Terminal.cs
@@ -43,6 +43,7 @@ using System.Collections;
using static ShiftOS.Engine.SkinEngine;
using ShiftOS.Engine;
using ShiftOS.Objects;
+using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Applications
{
@@ -134,7 +135,7 @@ namespace ShiftOS.WinForms.Applications
rtbterm.Text = "";
TerminalBackend.PrefixEnabled = true;
TerminalBackend.InStory = false;
- Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
+ TerminalBackend.PrintPrompt();
if (Shiftorium.UpgradeInstalled("wm_free_placement"))
{
this.ParentForm.Width = 640;
@@ -276,7 +277,7 @@ namespace ShiftOS.WinForms.Applications
}
if (TerminalBackend.PrefixEnabled)
{
- Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
+ TerminalBackend.PrintPrompt();
}
}
}
@@ -350,8 +351,8 @@ namespace ShiftOS.WinForms.Applications
txt.Focus();
txt.Font = LoadedSkin.TerminalFont;
- txt.ForeColor = LoadedSkin.TerminalForeColor;
- txt.BackColor = LoadedSkin.TerminalBackColor;
+ txt.ForeColor = ControlManager.ConvertColor(LoadedSkin.TerminalForeColorCC);
+ txt.BackColor = ControlManager.ConvertColor(LoadedSkin.TerminalBackColorCC);
}
@@ -391,8 +392,7 @@ namespace ShiftOS.WinForms.Applications
rtbterm.Text = AppearanceManager.LastTerminalText;
rtbterm.Select(rtbterm.TextLength, 0);
}
- Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
-
+ TerminalBackend.PrintPrompt();
}
@@ -403,8 +403,8 @@ namespace ShiftOS.WinForms.Applications
try
{
rtbterm.Font = LoadedSkin.TerminalFont;
- rtbterm.ForeColor = LoadedSkin.TerminalForeColor;
- rtbterm.BackColor = LoadedSkin.TerminalBackColor;
+ rtbterm.ForeColor = ControlManager.ConvertColor(LoadedSkin.TerminalForeColorCC);
+ rtbterm.BackColor = ControlManager.ConvertColor(LoadedSkin.TerminalBackColorCC);
}
catch
{
diff --git a/ShiftOS.WinForms/Applications/TutorialBox.cs b/ShiftOS.WinForms/Applications/TutorialBox.cs
index 25921e1..3c74443 100644
--- a/ShiftOS.WinForms/Applications/TutorialBox.cs
+++ b/ShiftOS.WinForms/Applications/TutorialBox.cs
@@ -21,6 +21,8 @@ namespace ShiftOS.WinForms.Applications
InitializeComponent();
IsComplete = false;
lbltuttext.Text = "";
+ lbltuttext.Padding = new Padding(15);
+ lbltuttext.Margin = lbltuttext.Padding;
}
bool stillTyping = false;
@@ -47,6 +49,7 @@ namespace ShiftOS.WinForms.Applications
}));
Thread.Sleep(75);
}
+ Thread.Sleep(5000);
stillTyping = false;
}).Start();
}
diff --git a/ShiftOS.WinForms/Controls/TerminalBox.cs b/ShiftOS.WinForms/Controls/TerminalBox.cs
index b75d077..9e4c61c 100644
--- a/ShiftOS.WinForms/Controls/TerminalBox.cs
+++ b/ShiftOS.WinForms/Controls/TerminalBox.cs
@@ -24,11 +24,14 @@
using System;
using System.Collections.Generic;
+using System.Drawing;
using System.Linq;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.Engine;
+using ShiftOS.WinForms.Tools;
namespace ShiftOS.WinForms.Controls
{
@@ -53,13 +56,36 @@ namespace ShiftOS.WinForms.Controls
public void Write(string text)
{
this.HideSelection = true;
+ this.Select(this.TextLength, 0);
+ this.SelectionFont = ConstructFont();
+ this.SelectionColor = ControlManager.ConvertColor(ConsoleEx.ForegroundColor);
+ this.SelectionBackColor = ControlManager.ConvertColor(ConsoleEx.BackgroundColor);
this.AppendText(Localization.Parse(text));
this.HideSelection = false;
}
+ private Font ConstructFont()
+ {
+ FontStyle fs = FontStyle.Regular;
+ if (ConsoleEx.Bold)
+ fs = fs | FontStyle.Bold;
+ if (ConsoleEx.Italic)
+ fs = fs | FontStyle.Italic;
+ if (ConsoleEx.Underline)
+ fs = fs | FontStyle.Underline;
+
+ return new Font(this.Font, fs);
+ }
+
public void WriteLine(string text)
{
+ this.HideSelection = true;
+ this.Select(this.TextLength, 0);
+ this.SelectionFont = ConstructFont();
+ this.SelectionColor = ControlManager.ConvertColor(ConsoleEx.ForegroundColor);
+ this.SelectionBackColor = ControlManager.ConvertColor(ConsoleEx.BackgroundColor);
this.AppendText(Localization.Parse(text) + Environment.NewLine);
+ this.HideSelection = false;
}
bool quickCopying = false;
diff --git a/ShiftOS.WinForms/HackerCommands.cs b/ShiftOS.WinForms/HackerCommands.cs
index f3f132e..107343b 100644
--- a/ShiftOS.WinForms/HackerCommands.cs
+++ b/ShiftOS.WinForms/HackerCommands.cs
@@ -59,10 +59,25 @@ namespace ShiftOS.WinForms
{
private static void writeSlow(string text)
{
- Console.Write("[hacker101@undisclosed]: ");
- Thread.Sleep(200);
+ ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
+ ConsoleEx.Bold = false;
+ ConsoleEx.Italic = false;
+ Console.Write("[");
+ ConsoleEx.ForegroundColor = ConsoleColor.Magenta;
+ ConsoleEx.Bold = true;
+ Console.Write("hacker101");
+ ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
+ ConsoleEx.Italic = true;
+ Console.Write("@");
+ ConsoleEx.ForegroundColor = ConsoleColor.White;
+ Console.Write("undisclosed");
+ ConsoleEx.ForegroundColor = ConsoleColor.DarkYellow;
+ ConsoleEx.Bold = false;
+ ConsoleEx.Italic = false;
+ Console.Write("]: ");
+ Thread.Sleep(850);
Console.WriteLine(text);
- Thread.Sleep(1000);
+ Thread.Sleep(4000);
}
[Story("hacker101_deadaccts")]
@@ -121,9 +136,12 @@ namespace ShiftOS.WinForms
TerminalBackend.PrefixEnabled = true;
Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
StartHackerTutorial();
+ TerminalBackend.PrefixEnabled = true;
+ TerminalBackend.PrintPrompt();
});
t.IsBackground = true;
t.Start();
+ TerminalBackend.PrefixEnabled = false;
}
internal static void StartHackerTutorial()
@@ -140,8 +158,7 @@ namespace ShiftOS.WinForms
int tutPos = 0;
Action ondec = () =>
{
- if (tutPos == 2)
- tutPos++;
+ tutPos++;
};
TerminalBackend.CommandProcessed += (o, a) =>
{
@@ -351,6 +368,7 @@ namespace ShiftOS.WinForms
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_";
+ [MultiplayerOnly]
[Command("breach_user_password")]
[KernelMode]
[RequiresArgument("user")]
@@ -377,6 +395,9 @@ namespace ShiftOS.WinForms
if(rnd.Next(0, 100) >= 75)
{
Console.WriteLine("--operation took too long - failed.");
+ ServerManager.SendMessage("mud_save_allow_dead", JsonConvert.SerializeObject(sve));
+ ServerManager.MessageReceived -= msgReceived;
+ TerminalBackend.PrefixEnabled = true;
return;
}
sw.Stop();
@@ -385,13 +406,16 @@ namespace ShiftOS.WinForms
Console.WriteLine("--password breached. Operation took " + sw.ElapsedMilliseconds + " milliseconds.");
received = true;
ServerManager.MessageReceived -= msgReceived;
+ TerminalBackend.PrintPrompt();
}
else if(msg.Name == "user_data_not_found")
{
Console.WriteLine("--access denied.");
received = true;
ServerManager.MessageReceived -= msgReceived;
+ TerminalBackend.PrintPrompt();
}
+ TerminalBackend.PrefixEnabled = true;
};
Console.WriteLine("--beginning brute-force attack on " + usr + "@" + sys + "...");
@@ -402,10 +426,13 @@ namespace ShiftOS.WinForms
user = usr,
sysname = sys
}));
+ TerminalBackend.PrefixEnabled = false;
Thread.Sleep(500);
return true;
}
+
+ [MultiplayerOnly]
[Command("print_user_info")]
[KernelMode]
[RequiresArgument("pass")]
@@ -442,14 +469,17 @@ namespace ShiftOS.WinForms
}
received = true;
ServerManager.MessageReceived -= msgReceived;
-
+ TerminalBackend.PrintPrompt();
+
}
else if (msg.Name == "user_data_not_found")
{
Console.WriteLine("--access denied.");
received = true;
ServerManager.MessageReceived -= msgReceived;
+ TerminalBackend.PrintPrompt();
}
+ TerminalBackend.PrefixEnabled = true;
};
Console.WriteLine("--contacting multi-user domain...");
@@ -461,9 +491,11 @@ namespace ShiftOS.WinForms
sysname = sys
}));
Thread.Sleep(500);
+ TerminalBackend.PrefixEnabled = false;
return true;
}
+ [MultiplayerOnly]
[Command("steal_codepoints")]
[KernelMode]
[RequiresArgument("amount")]
@@ -498,6 +530,8 @@ namespace ShiftOS.WinForms
if(amount > sve.Codepoints)
{
Console.WriteLine("--can't steal this many codepoints from user.");
+ ServerManager.SendMessage("mud_save_allow_dead", JsonConvert.SerializeObject(sve));
+ TerminalBackend.PrefixEnabled = true;
return;
}
@@ -512,13 +546,16 @@ namespace ShiftOS.WinForms
}
received = true;
ServerManager.MessageReceived -= msgReceived;
+ TerminalBackend.PrintPrompt();
}
else if (msg.Name == "user_data_not_found")
{
Console.WriteLine("--access denied.");
received = true;
ServerManager.MessageReceived -= msgReceived;
+ TerminalBackend.PrintPrompt();
}
+ TerminalBackend.PrefixEnabled = true;
};
Console.WriteLine("--contacting multi-user domain...");
@@ -531,10 +568,64 @@ namespace ShiftOS.WinForms
sysname = sys
}));
Thread.Sleep(500);
-
+ TerminalBackend.PrefixEnabled = false;
return true;
}
+ [MultiplayerOnly]
+ [Command("purge_user")]
+ [KernelMode]
+ [RequiresArgument("pass")]
+ [RequiresArgument("user")]
+ [RequiresArgument("sys")]
+ [RequiresUpgrade("hacker101_deadaccts")]
+ public static bool PurgeUser(Dictionary<string, object> args)
+ {
+ string usr = args["user"].ToString();
+ string sys = args["sys"].ToString();
+ string pass = args["pass"].ToString();
+ ServerMessageReceived msgReceived = null;
+
+ Console.WriteLine("--hooking multi-user domain response call...");
+
+ msgReceived = (msg) =>
+ {
+ if (msg.Name == "user_data")
+ {
+ var sve = JsonConvert.DeserializeObject<Save>(msg.Contents);
+ if (sve.Password == pass)
+ {
+ ServerManager.SendMessage("delete_dead_save", JsonConvert.SerializeObject(sve));
+ Console.WriteLine("<mud> User purged successfully.");
+ }
+ else
+ {
+ Console.WriteLine("--access denied.");
+ }
+ ServerManager.MessageReceived -= msgReceived;
+ }
+ else if (msg.Name == "user_data_not_found")
+ {
+ Console.WriteLine("--access denied.");
+ ServerManager.MessageReceived -= msgReceived;
+ }
+ TerminalBackend.PrintPrompt();
+ TerminalBackend.PrefixEnabled = true;
+ };
+
+ Console.WriteLine("--contacting multi-user domain...");
+ Thread.Sleep(500);
+ ServerManager.MessageReceived += msgReceived;
+
+ ServerManager.SendMessage("get_user_data", JsonConvert.SerializeObject(new
+ {
+ user = usr,
+ sysname = sys
+ }));
+ Thread.Sleep(500);
+ TerminalBackend.PrefixEnabled = false;
+ return true;
+ }
[Command("brute_decrypt", true)]
@@ -577,6 +668,7 @@ namespace ShiftOS.WinForms
}
}
+ [MultiplayerOnly]
[Namespace("storydev")]
public static class StoryDevCommands
{
@@ -608,5 +700,15 @@ namespace ShiftOS.WinForms
return true;
}
+
+ [Command("experience", description = "Marks a story plot as experienced without triggering the plot.", usage ="{id:}")]
+ [RequiresArgument("id")]
+ [RemoteLock]
+ public static bool Experience(Dictionary<string, object> args)
+ {
+ SaveSystem.CurrentSave.StoriesExperienced.Add(args["id"].ToString());
+ SaveSystem.SaveGame();
+ return true;
+ }
}
}
diff --git a/ShiftOS.WinForms/Tools/ControlManager.cs b/ShiftOS.WinForms/Tools/ControlManager.cs
index 5cc4813..52663d7 100644
--- a/ShiftOS.WinForms/Tools/ControlManager.cs
+++ b/ShiftOS.WinForms/Tools/ControlManager.cs
@@ -152,6 +152,48 @@ namespace ShiftOS.WinForms.Tools
}
}
+ internal static Color ConvertColor(ConsoleColor cCol)
+ {
+ switch (cCol)
+ {
+ case ConsoleColor.Black:
+ return Color.Black;
+ case ConsoleColor.Gray:
+ return Color.Gray;
+ case ConsoleColor.DarkGray:
+ return Color.DarkGray;
+ case ConsoleColor.Blue:
+ return Color.Blue;
+ case ConsoleColor.Cyan:
+ return Color.Cyan;
+ case ConsoleColor.DarkBlue:
+ return Color.DarkBlue;
+ case ConsoleColor.DarkCyan:
+ return Color.DarkCyan;
+ case ConsoleColor.DarkGreen:
+ return Color.DarkGreen;
+ case ConsoleColor.DarkMagenta:
+ return Color.DarkMagenta;
+ case ConsoleColor.DarkRed:
+ return Color.DarkRed;
+ case ConsoleColor.DarkYellow:
+ return Color.YellowGreen;
+ case ConsoleColor.Yellow:
+ return Color.Yellow;
+ case ConsoleColor.Green:
+ return Color.Green;
+ case ConsoleColor.Magenta:
+ return Color.Magenta;
+ case ConsoleColor.Red:
+ return Color.Red;
+ case ConsoleColor.White:
+ return Color.White;
+ default:
+ return Color.Black;
+ }
+
+ }
+
public static void SetCursor(Control ctrl)
{
#if STUPID
diff --git a/ShiftOS.WinForms/WinformsWindowManager.cs b/ShiftOS.WinForms/WinformsWindowManager.cs
index b8f0cae..eeaa6c9 100644
--- a/ShiftOS.WinForms/WinformsWindowManager.cs
+++ b/ShiftOS.WinForms/WinformsWindowManager.cs
@@ -106,6 +106,24 @@ namespace ShiftOS.WinForms
return;
}
+ foreach(var attr in form.GetType().GetCustomAttributes(true))
+ {
+ if(attr is MultiplayerOnlyAttribute)
+ {
+ if(KernelWatchdog.MudConnected == false)
+ {
+ Infobox.PromptYesNo("Disconnected from MUD", "This application requires a connection to the MUD. Would you like to reconnect?", new Action<bool>((answer) =>
+ {
+ if(answer == true)
+ {
+ KernelWatchdog.MudConnected = true;
+ SetupWindow(form);
+ }
+ }));
+ return;
+ }
+ }
+ }
if (!Shiftorium.UpgradeAttributesUnlocked(form.GetType()))
{