aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ShiftOS.WinForms/Applications/Terminal.cs31
-rw-r--r--ShiftOS.WinForms/Oobe.cs3
-rw-r--r--ShiftOS_TheReturn/SaveSystem.cs15
3 files changed, 31 insertions, 18 deletions
diff --git a/ShiftOS.WinForms/Applications/Terminal.cs b/ShiftOS.WinForms/Applications/Terminal.cs
index 2d2b4c5..080e8bb 100644
--- a/ShiftOS.WinForms/Applications/Terminal.cs
+++ b/ShiftOS.WinForms/Applications/Terminal.cs
@@ -313,21 +313,24 @@ namespace ShiftOS.WinForms.Applications
}
else if (a.KeyCode == Keys.Left)
{
- var getstring = txt.Lines[txt.Lines.Length - 1];
- var stringlen = getstring.Length + 1;
- var header = $"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ";
- var headerlen = header.Length + 1;
- var selstart = txt.SelectionStart;
- var remstrlen = txt.TextLength - stringlen;
- var finalnum = selstart - remstrlen;
-
- if (finalnum != headerlen)
+ if (SaveSystem.CurrentSave != null)
{
- AppearanceManager.CurrentPosition--;
- }
- else
- {
- a.SuppressKeyPress = true;
+ var getstring = txt.Lines[txt.Lines.Length - 1];
+ var stringlen = getstring.Length + 1;
+ var header = $"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ";
+ var headerlen = header.Length + 1;
+ var selstart = txt.SelectionStart;
+ var remstrlen = txt.TextLength - stringlen;
+ var finalnum = selstart - remstrlen;
+
+ if (finalnum != headerlen)
+ {
+ AppearanceManager.CurrentPosition--;
+ }
+ else
+ {
+ a.SuppressKeyPress = true;
+ }
}
}
else if (a.KeyCode == Keys.Up)
diff --git a/ShiftOS.WinForms/Oobe.cs b/ShiftOS.WinForms/Oobe.cs
index 9182b4b..96c2bf5 100644
--- a/ShiftOS.WinForms/Oobe.cs
+++ b/ShiftOS.WinForms/Oobe.cs
@@ -207,14 +207,15 @@ namespace ShiftOS.WinForms
ServerMessageReceived smr = null;
smr = (msg) =>
{
- ServerManager.MessageReceived -= smr;
if (msg.Name == "mud_savefile")
{
+ ServerManager.MessageReceived -= smr;
SaveSystem.CurrentSave = JsonConvert.DeserializeObject<Save>(msg.Contents);
SaveSystem.SaveGame();
}
else if(msg.Name=="mud_login_denied")
{
+ ServerManager.MessageReceived -= smr;
LinkSaveFile(token);
}
};
diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs
index c8996d4..d1b92fd 100644
--- a/ShiftOS_TheReturn/SaveSystem.cs
+++ b/ShiftOS_TheReturn/SaveSystem.cs
@@ -214,13 +214,22 @@ namespace ShiftOS.Engine
savehandshake = (msg) =>
{
- ServerManager.MessageReceived -= savehandshake;
if (msg.Name == "mud_savefile")
{
- CurrentSave = JsonConvert.DeserializeObject<Save>(msg.Contents);
- }
+ ServerManager.MessageReceived -= savehandshake;
+ try
+ {
+ CurrentSave = JsonConvert.DeserializeObject<Save>(msg.Contents);
+ }
+ catch
+ {
+ Console.WriteLine("[system] [SEVERE] Cannot parse configuration file.");
+ oobe.PromptForLogin();
+ }
+ }
else if (msg.Name == "mud_login_denied")
{
+ ServerManager.MessageReceived -= savehandshake;
oobe.PromptForLogin();
}
};