57 lines
1.4 KiB
C#
57 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using Godot;
|
|
|
|
public class FileHandler()
|
|
{
|
|
public static void CreateScriptDirectory()
|
|
{
|
|
DirAccess.MakeDirRecursiveAbsolute("user://scripts");
|
|
}
|
|
|
|
public static void SaveProgram(string filename, string content)
|
|
{
|
|
CreateScriptDirectory();
|
|
string path = $"user://scripts/{filename}.dsl";
|
|
|
|
FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Write);
|
|
file.StoreString(content);
|
|
}
|
|
|
|
public static List<string> LoadProgramNames()
|
|
{
|
|
CreateScriptDirectory();
|
|
List<string> programs = new List<string>();
|
|
|
|
DirAccess dir = DirAccess.Open("user://scripts");
|
|
if (dir == null)
|
|
return programs;
|
|
|
|
dir.ListDirBegin();
|
|
while (true)
|
|
{
|
|
string fileName = dir.GetNext();
|
|
if (fileName == "")
|
|
break;
|
|
|
|
if (!dir.CurrentIsDir() && fileName.EndsWith(".dsl"))
|
|
{
|
|
programs.Add(fileName.Replace(".dsl", ""));
|
|
}
|
|
}
|
|
dir.ListDirEnd();
|
|
|
|
return programs;
|
|
}
|
|
|
|
public static string LoadProgram(string name)
|
|
{
|
|
CreateScriptDirectory();
|
|
string path = $"user://scripts/{name}.dsl";
|
|
|
|
if (!FileAccess.FileExists(path))
|
|
return "";
|
|
|
|
FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
|
|
return file.GetAsText();
|
|
}
|
|
} |