Big project cleanup with overhaul of file responsibilities (KISS) and code (DRY, YAGNI)

This commit is contained in:
2026-05-14 11:17:02 +02:00
parent bd6cdeb97b
commit 300c8f5a42
54 changed files with 2030 additions and 1745 deletions
+71 -67
View File
@@ -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}";
}
}