aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Applications/Terminal.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.WinForms/Applications/Terminal.cs')
-rw-r--r--ShiftOS.WinForms/Applications/Terminal.cs136
1 files changed, 105 insertions, 31 deletions
diff --git a/ShiftOS.WinForms/Applications/Terminal.cs b/ShiftOS.WinForms/Applications/Terminal.cs
index de4888b..54329df 100644
--- a/ShiftOS.WinForms/Applications/Terminal.cs
+++ b/ShiftOS.WinForms/Applications/Terminal.cs
@@ -232,7 +232,7 @@ namespace ShiftOS.WinForms.Applications
var text = txt.Lines.ToArray();
var text2 = text[text.Length - 1];
var text3 = "";
- Console.WriteLine();
+ txt.AppendText(Environment.NewLine);
var text4 = Regex.Replace(text2, @"\t|\n|\r", "");
if (IsInRemoteSystem == true)
@@ -260,23 +260,17 @@ namespace ShiftOS.WinForms.Applications
}
else
{
- if (CurrentCommandParser.parser == null)
+ var result = SkinEngine.LoadedSkin.CurrentParser.ParseCommand(text3);
+
+ if (result.Equals(default(KeyValuePair<string, Dictionary<string, string>>)))
{
- TerminalBackend.InvokeCommand(text3);
+ Console.WriteLine("{ERR_SYNTAXERROR}");
}
else
{
- var result = CurrentCommandParser.parser.ParseCommand(text3);
-
- if (result.Equals(default(KeyValuePair<KeyValuePair<string, string>, Dictionary<string, string>>)))
- {
- Console.WriteLine("Syntax Error: Syntax Error");
- }
- else
- {
- TerminalBackend.InvokeCommand(result.Key.Key, result.Key.Value, result.Value);
- }
+ TerminalBackend.InvokeCommand(result.Key, result.Value);
}
+
}
}
if (TerminalBackend.PrefixEnabled)
@@ -313,21 +307,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)
@@ -335,6 +332,7 @@ namespace ShiftOS.WinForms.Applications
var tostring3 = txt.Lines[txt.Lines.Length - 1];
if (tostring3 == $"{SaveSystem.CurrentUser.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ")
Console.Write(TerminalBackend.LastCommand);
+ ConsoleEx.OnFlush?.Invoke();
a.SuppressKeyPress = true;
}
@@ -406,8 +404,6 @@ namespace ShiftOS.WinForms.Applications
public static void FirstSteps()
{
TerminalBackend.PrefixEnabled = false;
- new Thread(() =>
- {
TerminalBackend.InStory = true;
Console.WriteLine("Hey there, and welcome to ShiftOS.");
Thread.Sleep(2000);
@@ -517,8 +513,86 @@ namespace ShiftOS.WinForms.Applications
TerminalBackend.InStory = false;
SaveSystem.SaveGame();
Thread.Sleep(1000);
+
+ Story.Context.AutoComplete = false;
+
+ Console.WriteLine(@"Welcome to the ShiftOS Newbie's Guide.
+
+This tutorial will guide you through the more intermediate features of ShiftOS,
+such as earning Codepoints, buying Shiftoorium Upgrades, and using the objectives system.
+
+Every now and then, you'll get a notification in your terminal of a ""NEW OBJECTIVE"".
+This means that someone has instructed you to do something inside ShiftOS. At any moment
+you may type ""sos.status"" in your Terminal to see your current objectives.
+
+This command is very useful as not only does it allow you to see your current objectives
+but you can also see the amount of Codepoints you have as well as the upgrades you've
+installed and how many upgrades are available.
+
+Now, onto your first objective! All you need to do is earn 200 Codepoints using any
+program on your system.");
+
+ Story.PushObjective("First Steps: Your First Codepoints", "Play a few rounds of Pong, or use another program to earn 200 Codepoints.", () =>
+ {
+ return SaveSystem.CurrentSave.Codepoints >= 200;
+ }, () =>
+ {
+ Desktop.InvokeOnWorkerThread(() =>
+ {
+ AppearanceManager.SetupWindow(new Terminal());
+ });
+ Console.WriteLine("Good job! You've earned " + SaveSystem.CurrentSave.Codepoints + @" Codepoints! You can use these inside the
+Shiftorium to buy new upgrades inside ShiftOS.
+
+These upgrades can give ShiftOS more features, fixes and programs,
+which can make the operating system easier to use and navigate around
+and also make it easier for you to earn more Codepoints and thus upgrade
+te system further.
+
+Be cautious though! Only certain upgrades offer the ability to earn more
+Codepoints. These upgrades are typically in the form of new programs.
+
+So, try to get as many new programs as possible for your computer, and save
+the system feature upgrades for later unless you absolutely need them.
+
+The worst thing that could happen is you end up stuck with very little Codepoints
+and only a few small programs to use to earn very little amounts of Codepoints.
+
+Now, let's get you your first Shiftorium upgrade!");
+
+ Story.PushObjective("First Steps: The Shiftorium", "Buy your first Shiftorium upgrade with your new Codepoints using shiftorium.list, shiftorium.info and shiftorium.buy.",
+ () =>
+ {
+ return SaveSystem.CurrentSave.CountUpgrades() > 0;
+ }, () =>
+ {
+ Console.WriteLine("This concludes the ShiftOS Newbie's Guide! Now, go, and shift it your way!");
+ Console.WriteLine(@"
+Your goal: Earn 1,000 Codepoints.");
+ Story.Context.MarkComplete();
+ Story.Start("first_steps_transition");
+ });
TerminalBackend.PrintPrompt();
- }).Start();
+ });
+
+ TerminalBackend.PrintPrompt();
+ }
+
+
+ [Story("first_steps_transition")]
+ public static void FirstStepsTransition()
+ {
+ Story.PushObjective("Earn 1000 Codepoints", "You now know the basics of ShiftOS. Let's get your system up and running with a few upgrades, and get a decent amount of Codepoints.", () =>
+ {
+ return SaveSystem.CurrentSave.Codepoints >= 1000;
+ },
+ () =>
+ {
+ Story.Context.MarkComplete();
+ Story.Start("victortran_shiftnet");
+ });
+
+ Story.Context.AutoComplete = false;
}
public void OnSkinLoad()
@@ -544,7 +618,7 @@ namespace ShiftOS.WinForms.Applications
{
if (AppearanceManager.OpenForms.Count <= 1)
{
- Console.WriteLine("");
+ //Console.WriteLine("");
Console.WriteLine("{WIN_CANTCLOSETERMINAL}");
try
{