Files

41 lines
1.0 KiB
Python

"""板子(角色配置)预设与校验。"""
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"])