feat: PipBoy rename, /lore tab fix, run.py status check loop, crash test script
This commit is contained in:
+18
-1
@@ -67,7 +67,10 @@ def run(config_path: str | None = None):
|
||||
# Initialiser le world_state si vide
|
||||
_init_world_state(SESSION_ID, day)
|
||||
|
||||
STATUS_CHECK_INTERVAL = 5 # vérifier le statut DB toutes les N ticks
|
||||
|
||||
try:
|
||||
tick_count = 0
|
||||
while True:
|
||||
tick_engine.process_tick(SESSION_ID, day, current_tick, effective_mode)
|
||||
db.update_session_tick(SESSION_ID, day, current_tick)
|
||||
@@ -75,9 +78,23 @@ def run(config_path: str | None = None):
|
||||
if tick_sleep > 0:
|
||||
time.sleep(tick_sleep)
|
||||
|
||||
# Vérification statut + reset DB (permet stop/pause/reset depuis le dashboard)
|
||||
tick_count += 1
|
||||
if tick_count % STATUS_CHECK_INTERVAL == 0:
|
||||
live = db.get_session(SESSION_ID)
|
||||
if live and live["status"] != "active":
|
||||
print(f"\n[DASH] Statut changé → '{live['status']}' — arrêt propre.")
|
||||
print(f" Dernier état : Jour {day}, Tick {current_tick}h")
|
||||
return
|
||||
# Détecter reset jour/tick : si la DB est en arrière de >1 jour, c'est un reset intentionnel
|
||||
if live and live["current_day"] < day - 1:
|
||||
print(f"\n[DASH] Reset détecté (DB: J{live['current_day']} vs sim: J{day}) — relecture position.")
|
||||
day = live["current_day"]
|
||||
current_tick = live["current_tick"]
|
||||
|
||||
day, current_tick = tick_engine.next_tick(day, current_tick)
|
||||
|
||||
# Début d'un nouveau jour : hot-reload config depuis le JSON (permet les changements dashboard)
|
||||
# Début d'un nouveau jour : hot-reload config depuis le JSON
|
||||
if current_tick == 0:
|
||||
cfg.load(config_path, session_id=SESSION_ID)
|
||||
effective_mode = cfg.mode() or db_mode
|
||||
|
||||
Reference in New Issue
Block a user