"""板子(角色配置)预设与校验。""" from __future__ import annotations from dataclasses import dataclass, field from .roles import Role @dataclass(frozen=True) class Board: key: str name: str roles: list[Role] = field(default_factory=list) @property def seat_count(self) -> int: return len(self.roles) BOARDS: dict[str, Board] = { "classic12": Board( "classic12", "经典12人局(4狼 4民 预女猎守)", [Role.WEREWOLF] * 4 + [Role.VILLAGER] * 4 + [Role.SEER, Role.WITCH, Role.HUNTER, Role.GUARD], ), "standard10": Board( "standard10", "标准10人局(3狼 3民 预女猎守)", [Role.WEREWOLF] * 3 + [Role.VILLAGER] * 3 + [Role.SEER, Role.WITCH, Role.HUNTER, Role.GUARD], ), "quick9": Board( "quick9", "快节奏9人局(3狼 3民 预女猎)", [Role.WEREWOLF] * 3 + [Role.VILLAGER] * 3 + [Role.SEER, Role.WITCH, Role.HUNTER], ), } def get_board(key: str) -> Board: return BOARDS.get(key, BOARDS["classic12"])