aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.Engine/ShiftFS/ShiftFS.cs
diff options
context:
space:
mode:
authorAShifter <[email protected]>2017-11-17 20:29:46 -0700
committerAShifter <[email protected]>2017-11-17 20:29:46 -0700
commitebdc09fe679b4b06fd149c8fc6539244100ce896 (patch)
tree65dfe45bbfd194ddb534cc80107ab8e6d80cf5bc /ShiftOS.Engine/ShiftFS/ShiftFS.cs
parent1d0b393e6969d9671daead8049973a374421046f (diff)
parent97722fbe9d474adffbba0b92e9727c48a8205234 (diff)
downloadshiftos-rewind-ebdc09fe679b4b06fd149c8fc6539244100ce896.tar.gz
shiftos-rewind-ebdc09fe679b4b06fd149c8fc6539244100ce896.tar.bz2
shiftos-rewind-ebdc09fe679b4b06fd149c8fc6539244100ce896.zip
Merge remote-tracking branch 'refs/remotes/ShiftOS-Rewind/master'
Diffstat (limited to 'ShiftOS.Engine/ShiftFS/ShiftFS.cs')
-rw-r--r--ShiftOS.Engine/ShiftFS/ShiftFS.cs80
1 files changed, 80 insertions, 0 deletions
diff --git a/ShiftOS.Engine/ShiftFS/ShiftFS.cs b/ShiftOS.Engine/ShiftFS/ShiftFS.cs
new file mode 100644
index 0000000..de406a7
--- /dev/null
+++ b/ShiftOS.Engine/ShiftFS/ShiftFS.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Windows.Forms;
+using ShiftOS.Engine.Misc;
+
+namespace ShiftOS.Engine.ShiftFS
+{
+ public static class ShiftFS
+ {
+ static readonly string FilePath = Path.Combine(Environment.CurrentDirectory, "save.bin");
+
+ static readonly FileSystemWatcher _watcher;
+
+ static readonly BinaryFormatter _formatter = new BinaryFormatter();
+
+ public static EventList<ShiftTree> Drives { get; private set; } = new EventList<ShiftTree>();
+
+ public static void Save()
+ {
+ using (var fs = File.OpenWrite(FilePath))
+ {
+ //Whoa.Whoa.SerialiseObject(fs, Drives);
+ _formatter.Serialize(fs, Drives);
+ }
+ }
+
+
+ static ShiftFS()
+ {
+ Drives.ItemAdded += (sender, e) => Debug.WriteLine(e.Item.Name + e.Item.Letter);
+
+ if (!File.Exists(FilePath))
+ {
+ using (File.Create(FilePath))
+ {
+
+ Drives.Add(new ShiftTree("Local Disk", 'C')
+ {
+ new ShiftDirectory("usr")
+ {
+ //i'll put in extensions later
+ new ShiftFile<string>("stringfile.txt", "THIS IS SECRETEXT")
+ },
+ new ShiftDirectory("libs")
+ {
+ new ShiftFile<string>("thing.dll", "oh no it's not code FACH")
+ }
+
+ });
+ }
+
+ Save();
+
+ MessageBox.Show("Save file created.");
+ Debug.WriteLine("Drives: " + Drives.Count);
+ }
+
+ WatcherOnChanged(null, null);
+
+ _watcher = new FileSystemWatcher(Environment.CurrentDirectory)
+ {
+ Filter = "save.bin",
+ };
+
+ _watcher.Changed += WatcherOnChanged;
+ }
+
+ static void WatcherOnChanged(object sender, FileSystemEventArgs e)
+ {
+ using (var fs = File.OpenRead(FilePath))
+ {
+ //Drives = Whoa.Whoa.DeserialiseObject<EventList<ShiftTree>>(fs);
+ Drives = (EventList<ShiftTree>) _formatter.Deserialize(fs);
+ }
+ }
+ }
+} \ No newline at end of file