aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS_TheReturn/SaveSystem.cs
diff options
context:
space:
mode:
authorMichael <[email protected]>2017-04-30 20:28:31 -0400
committerMichael <[email protected]>2017-04-30 20:28:31 -0400
commita99711507970055e02dd678e613e9d8546e6742e (patch)
treef5e47afa6c153a0e9df5d6190b9d5fcda89ac7cc /ShiftOS_TheReturn/SaveSystem.cs
parent5f11bf2d299ab7575daf31970c4c504066f82a43 (diff)
downloadshiftos_thereturn-a99711507970055e02dd678e613e9d8546e6742e.tar.gz
shiftos_thereturn-a99711507970055e02dd678e613e9d8546e6742e.tar.bz2
shiftos_thereturn-a99711507970055e02dd678e613e9d8546e6742e.zip
fix unite login and add multiuser support
Diffstat (limited to 'ShiftOS_TheReturn/SaveSystem.cs')
-rw-r--r--ShiftOS_TheReturn/SaveSystem.cs99
1 files changed, 85 insertions, 14 deletions
diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs
index bd9a14f..2df914e 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>
@@ -189,28 +192,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();