from __future__ import annotations import configparser from dataclasses import dataclass from pathlib import Path @dataclass class DevConfig: """Whether dev-mode cheats (currently: engine/dev_tools.py's item spawner) are available - persisted the same way KeyBindings is (engine/config.py), so toggling it in-game via main.py's toggle_dev_mode action sticks across restarts instead of resetting to off. """ enabled: bool = False @classmethod def load(cls, path: Path) -> "DevConfig": if not path.exists(): return cls() parser = configparser.ConfigParser() parser.read(path) enabled = parser.getboolean("dev", "enabled", fallback=False) return cls(enabled=enabled) def save(self, path: Path) -> None: parser = configparser.ConfigParser() parser.add_section("dev") parser.set("dev", "enabled", str(self.enabled).lower()) path.parent.mkdir(parents=True, exist_ok=True) with path.open("w") as handle: parser.write(handle) def toggle(self) -> None: self.enabled = not self.enabled