90 lines
2.8 KiB
Python

from typing import Optional
from .collection import CollectionAttr
from .start import StartAttr
from .action import ActionAttr
from .progress import ProgressAttr
from .constants import CardColor, CardType, FrameType
class Card:
name: str
type: CardType
level: int
color: Optional[CardColor]
# Will automatic generate
text: str
start_attr: Optional[StartAttr]
progress_attr: Optional[ProgressAttr]
action_attr: Optional[ActionAttr]
frame_attr: Optional[FrameType]
atk_value: Optional[int]
def_value: Optional[int]
stk_value: Optional[int]
flavor_text: Optional[str]
collection_attr: CollectionAttr
def __init__(
self,
name: str,
type: CardType,
level: int,
color: Optional[CardColor],
start_attr: Optional[StartAttr],
progress_attr: Optional[ProgressAttr],
action_attr: Optional[ActionAttr],
frame_attr: Optional[FrameType],
atk_value: Optional[int],
def_value: Optional[int],
stk_value: Optional[int],
flavor_text: Optional[str],
collection_attr: CollectionAttr,
) -> None:
self.name = name
self.type = type
self.level = level
self.color = color
self.start_attr = start_attr
self.progress_attr = progress_attr
self.action_attr = action_attr
self.frame_attr = frame_attr
self.frame_attr = frame_attr
self.atk_value = atk_value
self.def_value = def_value
self.stk_value = stk_value
self.flavor_text = flavor_text
self.collection_attr = collection_attr
if self.start_attr:
self.text = self.start_attr.__text__()
elif self.action_attr:
self.text = self.action_attr.__text__()
elif self.frame_attr:
self.text = self.frame_attr.value
elif self.progress_attr:
self.text = self.progress_attr.__text__()
def __json__(self):
return {
"name": self.name,
"type": self.type.value,
"level": self.level,
"color": self.color.value if self.color else None,
"text": self.text,
"start_attr": self.start_attr.__json__() if self.start_attr else None,
"progress_attr": self.progress_attr.__json__()
if self.progress_attr
else None,
"action_attr": self.action_attr.__json__() if self.action_attr else None,
"frame_attr": self.frame_attr.value if self.frame_attr else None,
"atk": self.atk_value if self.atk_value else None,
"def": self.def_value if self.def_value else None,
"stk": self.stk_value if self.stk_value else None,
"flavor_text": self.flavor_text if self.flavor_text else None,
"collection_attr": self.collection_attr.__json__(),
}