feat(@projects/@magic-civilization): ✨ add tribe/converged and capital_founded event logging
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
71cc742490
commit
ff4b053ca0
1 changed files with 49 additions and 1 deletions
|
|
@ -148,6 +148,11 @@ func _ready() -> void:
|
|||
EventBus.lair_cleared.connect(_on_lair_cleared_aggregate)
|
||||
EventBus.weather_event_applied.connect(_on_weather_event_applied)
|
||||
EventBus.climate_effect_applied.connect(_on_climate_effect_applied)
|
||||
# p0-34 Freepeople prologue — write chronicle events into events.jsonl so
|
||||
# the batch grader can verify the tribe-founding sequence fires on every
|
||||
# seed (events bullet in .project/objectives/p0-34-...).
|
||||
EventBus.tribe_converged.connect(_on_tribe_converged)
|
||||
EventBus.capital_founded.connect(_on_capital_founded)
|
||||
_improvement_manager = ImprovementManagerScript.new()
|
||||
|
||||
|
||||
|
|
@ -211,6 +216,34 @@ func _on_city_founded(city: Variant, player_index: int) -> void:
|
|||
})
|
||||
|
||||
|
||||
func _on_tribe_converged(
|
||||
player_id: int, centroid: Vector2i, ancestors_merged: int, founding_pop: int
|
||||
) -> void:
|
||||
# p0-34: Rust-side chronicle entry serialized into the batch log so the
|
||||
# grader can assert ≥1 per seed on turn 0 — mirrors the shape emitted by
|
||||
# mc_turn::chronicle::ChronicleEntry::TribeConverged.
|
||||
_append_event({
|
||||
"type": "tribe_converged",
|
||||
"player": player_id,
|
||||
"centroid_q": centroid.x,
|
||||
"centroid_r": centroid.y,
|
||||
"ancestors_merged": ancestors_merged,
|
||||
"founding_pop": founding_pop,
|
||||
})
|
||||
|
||||
|
||||
func _on_capital_founded(player_id: int, position: Vector2i, pop: int) -> void:
|
||||
# p0-34: Rust-side chronicle entry serialized into the batch log — mirrors
|
||||
# mc_turn::chronicle::ChronicleEntry::CapitalFounded.
|
||||
_append_event({
|
||||
"type": "capital_founded",
|
||||
"player": player_id,
|
||||
"pos_q": position.x,
|
||||
"pos_r": position.y,
|
||||
"pop": pop,
|
||||
})
|
||||
|
||||
|
||||
func _on_city_captured(city: Variant, old_owner: int, new_owner: int) -> void:
|
||||
_total_cities_captured += 1
|
||||
if _turn_first_city_captured < 0:
|
||||
|
|
@ -2276,8 +2309,23 @@ func _append_turn_stats(outcome: String) -> void:
|
|||
if int(p.index) == _victory_winner:
|
||||
winner_personality = str(p.get("clan_id") if p.get("clan_id") != null else "")
|
||||
break
|
||||
# p0-34: prefer prologue.display_turn() during the -1 → 0 → 1 cold-open so
|
||||
# the first lines of turn_stats.jsonl carry the prologue turn sequence
|
||||
# (−1, 0, 1) rather than the legacy _turn_count which starts at 1. Once
|
||||
# prologue has resolved, fall back to the normal counter.
|
||||
var effective_turn: int = _turn_count
|
||||
if TurnManager.get("prologue") != null:
|
||||
var drv: RefCounted = TurnManager.prologue
|
||||
if drv != null and drv.has_method("is_prologue") and bool(drv.call("is_prologue")):
|
||||
effective_turn = int(drv.call("display_turn"))
|
||||
elif drv != null and drv.has_method("display_turn"):
|
||||
# Just-crossed-into-Normal case: keep showing the prologue's last
|
||||
# labelled turn (1) on the transition frame so nothing regresses.
|
||||
var dt: int = int(drv.call("display_turn"))
|
||||
if _turn_count < dt:
|
||||
effective_turn = dt
|
||||
var line: Dictionary = {
|
||||
"turn": _turn_count,
|
||||
"turn": effective_turn,
|
||||
"outcome": outcome,
|
||||
"winner_index": _victory_winner,
|
||||
"winner_personality": winner_personality,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue