aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS_TheReturn/SaveSystem.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS_TheReturn/SaveSystem.cs')
-rw-r--r--ShiftOS_TheReturn/SaveSystem.cs123
1 files changed, 95 insertions, 28 deletions
diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs
index 3e68a70..a27b04f 100644
--- a/ShiftOS_TheReturn/SaveSystem.cs
+++ b/ShiftOS_TheReturn/SaveSystem.cs
@@ -50,6 +50,9 @@ namespace ShiftOS.Engine
{
public static bool ShuttingDown = false;
+ public static ClientSave CurrentUser { get; set; }
+
+
public static Save CurrentSave { get; set; }
/// <summary>
@@ -156,17 +159,23 @@ namespace ShiftOS.Engine
{
KernelWatchdog.Log("mud_handshake", "handshake successful: kernel watchdog access code is \"" + ServerManager.thisGuid.ToString() + "\"");
- ServerManager.MessageReceived += (msg) =>
+ ServerMessageReceived savehandshake = null;
+
+ savehandshake = (msg) =>
{
if (msg.Name == "mud_savefile")
{
CurrentSave = JsonConvert.DeserializeObject<Save>(msg.Contents);
+ ServerManager.MessageReceived -= savehandshake;
}
else if (msg.Name == "mud_login_denied")
{
oobe.PromptForLogin();
+ ServerManager.MessageReceived -= savehandshake;
}
};
+ ServerManager.MessageReceived += savehandshake;
+
ReadSave();
@@ -189,28 +198,96 @@ namespace ShiftOS.Engine
Thread.Sleep(50);
Console.WriteLine("{SYSTEM_INITIATED}");
+
+
+ if(CurrentSave.Users.Count == 0)
+ {
+ CurrentSave.Users.Add(new ClientSave
+ {
+ Username = "root",
+ Password = "",
+ Permissions = UserPermissions.Root
+ });
+ Console.WriteLine("No users found. Creating new user with username \"root\", with no password.");
+ }
TerminalBackend.InStory = false;
+
+ TerminalBackend.PrefixEnabled = false;
+
+ Login:
+ string username = "";
+ int progress = 0;
+ bool goback = false;
+ TextSentEventHandler ev = null;
+ ev = (text) =>
+ {
+ if (progress == 0)
+ {
+ if (!string.IsNullOrWhiteSpace(text))
+ {
+ if (CurrentSave.Users.FirstOrDefault(x => x.Username == text) == null)
+ {
+ Console.WriteLine("User not found.");
+ goback = true;
+ progress++;
+ TerminalBackend.TextSent -= ev;
+ return;
+ }
+ username = text;
+ progress++;
+ }
+ else
+ {
+ Console.WriteLine("Username not provided.");
+ TerminalBackend.TextSent -= ev;
+ goback = true;
+ progress++;
+ }
+ }
+ else if (progress == 1)
+ {
+ var user = CurrentSave.Users.FirstOrDefault(x => x.Username == username);
+ if (user.Password == text)
+ {
+ Console.WriteLine("Welcome to ShiftOS.");
+ CurrentUser = user;
+ Thread.Sleep(2000);
+ progress++;
+ }
+ else
+ {
+ Console.WriteLine("Access denied.");
+ goback = true;
+ progress++;
+ }
+ TerminalBackend.TextSent -= ev;
+ }
+ };
+ TerminalBackend.TextSent += ev;
+ Console.WriteLine(CurrentSave.SystemName + " login:");
+ while(progress == 0)
+ {
+ Thread.Sleep(10);
+ }
+ if (goback)
+ goto Login;
+ Console.WriteLine("password:");
+ while (progress == 1)
+ Thread.Sleep(10);
+ if (goback)
+ goto Login;
+
+
TerminalBackend.PrefixEnabled = true;
Shiftorium.LogOrphanedUpgrades = true;
Desktop.InvokeOnWorkerThread(new Action(() =>
{
ShiftOS.Engine.Scripting.LuaInterpreter.RunSft(Paths.GetPath("kernel.sft"));
}));
- Desktop.InvokeOnWorkerThread(new Action(() => Desktop.PopulateAppLauncher()));
- if (CurrentSave.StoryPosition == 1)
- {
- Desktop.InvokeOnWorkerThread(new Action(() =>
- {
- TutorialManager.StartTutorial();
- }));
- while (TutorialManager.IsInTutorial == true) { }
- GameReady?.Invoke();
- }
- else
- {
- GameReady?.Invoke();
- }
+
+ Desktop.InvokeOnWorkerThread(new Action(() => Desktop.PopulateAppLauncher()));
+ GameReady?.Invoke();
}
public delegate void EmptyEventHandler();
@@ -266,12 +343,9 @@ namespace ShiftOS.Engine
{
if (Utils.FileExists(Paths.GetPath("user.dat")))
{
- var userdat = JsonConvert.DeserializeObject<ClientSave>(Utils.ReadAllText(Paths.GetPath("user.dat")));
+ string token = Utils.ReadAllText(Paths.GetPath("user.dat"));
- ServerManager.SendMessage("mud_login", $@"{{
- username: ""{userdat.Username}"",
- password: ""{userdat.Password}""
-}}");
+ ServerManager.SendMessage("mud_token_login", token);
}
else
{
@@ -301,14 +375,7 @@ namespace ShiftOS.Engine
Console.Write("{SE_SAVING}... ");
if (SaveSystem.CurrentSave != null)
{
- string username = CurrentSave.Username;
- string password = CurrentSave.Password;
-
- Utils.WriteAllText(Paths.GetPath("user.dat"), $@"{{
- username: ""{username}"",
- password: ""{password}""
-}}");
-
+ Utils.WriteAllText(Paths.GetPath("user.dat"), CurrentSave.UniteAuthToken);
ServerManager.SendMessage("mud_save", JsonConvert.SerializeObject(CurrentSave, Formatting.Indented));
}
if (!Shiftorium.Silent)