28 lines
926 B
Python
28 lines
926 B
Python
from __future__ import annotations
|
||
from typing import TYPE_CHECKING, Union
|
||
from src.classes.death_reason import DeathReason
|
||
|
||
if TYPE_CHECKING:
|
||
from src.classes.world import World
|
||
from src.classes.avatar import Avatar
|
||
|
||
def handle_death(world: World, avatar: Avatar, reason: Union[str, DeathReason] = DeathReason.UNKNOWN) -> None:
|
||
"""
|
||
处理角色死亡的统一入口。
|
||
负责将角色标记为死亡,清理行动队列,但保留角色数据。
|
||
|
||
Args:
|
||
world: 世界对象
|
||
avatar: 死亡的角色
|
||
reason: 死亡原因(DeathReason枚举或字符串)
|
||
"""
|
||
# 如果传入的是枚举,转为字符串值
|
||
reason_str = reason.value if isinstance(reason, DeathReason) else str(reason)
|
||
|
||
# 标记为死亡(软删除)
|
||
avatar.set_dead(reason_str, world.month_stamp)
|
||
|
||
# 可以在这里触发其他逻辑,比如检查是否有继承人等
|
||
|
||
|