from __future__ import annotations import sys from datetime import datetime from pathlib import Path PROJECT_ROOT = Path(__file__).resolve().parents[1] if str(PROJECT_ROOT) not in sys.path: sys.path.insert(0, str(PROJECT_ROOT)) from config import load_settings from game.state import CulpritState, GameState from grid_map.storage import write_json def create_new_game(initial_description: str, starting_junction: int = 100) -> Path: settings = load_settings() game_id = datetime.now().strftime("game_%Y%m%d_%H%M%S") game_dir = settings.games_dir / game_id state = GameState( game_id=game_id, turn_number=1, max_turns=settings.max_turns, phase="commissioner_action", initial_description=initial_description, culprit=CulpritState( current_junction=starting_junction, current_disguise=initial_description, remaining_disguise_changes=settings.starting_disguise_changes, ), ) write_json(game_dir / "game_state.json", state.to_dict()) write_json(game_dir / "culprit_private_state.json", state.culprit.__dict__) for subdir in ("notices", "witnesses", "turns", "logs"): (game_dir / subdir).mkdir(parents=True, exist_ok=True) return game_dir if __name__ == "__main__": path = create_new_game("A nervous-looking person in a grey raincoat carrying a red folder.") print(f"Created {path}")