b451f83174
Captures the pre-Godot-port state of the codebase. This is the rollback anchor for the Godot port (M0 of theriapolis-rpg-implementation-plan-godot-port.md). All Phase 0 through Phase 6.5 work is included; Phase 7 is in flight. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
101 lines
6.3 KiB
C#
101 lines
6.3 KiB
C#
using Theriapolis.Tools.Commands;
|
|
|
|
if (args.Length == 0)
|
|
{
|
|
PrintHelp();
|
|
return 0;
|
|
}
|
|
|
|
return args[0].ToLowerInvariant() switch
|
|
{
|
|
"hello" => Hello(),
|
|
"worldgen-dump" => WorldgenDump.Run(args[1..]),
|
|
"settlement-report" => SettlementReport.Run(args[1..]),
|
|
"tile-inspect" => TileInspect.Run(args[1..]),
|
|
"tactical-dump" => TacticalDump.Run(args[1..]),
|
|
"tile-analyze" => TileAnalyze.Run(args[1..]),
|
|
"content-validate" => ContentValidate.Run(args[1..]),
|
|
"character-roll" => CharacterRoll.Run(args[1..]),
|
|
"combat-duel" => CombatDuel.Run(args[1..]),
|
|
"settlement-render" => SettlementRender.Run(args[1..]),
|
|
"dialogue-validate" => DialogueValidate.Run(args[1..]),
|
|
"quest-validate" => QuestValidate.Run(args[1..]),
|
|
"dungeon-render" => DungeonRender.Run(args[1..]),
|
|
_ => Unknown(args[0]),
|
|
};
|
|
|
|
static int Hello()
|
|
{
|
|
var asm = typeof(Theriapolis.Core.C).Assembly;
|
|
var ver = asm.GetName().Version?.ToString() ?? "0.0.0.0";
|
|
Console.WriteLine($"Theriapolis Tools — Core version {ver}");
|
|
return 0;
|
|
}
|
|
|
|
static int Unknown(string cmd)
|
|
{
|
|
Console.Error.WriteLine($"Unknown command: {cmd}");
|
|
PrintHelp();
|
|
return 1;
|
|
}
|
|
|
|
static void PrintHelp()
|
|
{
|
|
Console.WriteLine("Theriapolis Tools");
|
|
Console.WriteLine();
|
|
Console.WriteLine("Commands:");
|
|
Console.WriteLine(" hello Print version.");
|
|
Console.WriteLine(" worldgen-dump --seed <n> Run full pipeline and export biome+feature map PNG.");
|
|
Console.WriteLine(" --out <file.png>");
|
|
Console.WriteLine(" [--data-dir <dir>]");
|
|
Console.WriteLine(" [--show-violations]");
|
|
Console.WriteLine(" settlement-report --seed <n> Run full pipeline and print settlement report.");
|
|
Console.WriteLine(" [--data-dir <dir>]");
|
|
Console.WriteLine(" tile-inspect --seed <n> Print polylines/bridges near a reported tile.");
|
|
Console.WriteLine(" --tile X,Y (for debugging bug reports from the in-game overlay)");
|
|
Console.WriteLine(" [--radius N] (default 3)");
|
|
Console.WriteLine(" [--data-dir <dir>]");
|
|
Console.WriteLine(" tactical-dump --seed <n> Run full pipeline and export a tactical chunk PNG.");
|
|
Console.WriteLine(" --chunk cx,cy");
|
|
Console.WriteLine(" [--grid N] (NxN chunks centered on cx,cy; default 1)");
|
|
Console.WriteLine(" [--out <file.png>]");
|
|
Console.WriteLine(" [--data-dir <dir>]");
|
|
Console.WriteLine(" tile-analyze --dir <path> Vet a directory of 32x32 tile PNGs (typically");
|
|
Console.WriteLine(" a Pixellab tiles_pro download). Reports per-tile");
|
|
Console.WriteLine(" [--sheet <out.png>] border edges, opaque %, and shadow gradient scores.");
|
|
Console.WriteLine(" [--shadow-threshold N] Optionally writes a labeled contact sheet.");
|
|
Console.WriteLine(" [--upscale N] See theriapolis-tile-generation-handoff.md.");
|
|
Console.WriteLine(" content-validate Load every Phase 5 JSON content file and run");
|
|
Console.WriteLine(" [--data-dir <dir>] per-file + cross-file referential checks. CI gate.");
|
|
Console.WriteLine(" character-roll Build a sample character via CharacterBuilder and");
|
|
Console.WriteLine(" [--seed N] dump the resulting stat block. Useful for verifying");
|
|
Console.WriteLine(" [--clade ID] determinism, balance sweeps, and content edits.");
|
|
Console.WriteLine(" [--species ID] Defaults: canidae / wolf / fangsworn / pack_raised.");
|
|
Console.WriteLine(" [--class ID]");
|
|
Console.WriteLine(" [--background ID]");
|
|
Console.WriteLine(" [--name STR]");
|
|
Console.WriteLine(" [--roll] Use 4d6-drop-lowest (otherwise Standard Array).");
|
|
Console.WriteLine(" [--ms-override N] Pin the roll seed for reproducibility.");
|
|
Console.WriteLine(" combat-duel Run a deterministic scripted duel between two");
|
|
Console.WriteLine(" [--seed N] combatants and print the encounter log. Combatants");
|
|
Console.WriteLine(" [--a SPEC] may be NPC template ids (\"brigand_footpad\", \"wolf\")");
|
|
Console.WriteLine(" [--b SPEC] or character specs (\"char:canidae:wolf:fangsworn:");
|
|
Console.WriteLine(" [--rounds N] pack_raised\"). Defaults brigand_footpad vs wolf at");
|
|
Console.WriteLine(" seed 42 with a 20-round cap.");
|
|
Console.WriteLine(" settlement-render Phase 6 M0 — stamp a settlement and export PNG.");
|
|
Console.WriteLine(" [--seed N] Defaults seed=12345, first Tier-1 anchor.");
|
|
Console.WriteLine(" [--settlement S] Anchor name (\"millhaven\") or numeric id.");
|
|
Console.WriteLine(" [--pad N] Extra chunks of context around the settlement.");
|
|
Console.WriteLine(" [--out file.png] Output path.");
|
|
Console.WriteLine(" [--data-dir <dir>]");
|
|
Console.WriteLine(" dialogue-validate Phase 6 M3 — load every dialogues/*.json and run");
|
|
Console.WriteLine(" [--data-dir <dir>] structural + reachability checks. CI gate.");
|
|
Console.WriteLine(" quest-validate Phase 6 M4 — load every quests/*.json and run");
|
|
Console.WriteLine(" [--data-dir <dir>] structural + reachability checks. CI gate.");
|
|
Console.WriteLine(" dungeon-render Phase 7 M0 — render a single room template's");
|
|
Console.WriteLine(" --template ID ASCII grid to PNG. M1 will add full procedural");
|
|
Console.WriteLine(" --out file.png --seed/--poi assembly mode.");
|
|
Console.WriteLine(" [--cell N] (px per tactical tile; default 16)");
|
|
Console.WriteLine(" [--data-dir <dir>]");
|
|
}
|