refactor new avatars
This commit is contained in:
@@ -50,13 +50,20 @@ class Event:
|
||||
|
||||
class NullEvent:
|
||||
"""
|
||||
空事件单例类
|
||||
空事件单例类,保持与 Event 相同的最小接口,避免调用方访问属性时报错。
|
||||
"""
|
||||
_instance = None
|
||||
|
||||
def __new__(cls):
|
||||
if cls._instance is None:
|
||||
cls._instance = super().__new__(cls)
|
||||
# 初始化一次即可
|
||||
cls._instance.month_stamp = MonthStamp(0)
|
||||
cls._instance.content = ""
|
||||
cls._instance.related_avatars = None
|
||||
cls._instance.is_major = False
|
||||
cls._instance.is_story = False
|
||||
cls._instance.id = "NULL_EVENT"
|
||||
return cls._instance
|
||||
|
||||
def __str__(self) -> str:
|
||||
@@ -65,6 +72,17 @@ class NullEvent:
|
||||
def __bool__(self) -> bool:
|
||||
"""使NullEvent实例在布尔上下文中为False"""
|
||||
return False
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""保持序列化接口"""
|
||||
return {
|
||||
"month_stamp": int(self.month_stamp),
|
||||
"content": self.content,
|
||||
"related_avatars": self.related_avatars,
|
||||
"is_major": self.is_major,
|
||||
"is_story": self.is_story,
|
||||
"id": self.id,
|
||||
}
|
||||
|
||||
# 全局单例实例
|
||||
NULL_EVENT = NullEvent()
|
||||
|
||||
@@ -18,7 +18,7 @@ from src.sim.simulator import Simulator
|
||||
from src.classes.world import World
|
||||
from src.classes.calendar import Month, Year, create_month_stamp
|
||||
from src.run.create_map import create_cultivation_world_map, add_sect_headquarters
|
||||
from src.sim.new_avatar import make_avatars as _new_make, get_new_avatar_with_config
|
||||
from src.sim.new_avatar import make_avatars as _new_make, create_avatar_from_request
|
||||
from src.utils.config import CONFIG
|
||||
from src.classes.sect import sects_by_id
|
||||
from src.classes.technique import techniques_by_id
|
||||
@@ -804,7 +804,7 @@ def create_avatar(req: CreateAvatarRequest):
|
||||
|
||||
personas = None
|
||||
if req.persona_ids:
|
||||
personas = req.persona_ids # get_new_avatar_with_config 支持 int 列表
|
||||
personas = req.persona_ids # create_avatar_from_request 支持 int 列表
|
||||
|
||||
have_name = False
|
||||
final_name = None
|
||||
@@ -826,9 +826,9 @@ def create_avatar(req: CreateAvatarRequest):
|
||||
# 创建角色
|
||||
# 注意:level 如果是境界枚举值对应的等级范围,前端可能传的是 realm index,后端需要转换吗?
|
||||
# 简单起见,我们假设 level 传的是具体等级 (1-120) 或者 realm index * 30 + 1
|
||||
# get_new_avatar_with_config 接收 level (int)
|
||||
# create_avatar_from_request 接收 level (int)
|
||||
|
||||
avatar = get_new_avatar_with_config(
|
||||
avatar = create_avatar_from_request(
|
||||
world,
|
||||
world.month_stamp,
|
||||
name=final_name,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ import asyncio
|
||||
|
||||
from src.classes.calendar import Month, Year, MonthStamp
|
||||
from src.classes.avatar import Avatar, Gender
|
||||
from src.sim.new_avatar import get_new_avatar_from_mortal
|
||||
from src.sim.new_avatar import create_random_mortal
|
||||
from src.classes.age import Age
|
||||
from src.classes.cultivation import Realm
|
||||
from src.classes.world import World
|
||||
@@ -104,7 +104,7 @@ class Simulator:
|
||||
age = random.randint(16, 60)
|
||||
gender = random.choice(list(Gender))
|
||||
name = get_random_name(gender)
|
||||
new_avatar = get_new_avatar_from_mortal(self.world, self.world.month_stamp, name, Age(age, Realm.Qi_Refinement))
|
||||
new_avatar = create_random_mortal(self.world, self.world.month_stamp, name, Age(age, Realm.Qi_Refinement))
|
||||
self.world.avatar_manager.avatars[new_avatar.id] = new_avatar
|
||||
event = Event(self.world.month_stamp, f"{new_avatar.name}晋升为修士了。", related_avatars=[new_avatar.id])
|
||||
events.append(event)
|
||||
|
||||
Reference in New Issue
Block a user