51 lines
1.0 KiB
Python
51 lines
1.0 KiB
Python
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
|
|
PURCHASE_START_DELAY: float = 2 # 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 = "127.0.0.1"
|
|
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
|