Source code for pyscoundrel.models.card
"""Card models and enums for PyScoundrel."""
from dataclasses import dataclass
from enum import Enum
from typing import Optional
[docs]
class CardType(Enum):
"""Types of cards in Scoundrel."""
MONSTER = "Monster"
WEAPON = "Weapon"
HEALTH_POTION = "Health Potion"
[docs]
@dataclass(frozen=True)
class Card:
"""A card in Scoundrel, defined by dungeon configuration."""
card_type: CardType
value: int
name: str
card_id: Optional[str] = None
@property
def display_name(self) -> str:
"""Get a display name for the card."""
return self.name
def __str__(self) -> str:
return self.display_name
def __repr__(self) -> str:
if self.card_id:
return f"Card(id={self.card_id}, name={self.name})"
return f"Card(name={self.name})"
[docs]
@staticmethod
def from_dungeon_card(card_id: str, name: str, card_type: CardType, value: int) -> "Card":
"""Create a Card from dungeon card definition."""
return Card(card_type=card_type, value=value, name=name, card_id=card_id)