remove obsolete story code and document non-obsolete code

This commit is contained in:
Michael 2017-05-20 15:43:10 -04:00
parent 4178d71cb9
commit 96804248dd

View file

@ -35,8 +35,15 @@ using Newtonsoft.Json;
namespace ShiftOS.Engine
{
public class Story
/// <summary>
/// Storyline management class.
/// </summary>
public static class Story
{
/// <summary>
/// Starts the storyline with the specified Storyline ID.
/// </summary>
/// <param name="stid">The storyline ID to start.</param>
public static void Start(string stid)
{
foreach (var exec in System.IO.Directory.GetFiles(Environment.CurrentDirectory))
@ -78,231 +85,12 @@ namespace ShiftOS.Engine
#endif
}
[Obsolete("Please use Story.Start() in tandem with [StoryAttribute].")]
public static void RunFromInternalResource(string resource_id)
{
var t = typeof(Properties.Resources);
foreach(var prop in t.GetProperties(System.Reflection.BindingFlags.NonPublic | BindingFlags.Static))
{
if(prop.Name == resource_id)
{
if(prop.PropertyType == typeof(string))
{
WriteStory(prop.GetValue(null) as string);
return;
}
}
}
throw new ArgumentException("Couldn't find resource ID inside the engine: " + resource_id);
}
public string Character { get; set; }
public List<string> Lines { get; set; }
public static void Start()
{
Console.WriteLine();
if(SaveSystem.CurrentSave.StoryPosition == 5)
{
StartDevXLies();
}
}
public static void StartDevXLies()
{
int chatProgress = 0;
//bool LoopStuck = false;
string textToWrite = "";
const int TYPE_SPEED_MS = 45;
bool done = false;
bool write = true;
while (done == false) {
write = true;
switch (chatProgress)
{
case 0:
textToWrite = "User joined: @" + SaveSystem.CurrentSave.Username;
break;
case 1:
textToWrite = $"Hello, {SaveSystem.CurrentSave.Username}.";
break;
case 2: //If C:\ShiftOS doesn't exist the player won't notice this is here.
if (Directory.Exists(Paths.GetPath("classic")))
{
textToWrite = "I see you've participated in my previous ShiftOS experiment. Welcome back, Shifter. I assume you know lots about ShiftOS, but there are some updates I have to tell you.";
}
else
{
write = false;
}
break;
case 3: //DevX hates ShiftOS-Next secretly.
if (Directory.Exists(Paths.GetPath("classic") + "-Next"))
{
textToWrite = "Hmmmm.... looking at my sentience records, I see you've participated in ShiftOS-Next. This is gonna be difficult.";
}
else
{
write = false;
}
break;
case 4:
textToWrite = "There's a lot that has changed within ShiftOS.";
break;
case 5:
textToWrite = "First off, I want to tell you a bit about myself in case you don't already know.";
break;
case 6:
textToWrite = "My name is DevX. I am the architect of ShiftOS. I have chosen you to take part in helping me out with it.";
break;
case 7:
textToWrite = "You see, in my past attempts it has all been about an evolving operating system and seeing how the users work with it...";
break;
case 8:
textToWrite = "Almost one hundred percent of the time, people have found out it was an experiment and they could simply return to their regular system with a specific upgrade.";
break;
case 9:
textToWrite = "But now, I want to try something different - something unique.";
break;
case 10:
textToWrite = "ShiftOS is the same as it has been in my previous attempts, but now, your goal is to gain as much wealth and power as possible.";
break;
case 11:
textToWrite = "Right now you are inside my segregation LAN. Only you and me exist within this domain. You are free from other users unless I create them.";
break;
case 12:
textToWrite = "Since you have proved your sentience, I have a task for you outside the segregation LAN.";
break;
case 13:
textToWrite = "But first... you need to be taught a few things.";
break;
case 14:
textToWrite = "First off, when I bring you into my multi-user domain, you'll first want to establish as much wealth as possible.";
break;
case 15:
textToWrite = "Wealth comes in the form of Codepoints - a currency used among users of the multi-user domain.";
break;
case 16:
textToWrite = @"You can get Codepoints by doing the following:
- Stealing them from other users
- Extracting them from inactive/unverified sentiences
- Using specific scripts/programs within ShiftOS
- Creating paid scripts/applications within ShiftOS";
break;
case 17:
textToWrite = "You can use Codepoints to buy upgrades using the 'shiftorium.buy' command, or you can use them to pay other users, or scripts.";
break;
case 18:
textToWrite = "Within the multi-user domain you are free to do whatever you want. Larcany, theft, deceiving, lies, and distribution of malware is permitted under my watch.";
break;
case 19:
textToWrite = "Do whatever you have to to get Codepoints.";
break;
case 20:
textToWrite = "Then use them to make yourself stronger by buying upgrades at the shiftorium.";
break;
case 21:
textToWrite = "If you want to get a bit devious within the multi-user domain, look around for scripts that will expose user account information.";
break;
case 22:
textToWrite = "Or just spread a virus around the mud.";
break;
case 23:
textToWrite = "Or you can be the 'good' guy and stop these attacks and gain the trust of other users.";
break;
case 24:
textToWrite = "It's up to you. Just, don't mess with my system. You won't want me coming to you after that. I'm watching.";
break;
case 25:
textToWrite = "User left chat: @" + SaveSystem.CurrentSave.Username;
done = true;
SaveSystem.CurrentSave.StoryPosition++;
TerminalBackend.InvokeCommand("sos.save");
break;
}
if (write == true)
{
Console.WriteLine();
Console.Write("DevX: ");
foreach(char c in textToWrite)
{
Console.Beep(750, TYPE_SPEED_MS);
if (c == '\n')
{
}
else if (c == '\r')
{
Console.WriteLine();
}
else
{
Console.Write(c);
}
}
Thread.Sleep(1000);
}
chatProgress += 1;
}
}
public static void WriteStory(string json)
{
var thread = new Thread(new ThreadStart(() =>
{
var story = JsonConvert.DeserializeObject<Story>(json);
const int TYPESPEED = 45;
foreach (var line in story.Lines)
{
var localized = Localization.Parse(line);
if (line.StartsWith("cmd:"))
{
string[] cmdsplit = line.Replace("cmd:", "").Split(' ');
switch (cmdsplit[0])
{
case "givecp":
SaveSystem.TransferCodepointsFrom(story.Character, Convert.ToInt32(cmdsplit[1]));
break;
}
}
else
{
Console.Write(story.Character + ": ");
foreach (var c in localized)
{
Console.Beep(1024, TYPESPEED);
if (c == '\r')
{
}
else if (c == '\n')
Console.WriteLine();
else
Console.Write(c);
}
Console.WriteLine();
Thread.Sleep(1000);
}
}
Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
}));
thread.IsBackground = true;
thread.Start();
}
}
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
@ -322,6 +110,9 @@ namespace ShiftOS.Engine
StoryID = id;
}
/// <summary>
/// Gets the storyline ID stored in this attribute.
/// </summary>
public string StoryID { get; private set; }
}