diff options
Diffstat (limited to 'TimeHACK.Engine')
20 files changed, 99 insertions, 0 deletions
diff --git a/TimeHACK.Engine/SaveSystem.cs b/TimeHACK.Engine/SaveSystem.cs new file mode 100644 index 0000000..c6e19a2 --- /dev/null +++ b/TimeHACK.Engine/SaveSystem.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace TimeHACK.Engine +{ + public static class SaveSystem + { + public static Save CurrentSave { get; private set; } + + public static string GameDirectory + { + get + { + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "TimeHACK"); + } + } + + public static string ProfileDirectory + { + get + { + return Path.Combine(GameDirectory, "Profiles"); + } + } + + public static bool LoadSave() + { + if(File.Exists(Path.Combine(ProfileDirectory, "user.save"))) + { + //Read base64 string from file + string b64 = File.ReadAllText(Path.Combine(ProfileDirectory, "user.save")); + //Get Unicode byte array + byte[] bytes = Convert.FromBase64String(b64); + //Decode the Unicode + string json = Encoding.UTF8.GetString(bytes); + //Deserialize save object. + CurrentSave = JsonConvert.DeserializeObject<Save>(json); + return true; + } + else + { + NewGame(); + return false; + } + } + + public static void NewGame() + { + //TODO: User must set a username....somehow + if (!Directory.Exists(GameDirectory)) + Directory.CreateDirectory(GameDirectory); + + if (!Directory.Exists(ProfileDirectory)) + Directory.CreateDirectory(ProfileDirectory); + + var save = new Save(); + save.ExperiencedStories = new List<string>(); + save.InstalledPrograms = new Dictionary<string, bool>(); + CurrentSave = save; + SaveGame(); + } + + public static void SaveGame() + { + //Serialize the save to JSON. + string json = JsonConvert.SerializeObject(CurrentSave); + //Get JSON bytes (Unicode format). + var bytes = Encoding.UTF8.GetBytes(json); + //Encode the array into Base64. + string b64 = Convert.ToBase64String(bytes); + //Write to disk. + File.WriteAllText(Path.Combine(ProfileDirectory, "user.save"), b64); + } + } + + public class Save + { + public string Username { get; set; } + public Dictionary<string, bool> InstalledPrograms { get; set; } + public List<string> ExperiencedStories { get; set; } + } +} diff --git a/TimeHACK.Engine/TimeHACK.Engine.csproj b/TimeHACK.Engine/TimeHACK.Engine.csproj index ecb6b48..14707ae 100644 --- a/TimeHACK.Engine/TimeHACK.Engine.csproj +++ b/TimeHACK.Engine/TimeHACK.Engine.csproj @@ -47,6 +47,7 @@ <ItemGroup> <Compile Include="BSODCreator.cs" /> <None Include="Resources\WinClassic\Window\pjBg6mKP.bin" /> + <Compile Include="SaveSystem.cs" /> <Compile Include="TaskBarController.cs" /> <Compile Include="Template\Win9XBSOD.cs"> <SubType>Form</SubType> diff --git a/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.dll b/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.dll Binary files differindex e569db6..66cdf05 100644 --- a/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.dll +++ b/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.dll diff --git a/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.pdb b/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.pdb Binary files differindex 668c688..763326d 100644 --- a/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.pdb +++ b/TimeHACK.Engine/bin/Debug/TimeHACK.Engine.pdb diff --git a/TimeHACK.Engine/bin/Release/TimeHACK.Engine.dll b/TimeHACK.Engine/bin/Release/TimeHACK.Engine.dll Binary files differindex 4f815b0..25b26f2 100644 --- a/TimeHACK.Engine/bin/Release/TimeHACK.Engine.dll +++ b/TimeHACK.Engine/bin/Release/TimeHACK.Engine.dll diff --git a/TimeHACK.Engine/bin/Release/TimeHACK.Engine.pdb b/TimeHACK.Engine/bin/Release/TimeHACK.Engine.pdb Binary files differindex 8f7944b..fd4f046 100644 --- a/TimeHACK.Engine/bin/Release/TimeHACK.Engine.pdb +++ b/TimeHACK.Engine/bin/Release/TimeHACK.Engine.pdb diff --git a/TimeHACK.Engine/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/TimeHACK.Engine/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache Binary files differindex bac2e0d..dc47b2a 100644 --- a/TimeHACK.Engine/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache +++ b/TimeHACK.Engine/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache diff --git a/TimeHACK.Engine/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/TimeHACK.Engine/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll Binary files differnew file mode 100644 index 0000000..fc9ddba --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Properties.Resources.resources b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Properties.Resources.resources Binary files differnew file mode 100644 index 0000000..db7dda3 --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Properties.Resources.resources diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.AboutBox95.resources b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.AboutBox95.resources Binary files differnew file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.AboutBox95.resources diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.Infobox95.resources b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.Infobox95.resources Binary files differnew file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.Infobox95.resources diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.Win9XBSOD.resources b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.Win9XBSOD.resources Binary files differnew file mode 100644 index 0000000..6c05a97 --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.Win9XBSOD.resources diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.WinClassic.resources b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.WinClassic.resources Binary files differnew file mode 100644 index 0000000..690267a --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.Template.WinClassic.resources diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.csproj.FileListAbsolute.txt b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..446887b --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\bin\Debug\TimeHACK.Engine.dll +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\bin\Debug\TimeHACK.Engine.pdb +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\bin\Debug\Newtonsoft.Json.dll +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.Properties.Resources.resources +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.Template.Win9XBSOD.resources +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.Template.AboutBox95.resources +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.Template.Infobox95.resources +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.Template.WinClassic.resources +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.csproj.GenerateResource.Cache +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.dll +C:\Users\Michael\Documents\TimeHACK\TimeHACK.Engine\obj\Debug\TimeHACK.Engine.pdb diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.csproj.GenerateResource.Cache b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.csproj.GenerateResource.Cache Binary files differnew file mode 100644 index 0000000..49ae6a2 --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.csproj.GenerateResource.Cache diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.dll b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.dll Binary files differnew file mode 100644 index 0000000..66cdf05 --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.dll diff --git a/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.pdb b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.pdb Binary files differnew file mode 100644 index 0000000..763326d --- /dev/null +++ b/TimeHACK.Engine/obj/Debug/TimeHACK.Engine.pdb diff --git a/TimeHACK.Engine/obj/Release/TimeHACK.Engine.csproj.GenerateResource.Cache b/TimeHACK.Engine/obj/Release/TimeHACK.Engine.csproj.GenerateResource.Cache Binary files differindex 06332ab..832bf29 100644 --- a/TimeHACK.Engine/obj/Release/TimeHACK.Engine.csproj.GenerateResource.Cache +++ b/TimeHACK.Engine/obj/Release/TimeHACK.Engine.csproj.GenerateResource.Cache diff --git a/TimeHACK.Engine/obj/Release/TimeHACK.Engine.dll b/TimeHACK.Engine/obj/Release/TimeHACK.Engine.dll Binary files differindex 4f815b0..25b26f2 100644 --- a/TimeHACK.Engine/obj/Release/TimeHACK.Engine.dll +++ b/TimeHACK.Engine/obj/Release/TimeHACK.Engine.dll diff --git a/TimeHACK.Engine/obj/Release/TimeHACK.Engine.pdb b/TimeHACK.Engine/obj/Release/TimeHACK.Engine.pdb Binary files differindex 8f7944b..fd4f046 100644 --- a/TimeHACK.Engine/obj/Release/TimeHACK.Engine.pdb +++ b/TimeHACK.Engine/obj/Release/TimeHACK.Engine.pdb |
