Files
pywerewolf/pywerwolf/models.py
2021-03-09 22:30:28 +01:00

121 lines
5.3 KiB
Python

import typing as t
import enum
class GamePhase(enum.Enum):
Setup = enum.auto()
GameSetup = enum.auto()
StartOfNight = enum.auto()
NightPhase1 = enum.auto()
NightPhase2 = enum.auto()
NightPhase3 = enum.auto()
NightPhase4 = enum.auto()
NightPhase5 = enum.auto()
NightEnd5 = enum.auto()
ShowDead = enum.auto()
Election = enum.auto()
Discussion = enum.auto()
Accuse = enum.auto()
Poll = enum.auto()
Voting = enum.auto()
PollResult = enum.auto()
Award = enum.auto()
class Roles(enum.Enum):
NoRole = enum.auto()
Villager = enum.auto()
Werewolf = enum.auto()
Seer = enum.auto()
Witch = enum.auto()
Hunter = enum.auto()
Cupid = enum.auto()
Protector = enum.auto()
ParanormalInvestigator = enum.auto()
Lycantrop = enum.auto()
Spy = enum.auto()
Murder = enum.auto()
Pacifist = enum.auto()
OldMan = enum.auto()
Murder = enum.auto()
Leaderwolf = enum.auto()
class Rules(object):
showRoles: bool #`charaktereAufdecken` INT ( 2 ) DEFAULT 0,
passMajor: bool #`buergermeisterWeitergeben` INT ( 2 ) DEFAULT 0,
seerSeesIdentity: bool #`seherSiehtIdentitaet` INT ( 2 ) DEFAULT 1,
roleCount: t.Dict[Roles, int]
#`werwolfzahl` INT ( 5 ) DEFAULT 0 ,
#`hexenzahl` INT ( 5 ) DEFAULT 0 ,
#`seherzahl` INT ( 5 ) DEFAULT 0 ,
#`jaegerzahl` INT ( 5 ) DEFAULT 0 ,
#`amorzahl` INT ( 2 ) DEFAULT 0 ,
#`beschuetzerzahl` INT ( 5 ) DEFAULT 0 ,
#`parErmZahl` INT (5) DEFAULT 0 ,
#`lykantrophenzahl` INT ( 5 ) DEFAULT 0 ,
#`spionezahl` INT ( 5 ) DEFAULT 0 ,
#`idiotenzahl` INT ( 5 ) DEFAULT 0 ,
#`pazifistenzahl` INT ( 5 ) DEFAULT 0 ,
#`altenzahl` INT ( 5 ) DEFAULT 0 ,
#`urwolfzahl` INT ( 5 ) DEFAULT 0 ,
randomSelect: bool #`zufaelligeAuswahl` INT ( 2 ) DEFAULT 0 ,
randomBonus: int #`zufaelligeAuswahlBonus` INT ( 5 ) DEFAULT 0 ,
unanimously: bool #`werwolfeinstimmig` INT ( 2 ) DEFAULT 1 ,
class Player(object):
role: Roles
name: str
leader: bool
alive: bool
ready: bool
popup_text: str
log: t.List[str]
diedInRound: int
accusedBy: "Player"
# `wahlAuf` INT ( 5 ) DEFAULT -1 ,
# `angeklagtVon` INT ( 5 ) DEFAULT -1 ,
# `nachtIdentitaet` INT( 10 ) NULL,
# `buergermeister` INT ( 2 ) DEFAULT 0,
# `hexeHeiltraenke` INT( 10 ) NULL,
# `hexeTodestraenke` INT( 5 ) NULL ,
# `hexenOpfer` INT ( 5 ) DEFAULT -1 ,
# `hexeHeilt` INT (2) DEFAULT 0,
# `beschuetzerLetzteRundeBeschuetzt` INT( 5 ) DEFAULT -1 ,
# `parErmEingesetzt` INT (2) DEFAULT 0 ,
# `verliebtMit` INT ( 5 ) DEFAULT -1 ,
# `jaegerDarfSchiessen` INT (2) DEFAULT 0 ,
# `buergermeisterDarfWeitergeben` INT (2) DEFAULT 0 ,
# `urwolf_anzahl_faehigkeiten` INT ( 5 ) DEFAULT 0,
# `countdownBis` INT (10) DEFAULT 0 ,
# `countdownAb` INT (10) DEFAULT 0 ,
class Game(object):
currentPhase: GamePhase #`spielphase` INT( 5 ) DEFAULT 0,
gameRound: int
rules: Rules
log: t.List[str]
#`werwolfopfer` INT ( 5 ) DEFAULT -1 ,
#`werwolftimer1` INT ( 10 ) DEFAULT 60 ,
#`werwolfzusatz1` INT ( 10 ) DEFAULT 4 ,
#`werwolftimer2` INT ( 10 ) DEFAULT 50 ,
#`werwolfzusatz2` INT ( 10 ) DEFAULT 3 ,
#`dorftimer` INT ( 10 ) DEFAULT 550 ,
#`dorfzusatz` INT ( 10 ) DEFAULT 10 ,
#`dorfstichwahltimer` INT ( 10 ) DEFAULT 200 ,
#`dorfstichwahlzusatz` INT ( 10 ) DEFAULT 5 ,
#`inaktivzeit` INT ( 10 ) DEFAULT 40 ,
#`inaktivzeitzusatz` INT ( 10 ) DEFAULT 0 ,
#`tagestext` TEXT ,
#`nacht` INT ( 5 ) DEFAULT 1 ,
#`log` LONGTEXT ,
#`list_lebe` LONGTEXT,
#`list_lebe_aktualisiert` BIGINT DEFAULT 0,
#`list_tot` LONGTEXT,
#`list_tot_aktualisiert` BIGINT DEFAULT 0,
#`waiting_for_others_time` BIGINT,
#`letzterAufruf` BIGINT