This commit is contained in:
bridge
2026-01-06 23:01:25 +08:00
parent db6df82ea8
commit 8a23dc5576
19 changed files with 222 additions and 278 deletions

View File

@@ -12,7 +12,6 @@ from src.classes.avatar.core import (
from src.classes.avatar.info_presenter import (
get_avatar_info,
get_avatar_structured_info,
get_avatar_hover_info,
get_avatar_expanded_info,
get_other_avatar_info,
)

View File

@@ -289,10 +289,6 @@ class Avatar(
from src.classes.avatar.info_presenter import get_avatar_structured_info
return get_avatar_structured_info(self)
def get_hover_info(self) -> list[str]:
from src.classes.avatar.info_presenter import get_avatar_hover_info
return get_avatar_hover_info(self)
def get_expanded_info(
self,
co_region_avatars: Optional[List["Avatar"]] = None,

View File

@@ -228,90 +228,6 @@ def get_avatar_structured_info(avatar: "Avatar") -> dict:
return info
def get_avatar_hover_info(avatar: "Avatar") -> list[str]:
"""
返回用于前端悬浮提示的多行信息。
"""
def add_kv(lines: list[str], key: str, value: object) -> None:
lines.append(f"{key}: {value}")
def add_section(lines: list[str], title: str, body: list[str]) -> None:
lines.append("")
lines.append(f"{title}:")
lines.extend(body)
lines: list[str] = []
# 基础信息
if avatar.nickname:
add_kv(lines, "绰号", f"{avatar.nickname.value}")
add_kv(lines, "性别", avatar.gender)
add_kv(lines, "年龄", avatar.age)
add_kv(lines, "外貌", avatar.appearance.get_info())
add_kv(lines, "阵营", avatar.alignment)
add_kv(lines, "境界", str(avatar.cultivation_progress))
add_kv(lines, "HP", avatar.hp)
add_kv(lines, "战斗力", int(get_base_strength(avatar)))
add_kv(lines, "宗门", avatar.get_sect_str())
from src.classes.root import format_root_cn
add_kv(lines, "灵根", format_root_cn(avatar.root))
tech_str = avatar.technique.get_colored_info() if avatar.technique is not None else ""
add_kv(lines, "功法", tech_str)
if avatar.personas:
persona_parts = [p.get_colored_info() for p in avatar.personas]
add_kv(lines, "特质", ", ".join(persona_parts))
add_kv(lines, "灵石", str(avatar.magic_stone))
# 物品
if avatar.items:
items_lines = [f" {item.name} x{quantity}" for item, quantity in avatar.items.items()]
add_section(lines, "物品", items_lines)
else:
add_kv(lines, "物品", "")
# 思考与目标
if avatar.thinking:
add_section(lines, "正在思考", [avatar.thinking])
if avatar.long_term_objective:
add_section(lines, "长期目标", [avatar.long_term_objective.content])
if avatar.short_term_objective:
add_section(lines, "短期目标", [avatar.short_term_objective])
# 兵器(必有,使用颜色标记等级)
if avatar.weapon is not None:
weapon_text = avatar.weapon.get_colored_info()
if avatar.weapon.desc:
weapon_text += f"{avatar.weapon.desc}"
add_kv(lines, "兵器", weapon_text)
# 辅助装备(可选,使用颜色标记等级)
if avatar.auxiliary is not None:
auxiliary_text = avatar.auxiliary.get_colored_info()
if avatar.auxiliary.desc:
auxiliary_text += f"{avatar.auxiliary.desc}"
add_kv(lines, "辅助装备", auxiliary_text)
else:
add_kv(lines, "辅助装备", "")
# 灵兽:仅在存在时显示
if avatar.spirit_animal is not None:
add_kv(lines, "灵兽", avatar.spirit_animal.get_info())
# 关系(从自身视角分组展示)
from src.classes.relation import get_relations_strs
relation_lines = get_relations_strs(avatar, max_lines=15)
if relation_lines:
add_section(lines, "关系", [f" {s}" for s in relation_lines])
else:
add_kv(lines, "关系", "")
return lines
def get_avatar_expanded_info(
avatar: "Avatar",
co_region_avatars: Optional[List["Avatar"]] = None,