aboutsummaryrefslogtreecommitdiff
path: root/Histacom2.Engine/SaveSystem.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Histacom2.Engine/SaveSystem.cs')
-rw-r--r--Histacom2.Engine/SaveSystem.cs104
1 files changed, 85 insertions, 19 deletions
diff --git a/Histacom2.Engine/SaveSystem.cs b/Histacom2.Engine/SaveSystem.cs
index 5557dca..7da916b 100644
--- a/Histacom2.Engine/SaveSystem.cs
+++ b/Histacom2.Engine/SaveSystem.cs
@@ -207,10 +207,58 @@ namespace Histacom2.Engine
public static void UpdateDirectoryInfo(string path, THFileInfo newfile)
{
- newfile.DOSName = newfile.Name.ToUpper().Replace("*", "").Replace("+", "").Replace(":", "").Replace(";", "").Replace(" ", "");
- if (newfile.DOSName.Contains("."))
+ SetDOSName(ref newfile);
+
+ if (File.ReadAllText(Path.Combine(path, "_data.info")).Contains(newfile.DOSName)) return;
+ FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(path, "_data.info")));
+ fsfi.Files.Add(newfile);
+ fsfi.ByteSize += newfile.ByteSize;
+
+ string toWrite = JsonConvert.SerializeObject(fsfi, Formatting.Indented);
+
+ File.WriteAllText(Path.Combine(path, "_data.info"), toWrite);
+ }
+
+ public static void RemoveFileFromDirectory(string path, string filename)
+ {
+ FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(path, "_data.info")));
+ THFileInfo fi = fsfi.Files.Find((THFileInfo f) => { return f.Name == filename; });
+ if (fi == null) return;
+
+ fsfi.ByteSize -= fi.ByteSize;
+ CurrentSave.BytesLeft += fi.ByteSize;
+
+ fsfi.Files.Remove(fi);
+ string toWrite = JsonConvert.SerializeObject(fsfi, Formatting.Indented);
+
+ File.WriteAllText(Path.Combine(path, "_data.info"), toWrite);
+ }
+
+ public static void RemoveSubDirFromDirectory(string path, string dirname)
+ {
+ FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(path, "_data.info")));
+ THDirInfo di = fsfi.SubDirs.Find((THDirInfo f) => { return f.Name == dirname; });
+ if (di == null) return;
+
+ // Find the bytesize of the folder
+
+ FileSystemFolderInfo dirfsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(path, "_data.info")));
+
+ fsfi.ByteSize -= dirfsfi.ByteSize;
+ CurrentSave.BytesLeft += dirfsfi.ByteSize;
+
+ fsfi.SubDirs.Remove(di);
+ string toWrite = JsonConvert.SerializeObject(fsfi, Formatting.Indented);
+
+ File.WriteAllText(Path.Combine(path, "_data.info"), toWrite);
+ }
+
+ public static string SetDOSName(ref THFileInfo file)
+ {
+ file.DOSName = file.Name.ToUpper().Replace("*", "").Replace("+", "").Replace(":", "").Replace(";", "").Replace(" ", "");
+ if (file.DOSName.Contains("."))
{
- string[] dos = newfile.DOSName.Split('.');
+ string[] dos = file.DOSName.Split('.');
if (dos.Count() > 2)
{
@@ -221,30 +269,45 @@ namespace Histacom2.Engine
dos[1] = dos[1].Substring(0, 3);
if (dos[0].Length > 8) dos[0] = dos[0].Substring(0, 6) + "~1";
- newfile.DOSName = dos[0] + "." + dos[1];
+ file.DOSName = dos[0] + "." + dos[1];
}
- else if (newfile.DOSName.Length > 8) newfile.DOSName = newfile.DOSName.Substring(0, 6) + "~1";
+ else if (file.DOSName.Length > 8) file.DOSName = file.DOSName.Substring(0, 6) + "~1";
+ return file.DOSName;
+ }
- if (File.ReadAllText(Path.Combine(path, "_data.info")).Contains(newfile.DOSName)) return;
+ public static void RenameDirectory(string path, string dirname, string newname)
+ {
FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(path, "_data.info")));
- fsfi.Files.Add(newfile);
- fsfi.ByteSize += newfile.ByteSize;
+ THDirInfo di = fsfi.SubDirs.Find((THDirInfo f) => { return f.Name == dirname; });
+ if (di == null) return;
+
+ THDirInfo newDi = di;
+
+ newDi.Name = newname;
+ THFileInfo tmpfi = new THFileInfo();
+ newDi.DOSName = SetDOSName(ref tmpfi);
+ fsfi.SubDirs.Remove(di);
+ fsfi.SubDirs.Add(newDi);
string toWrite = JsonConvert.SerializeObject(fsfi, Formatting.Indented);
File.WriteAllText(Path.Combine(path, "_data.info"), toWrite);
}
- public static void RemoveFileFromDirectory(string path, string filename)
+ public static void RenameFile(string path, string filename, string newname)
{
FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(path, "_data.info")));
THFileInfo fi = fsfi.Files.Find((THFileInfo f) => { return f.Name == filename; });
if (fi == null) return;
- fsfi.ByteSize -= fi.ByteSize;
- CurrentSave.BytesLeft += fi.ByteSize;
+ THFileInfo newFi = fi;
+ newFi.Name = newname;
+
+ THFileInfo tmpfi = new THFileInfo();
+ newFi.DOSName = SetDOSName(ref tmpfi);
fsfi.Files.Remove(fi);
+ fsfi.Files.Add(newFi);
string toWrite = JsonConvert.SerializeObject(fsfi, Formatting.Indented);
File.WriteAllText(Path.Combine(path, "_data.info"), toWrite);
@@ -278,7 +341,7 @@ namespace Histacom2.Engine
}
}
- public static void SaveDirectoryInfo(string parent, string dirname, bool isProtected, string label, bool allowback)
+ public static void SaveDirectoryInfo(string parent, string dirname, bool isProtected, string label, bool allowback, bool updateParent = true)
{
if (File.Exists(Path.Combine(parent, dirname, "_data.info")) && Path.Combine(parent, dirname) != ProfileFileSystemDirectory) return;
Directory.CreateDirectory(Path.Combine(parent, dirname));
@@ -296,15 +359,18 @@ namespace Histacom2.Engine
info.SubDirs = new List<THDirInfo>(256);
info.ByteSize = 0;
- if (parent != ProfileDirectory)
+ if (updateParent == true)
{
- FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(parent, "_data.info")));
- THDirInfo thd = new THDirInfo();
- thd.Name = info.Label;
- thd.DOSName = info.DOSLabel;
- fsfi.SubDirs.Add(thd);
+ if ((parent != ProfileDirectory))
+ {
+ FileSystemFolderInfo fsfi = JsonConvert.DeserializeObject<FileSystemFolderInfo>(File.ReadAllText(Path.Combine(parent, "_data.info")));
+ THDirInfo thd = new THDirInfo();
+ thd.Name = info.Label;
+ thd.DOSName = info.DOSLabel;
+ fsfi.SubDirs.Add(thd);
- File.WriteAllText(Path.Combine(parent, "_data.info"), JsonConvert.SerializeObject(fsfi, Formatting.Indented));
+ File.WriteAllText(Path.Combine(parent, "_data.info"), JsonConvert.SerializeObject(fsfi, Formatting.Indented));
+ }
}
string toWrite = JsonConvert.SerializeObject(info, Formatting.Indented);