import logging from dataclasses import dataclass from typing import List, Optional from hopper.models.player import Player from hopper.models.product import Product @dataclass class GameSettings: MOVE_DELAY: float = 0.5 # seconds @dataclass class BoardSettings: WIDTH: int = 21 HEIGHT: int = 21 OBSTACLE_COUNT: int = 10 @dataclass class InactivityWatchdogSettings: INACIVITY_TIMEOUT: int = 10 # seconds KICK_TIMEOUT: int = 60 * 10 # seconds TICK_INTERVAL: int = 1 # seconds @dataclass class WSServerSettings: HOST: str = "localhost" PORT: int = 8011 @dataclass class DebugSettings: PRINT_BOARD: bool = False PLAYERS: Optional[List[Player]] = None @dataclass class Settings: game: GameSettings board: BoardSettings inacivity_watchdog: InactivityWatchdogSettings ws_server: WSServerSettings purchase_timeout: int = 10 # seconds log_level: int = logging.INFO products: List[Product] = None debug: Optional[DebugSettings] = None