109 lines
2.8 KiB
Python
109 lines
2.8 KiB
Python
"""
|
||
核心枚举类定义
|
||
"""
|
||
from enum import Enum, auto
|
||
|
||
|
||
class UnitType(Enum):
|
||
"""单位类型枚举"""
|
||
INFANTRY = auto() # 步兵
|
||
TANK = auto() # 坦克
|
||
ARTILLERY = auto() # 火炮
|
||
FIGHTER = auto() # 战斗机
|
||
BOMBER = auto() # 轰炸机
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
|
||
class LineType(Enum):
|
||
"""战线类型枚举"""
|
||
PLAYER1_SUPPORT = auto() # 玩家1支援线
|
||
FRONT = auto() # 共用前线
|
||
PLAYER2_SUPPORT = auto() # 玩家2支援线
|
||
|
||
def __str__(self):
|
||
return self.name
|
||
|
||
|
||
class GamePhase(Enum):
|
||
"""游戏阶段枚举(简化版)"""
|
||
PLAYER_TURN = auto() # 玩家回合(可执行任何动作)
|
||
OPERATION = auto() # 操作阶段(用于向后兼容)
|
||
GAME_END = auto() # 游戏结束
|
||
|
||
|
||
class Nation(Enum):
|
||
"""国家枚举"""
|
||
# 主要国家 (Major)
|
||
GERMANY = "Germany"
|
||
USA = "USA"
|
||
UK = "UK"
|
||
JAPAN = "Japan"
|
||
SOVIET = "Soviet"
|
||
|
||
# 小国 (Minor)
|
||
FINLAND = "Finland"
|
||
POLAND = "Poland"
|
||
FRANCE = "France"
|
||
ITALY = "Italy"
|
||
|
||
def __str__(self):
|
||
return self.value
|
||
|
||
@classmethod
|
||
def get_majors(cls):
|
||
"""获取所有主要国家"""
|
||
return [cls.GERMANY, cls.USA, cls.UK, cls.JAPAN, cls.SOVIET]
|
||
|
||
@classmethod
|
||
def get_minors(cls):
|
||
"""获取所有小国"""
|
||
return [cls.FINLAND, cls.POLAND, cls.FRANCE, cls.ITALY]
|
||
|
||
@classmethod
|
||
def get_all(cls):
|
||
"""获取所有国家"""
|
||
return cls.get_majors() + cls.get_minors()
|
||
|
||
|
||
class Rarity(Enum):
|
||
"""卡牌稀有度枚举"""
|
||
SPECIAL = 0 # 0级 - 特殊卡牌,不可带入初始卡组
|
||
ELITE = 1 # 1级 - 精英,整个卡组只能带1张
|
||
RARE = 2 # 2级 - 稀有,整个卡组最多带2张
|
||
UNCOMMON = 3 # 3级 - 罕见,整个卡组最多带3张
|
||
COMMON = 4 # 4级 - 普通,整个卡组最多带4张
|
||
|
||
def __str__(self):
|
||
return f"{self.value}级"
|
||
|
||
def max_copies_in_deck(self) -> int:
|
||
"""返回该稀有度在卡组中允许的最大数量"""
|
||
if self == Rarity.SPECIAL:
|
||
return 0 # 不能带入初始卡组
|
||
return self.value
|
||
|
||
|
||
class CardType(Enum):
|
||
"""卡牌类型枚举"""
|
||
UNIT_INFANTRY = "Infantry"
|
||
UNIT_TANK = "Tank"
|
||
UNIT_ARTILLERY = "Artillery"
|
||
UNIT_FIGHTER = "Fighter"
|
||
UNIT_BOMBER = "Bomber"
|
||
ORDER = "Order"
|
||
COUNTER = "Counter"
|
||
|
||
def __str__(self):
|
||
return self.value
|
||
|
||
def is_unit_card(self) -> bool:
|
||
"""判断是否为单位卡"""
|
||
return self in [
|
||
CardType.UNIT_INFANTRY,
|
||
CardType.UNIT_TANK,
|
||
CardType.UNIT_ARTILLERY,
|
||
CardType.UNIT_FIGHTER,
|
||
CardType.UNIT_BOMBER
|
||
] |