You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fabula/model.py

70 lines
1.4 KiB

from dataclasses import dataclass
from enums import Affinity, Element, CharacterType, Visibility, CombatSide
from jsonable import JsonableDataclassArgs, Jsonable, JsonableParentArgs
@dataclass(**JsonableDataclassArgs)
class Target(Jsonable):
index: int
key: str
name: str
@dataclass(**JsonableParentArgs)
class Effect(Jsonable):
pass
@dataclass(**JsonableParentArgs)
class Action(Jsonable):
pass
@dataclass(**JsonableDataclassArgs)
class Clock(Jsonable):
name: str
current: int
maximum: int
@dataclass(**JsonableDataclassArgs)
class Character(Jsonable):
name: str
hp: int
max_hp: int
mp: int
max_mp: int
ip: int
max_ip: int
sp: int | None
df: int
mdf: int
dr: int
statuses: frozenset[str]
affinities: tuple[tuple[Element, Affinity], ...]
turns_left: int
max_turns: int
visibility: Visibility
character_type: CharacterType
side: CombatSide
color: str | None
thumbnail: str | None
access_key: str
player_discord_id: str | None
player_name: str | None
@dataclass(**JsonableDataclassArgs)
class CombatStatus(Jsonable):
round_number: int
fp_spent: int
up_spent: int
clocks: tuple[Clock, ...]
characters: tuple[Character, ...]
log: tuple[Action, ...]
starting_side: CombatSide | None
active_side: CombatSide | None
active_combatant: int | None