extends Node ## Pure signal hub — notification-only, no state, no callbacks back into singletons. ## ## Subsystems mutate themselves; this bus only spreads the news. Add signals as ## features land — keep this file readable. See docs/architecture.md. # Sim signal sim_tick(tick_number: int) ## Emitted once per sim tick at the current speed. signal speed_changed(new_speed: int) ## Emitted when Sim.current_speed changes; value is Speed enum cast to int. # Phase 2 will add pawn-state signals (selected, deselected, walking, …). # Phase 5 — Designation paint mode. signal designation_added(cell: Vector2i, tool: StringName) ## Ghost placed + job queued. signal designation_cleared(cell: Vector2i) ## Ghost removed (job cancelled). # Phase 8 — Mood system. signal pawn_mood_changed(pawn, mood: float) ## Emitted by Pawn._recompute_mood() whenever mood is recalculated. # Phase 9 — HP + Status system. signal pawn_took_damage(pawn, amount: float) ## Emitted by Pawn.take_damage() after HP is reduced. signal pawn_status_added(pawn, status) ## Emitted by Pawn.add_status() when a new status is appended. signal pawn_status_removed(pawn, status) ## Emitted by Pawn.remove_status_by_id() when a status is dropped. # Phase 12 — Seasons + Weather. signal season_changed(season: StringName) ## Emitted by Clock when current_season() rolls over (Spring → Summer → Autumn → Winter). signal weather_changed(weather: StringName) ## Emitted by Weather autoload when the daily roll resolves to a new weather kind.