Big project cleanup with overhaul of file responsibilities (KISS) and code (DRY, YAGNI)
This commit is contained in:
+71
-67
@@ -1,88 +1,92 @@
|
||||
using System.Collections.Generic;
|
||||
using Godot;
|
||||
|
||||
public class FileHandler
|
||||
public static class FileHandler
|
||||
{
|
||||
private const string ScriptDirectory = "user://scripts";
|
||||
private const string ScriptExtension = ".json";
|
||||
private const string ScriptDirectory = "user://scripts";
|
||||
private const string ScriptExtension = ".json";
|
||||
|
||||
public static void CreateScriptDirectory()
|
||||
{
|
||||
DirAccess.MakeDirRecursiveAbsolute(ScriptDirectory);
|
||||
}
|
||||
public static void CreateScriptDirectory()
|
||||
{
|
||||
DirAccess.MakeDirRecursiveAbsolute(ScriptDirectory);
|
||||
}
|
||||
|
||||
public static void SaveProgram(string filename, string content)
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
string path = GetProgramPath(filename);
|
||||
public static void SaveProgram(string filename, string content)
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
string path = GetProgramPath(filename);
|
||||
|
||||
FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Write);
|
||||
file.StoreString(content);
|
||||
}
|
||||
FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Write);
|
||||
if (file == null) return;
|
||||
|
||||
public static List<string> LoadProgramNames()
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
List<string> programs = new List<string>();
|
||||
file.StoreString(content);
|
||||
file.Flush();
|
||||
}
|
||||
|
||||
DirAccess dir = DirAccess.Open(ScriptDirectory);
|
||||
if (dir == null)
|
||||
{
|
||||
return programs;
|
||||
}
|
||||
public static List<string> LoadProgramNames()
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
List<string> programs = new List<string>();
|
||||
|
||||
dir.ListDirBegin();
|
||||
while (true)
|
||||
{
|
||||
string fileName = dir.GetNext();
|
||||
if (fileName == "")
|
||||
break;
|
||||
DirAccess dir = DirAccess.Open(ScriptDirectory);
|
||||
if (dir == null)
|
||||
{
|
||||
return programs;
|
||||
}
|
||||
|
||||
if (!dir.CurrentIsDir() && fileName.EndsWith(ScriptExtension))
|
||||
{
|
||||
programs.Add(fileName.Replace(ScriptExtension, ""));
|
||||
}
|
||||
}
|
||||
dir.ListDirEnd();
|
||||
dir.ListDirBegin();
|
||||
while (true)
|
||||
{
|
||||
string fileName = dir.GetNext();
|
||||
if (fileName == "") break;
|
||||
|
||||
return programs;
|
||||
}
|
||||
if (dir.CurrentIsDir()) continue;
|
||||
if (!fileName.EndsWith(ScriptExtension)) continue;
|
||||
|
||||
public static string LoadProgram(string name)
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
string path = GetProgramPath(name);
|
||||
programs.Add(fileName.Replace(ScriptExtension, ""));
|
||||
}
|
||||
dir.ListDirEnd();
|
||||
|
||||
if (!FileAccess.FileExists(path))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return programs;
|
||||
}
|
||||
|
||||
FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
|
||||
return file.GetAsText();
|
||||
}
|
||||
public static string LoadProgram(string name)
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
string path = GetProgramPath(name);
|
||||
|
||||
public static bool DeleteProgram(string name)
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
string path = GetProgramPath(name);
|
||||
if (!FileAccess.FileExists(path))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
if (!FileAccess.FileExists(path))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
|
||||
if (file == null) return "";
|
||||
|
||||
DirAccess dir = DirAccess.Open(ScriptDirectory);
|
||||
if (dir == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return file.GetAsText();
|
||||
}
|
||||
|
||||
return dir.Remove($"{name}{ScriptExtension}") == Error.Ok;
|
||||
}
|
||||
public static bool DeleteProgram(string name)
|
||||
{
|
||||
CreateScriptDirectory();
|
||||
string path = GetProgramPath(name);
|
||||
|
||||
private static string GetProgramPath(string filename)
|
||||
{
|
||||
return $"{ScriptDirectory}/{filename}{ScriptExtension}";
|
||||
}
|
||||
if (!FileAccess.FileExists(path))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
DirAccess dir = DirAccess.Open(ScriptDirectory);
|
||||
if (dir == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return dir.Remove($"{name}{ScriptExtension}") == Error.Ok;
|
||||
}
|
||||
|
||||
private static string GetProgramPath(string filename)
|
||||
{
|
||||
return $"{ScriptDirectory}/{filename}{ScriptExtension}";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user