diff options
Diffstat (limited to 'ShiftOS_TheReturn')
| -rw-r--r-- | ShiftOS_TheReturn/Desktop.cs | 8 | ||||
| -rw-r--r-- | ShiftOS_TheReturn/SaveSystem.cs | 4 | ||||
| -rw-r--r-- | ShiftOS_TheReturn/Scripting.cs | 18 |
3 files changed, 30 insertions, 0 deletions
diff --git a/ShiftOS_TheReturn/Desktop.cs b/ShiftOS_TheReturn/Desktop.cs index 86d2099..256ab09 100644 --- a/ShiftOS_TheReturn/Desktop.cs +++ b/ShiftOS_TheReturn/Desktop.cs @@ -100,6 +100,14 @@ namespace ShiftOS.Engine } } + public static IDesktop CurrentDesktop + { + get + { + return _desktop; + } + } + public static void Init(IDesktop desk, bool show = false) { IDesktop deskToClose = null; diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs index 90504bb..ec3c3b3 100644 --- a/ShiftOS_TheReturn/SaveSystem.cs +++ b/ShiftOS_TheReturn/SaveSystem.cs @@ -172,6 +172,10 @@ namespace ShiftOS.Engine TerminalBackend.InStory = false; 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) { diff --git a/ShiftOS_TheReturn/Scripting.cs b/ShiftOS_TheReturn/Scripting.cs index 7215fbf..eca94fc 100644 --- a/ShiftOS_TheReturn/Scripting.cs +++ b/ShiftOS_TheReturn/Scripting.cs @@ -43,6 +43,24 @@ namespace ShiftOS.Engine.Scripting public dynamic Lua = new DynamicLua.DynamicLua(); public bool Running = true; + public static void RunSft(string sft) + { + if (Utils.FileExists(sft)) + { + try + { + string b64 = Utils.ReadAllText(sft); + byte[] bytes = Convert.FromBase64String(b64); + string lua = Encoding.UTF8.GetString(bytes); + new LuaInterpreter().Execute(lua); + } + catch + { + Infobox.Show("Invalid binary.", "This file is not a valid ShiftOS binary executable."); + } + } + } + public LuaInterpreter() { Lua(@"function totable(clrlist) |
