Mi2dRPGamEng/engine/dev_config.py

36 lines
1.1 KiB
Python

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