Expansion phase: settlements — the North joins the world
Runs 5-6 logged in FINDINGS.md (soul layer validated: nature debris 0.000 vs selfish 0.225 after two years; the ledger works). Towns are now real spatial structure: TownDef seeds (South at the bottom of the map, North at the top), NPCs affiliate with a home town, communal duty serves your own settlement (buildings are town-tagged, founding uses the town centroid and per-town shelter caps), and each town raises its own shelters and granary. Generational (North) soul profile added — temperament only until the knowledge system lands. Map shows town labels; rosters and CSVs carry town columns. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -72,6 +72,14 @@ public partial class Visualization : Node2D
|
||||
DrawRect(new Rect2(p.X, p.Y, CellPixels, CellPixels), c);
|
||||
}
|
||||
|
||||
// --- Map: town labels --------------------------------------------
|
||||
foreach (var town in _gm.Towns)
|
||||
{
|
||||
var tp = MapPos(town.Center);
|
||||
DrawString(font, tp + new Vector2(-20f, -14f), town.Name.ToUpper(),
|
||||
fontSize: 13, modulate: TextDim);
|
||||
}
|
||||
|
||||
// --- Map: buildings ----------------------------------------------
|
||||
for (int i = 0; i < _gm.Buildings.Count; i++)
|
||||
{
|
||||
@@ -118,7 +126,7 @@ public partial class Visualization : Node2D
|
||||
for (int i = 0; i < _gm.Npcs.Count; i++)
|
||||
{
|
||||
var npc = _gm.Npcs[i];
|
||||
y += 22f;
|
||||
y += 20f;
|
||||
|
||||
if (npc.Soul.Type == SoulType.Selfish)
|
||||
DrawCircle(new Vector2(PanelX + 24, y - 5f), 6f, new Color(0.75f, 0.15f, 0.15f));
|
||||
@@ -142,7 +150,7 @@ public partial class Visualization : Node2D
|
||||
for (int i = 0; i < _gm.Buildings.Count; i++)
|
||||
{
|
||||
var b = _gm.Buildings[i];
|
||||
y += 20f;
|
||||
y += 18f;
|
||||
string status = b.IsRuined ? "RUIN"
|
||||
: !b.IsComplete
|
||||
? $"building: {b.Stages[b.CurrentStage].Name} {b.StageProgress * 100,3:0}%"
|
||||
@@ -151,7 +159,7 @@ public partial class Visualization : Node2D
|
||||
: $"cond {b.Condition * 100,3:0}% wood {b.UpkeepStock,4:0.0}/{Building.UpkeepStockCap:0}" +
|
||||
$" mods {b.Modules}/{Building.ModuleCap} burn {b.DailyBurn:0.0}/day";
|
||||
DrawString(font, new Vector2(PanelX + 36, y),
|
||||
$"{i + 1} {status}", fontSize: 13,
|
||||
$"{i + 1} {b.Town,-5} {status}", fontSize: 12,
|
||||
modulate: b.IsRuined ? TextDim : TextMain);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user