Files
cultivation-world-simulator/src/classes/essence.py
2025-09-10 22:55:31 +08:00

70 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from enum import Enum
from collections import defaultdict
class EssenceType(Enum):
"""
灵气类型
"""
GOLD = "gold" # 金
WOOD = "wood" # 木
WATER = "water" # 水
FIRE = "fire" # 火
EARTH = "earth" # 土
def __str__(self) -> str:
"""返回灵气类型的中文名称"""
return essence_names.get(self, self.value)
@classmethod
def from_str(cls, essence_str: str) -> 'EssenceType':
"""
从字符串创建EssenceType实例
Args:
essence_str: 灵气的字符串表示,如 "", "", "", "", ""
Returns:
对应的EssenceType枚举值
Raises:
ValueError: 如果字符串不匹配任何已知的灵气类型
"""
# 首先尝试匹配中文名称
for essence_type, chinese_name in essence_names.items():
if chinese_name == essence_str:
return essence_type
# 然后尝试匹配英文值
for essence_type in cls:
if essence_type.value == essence_str:
return essence_type
raise ValueError(f"Unknown essence type: {essence_str}")
essence_names = {
EssenceType.GOLD: "",
EssenceType.WOOD: "",
EssenceType.WATER: "",
EssenceType.FIRE: "",
EssenceType.EARTH: ""
}
class Essence():
"""
灵气用来描述某个region的灵气情况。
灵气分为五种:金木水火土(先这些,之后加新的)
每个region有五种灵气每种灵气有不同的浓度。
浓度从0~10。
"""
def __init__(self, density: dict[EssenceType, int]):
self.density = defaultdict(int)
for essence_type, density in density.items():
self.density[essence_type] = density
def get_density(self, essence_type: EssenceType) -> int:
return self.density[essence_type]
def set_density(self, essence_type: EssenceType, density: int):
self.density[essence_type] = density