feat(a1): .NET 8 solution scaffold + Model + OpcodeTable loader
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
33
engine/Age.Engine/Sys4/Paths.cs
Normal file
33
engine/Age.Engine/Sys4/Paths.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
namespace Age.Engine.Sys4;
|
||||
public static class Paths
|
||||
{
|
||||
public static string Repo { get; } = FindRepo();
|
||||
public static string Workspace => Directory.GetParent(Repo)!.FullName;
|
||||
public static string Extracted => Path.Combine(Workspace, "extracted");
|
||||
public static string Data1 => Path.Combine(Extracted, "DATA1");
|
||||
public static string GameDir => Path.Combine(Workspace, "姫狩りダンジョンマイスター");
|
||||
public static string Build => Path.Combine(Repo, "build");
|
||||
public static string OpcodesJson => Path.Combine(Build, "opcodes.json");
|
||||
|
||||
private static string FindRepo()
|
||||
{
|
||||
var d = new DirectoryInfo(AppContext.BaseDirectory);
|
||||
while (d != null && d.Name != "age-reimpl") d = d.Parent;
|
||||
if (d == null) throw new DirectoryNotFoundException(
|
||||
"age-reimpl root not found above " + AppContext.BaseDirectory);
|
||||
return d.FullName;
|
||||
}
|
||||
|
||||
/// name(UPPER).BIN -> path; game-dir loose overrides shadow extracted/DATA1 (mirrors paths.scripts()).
|
||||
public static Dictionary<string, string> Scripts()
|
||||
{
|
||||
var d = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
|
||||
if (Directory.Exists(Data1))
|
||||
foreach (var p in Directory.EnumerateFiles(Data1, "*.BIN"))
|
||||
d[Path.GetFileName(p).ToUpperInvariant()] = p;
|
||||
if (Directory.Exists(GameDir))
|
||||
foreach (var p in Directory.EnumerateFiles(GameDir, "*.BIN"))
|
||||
d[Path.GetFileName(p).ToUpperInvariant()] = p;
|
||||
return d;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user