fix(ui): 敌方站桩护甲类型图标化+AC数值退役(2026-09-26 用户终裁)
- 底座下名字行改 HBox 组合:护甲类型图标占位 Label + 名字 Label;文本格式「名字 · 类型·AC%d」退役 - 图标形状+色相双通道占位(◇轻甲·灰石 / ◆魔法护甲·小人蓝 / ▣重甲·深金;避开 Boss 专属紫赤 #8F2F6A 与妨害紫),终稿图标资产归美术批 - _armor_class 字段与 set_data 读取删除(站桩视图零消费方;核心/数据层 armor_class 不动);_armor 保留供图标 - battle_stage_view._card_by_name 与 smoke/ui_probe 名字行断言同步新节点口径(ui_probe 增护甲图标非空检查) - 全量冒烟 557 项 0 失败退出码 0
This commit is contained in:
1 parent
78cc064fff
commit
171a2ddee5
3 files changed
+39
-18
No files matched your search
@@ -106,7 +106,7 @@ func _card_by_name(display_name: String) -> StandeeView:
|
||||
for c in _cards:
|
||||
if not is_instance_valid(c):
|
||||
continue
|
||||
if String(c._name_line.text).contains(display_name):
|
||||
if String(c._name_label.text).contains(display_name): # 名字行图标化批 2026-09-26:名字 Label 独立节点(_name_line 已改 HBox 容器)
|
||||
return c
|
||||
return null
|
||||
|
||||
|
||||
@@ -7,15 +7,19 @@
|
||||
# 词汇单点复用 StatusSlotRow.EFFECT_ICON,未知键同款 fail-fast + ? 占位)。
|
||||
# 敌方专属:顺位徽标悬浮头顶;意图三档动作动画占位(表现层升级批拍板:不显示技能名——普攻零表示 /
|
||||
# 攻击系 ⚔ / 增益系 ✦ / 妨害系 ☠ / 蓄力 = ⚔ 金档;开轮摇定播一次性短动画后静帧保持,
|
||||
# 挖掘期不循环——art-bible §2.1 能量纪律,终稿动画密度归战斗表现批);底座下名字·护甲·AC 常驻行
|
||||
# (护甲类型+AC 恒常驻——敌人技能池批克制对策可读性义务)。
|
||||
# 挖掘期不循环——art-bible §2.1 能量纪律,终稿动画密度归战斗表现批);底座下 护甲类型图标+名字
|
||||
# 常驻行(2026-09-26 用户终裁:AC 数值不展示、护甲类型图标化——敌人技能池批克制对策可读性
|
||||
# 义务降级承载:类型保留可读、数值移除;HP 信息已足够)。
|
||||
# 死亡呈现(敌人系统 资产下限):灰化 + 摇摆塌陷残位,禁瞬消;受击闪白沿用。
|
||||
# Date: 2026-09-20(站桩改造批——hero_card_view/enemy_card_view 退役删除)
|
||||
class_name StandeeView
|
||||
extends Control
|
||||
|
||||
const CHARGE_SKILL_IDS := ["heavy"]
|
||||
const ARMOR_NAMES := {"light": "轻甲", "ward": "魔法护甲", "heavy": "重甲"}
|
||||
# 护甲类型图标占位——终稿图标资产归美术批(2026-09-26 用户终裁:AC 数值不展示,类型图标化)。
|
||||
# 形状+色相双通道(art-bible):轻甲=◇ 空心菱(轻薄)·灰石中性 / 魔法护甲=◆ 实心晶菱·小人蓝
|
||||
# (避开 Boss 专属紫赤 #8F2F6A 与妨害紫——两者各有专属语义)/ 重甲=▣ 实心方板(厚重板甲)·深金。
|
||||
const ARMOR_ICONS := {"light": "◇", "ward": "◆", "heavy": "▣"}
|
||||
|
||||
var _kind := "enemy"
|
||||
var _portrait: Label
|
||||
@@ -25,11 +29,12 @@ var _hp_bar: ProgressBar
|
||||
var _order_badge: Label = null
|
||||
var _intent_badge: Label = null
|
||||
var _status_row: HBoxContainer
|
||||
var _name_line: Label = null
|
||||
var _name_line: HBoxContainer = null
|
||||
var _armor_icon: Label = null
|
||||
var _name_label: Label = null
|
||||
var _display_name := ""
|
||||
var _enemy_id := ""
|
||||
var _armor := "light"
|
||||
var _armor_class := 0
|
||||
var _dead := false
|
||||
var _hp_tween: Tween
|
||||
|
||||
@@ -100,17 +105,25 @@ func _init(kind: String = "enemy") -> void:
|
||||
UiKit.panel_flat(UiKit.STONE.darkened(0.35), UiKit.STONE.darkened(0.1), 6, 1))
|
||||
add_child(_platform)
|
||||
|
||||
# 底座下名字·护甲·AC 常驻行(敌 only)
|
||||
# 底座下 护甲类型图标+名字 常驻行(敌 only——2026-09-26 用户终裁:AC 数值不展示,类型图标化)
|
||||
if kind == "enemy":
|
||||
_name_line = UiKit.label("", 12, false)
|
||||
_name_line.add_theme_color_override("font_color", UiKit.INK_TITLE)
|
||||
_name_line.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
_name_line.clip_text = true
|
||||
_name_line.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||||
_name_line = HBoxContainer.new()
|
||||
_name_line.alignment = BoxContainer.ALIGNMENT_CENTER
|
||||
_name_line.add_theme_constant_override("separation", 3)
|
||||
_name_line.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
_name_line.set_anchors_preset(Control.PRESET_BOTTOM_WIDE)
|
||||
_name_line.offset_top = -8.0
|
||||
_name_line.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
add_child(_name_line)
|
||||
_armor_icon = UiKit.label("", 12, true)
|
||||
_armor_icon.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
_name_line.add_child(_armor_icon)
|
||||
_name_label = UiKit.label("", 12, false)
|
||||
_name_label.add_theme_color_override("font_color", UiKit.INK_TITLE)
|
||||
_name_label.clip_text = true
|
||||
_name_label.text_overrun_behavior = TextServer.OVERRUN_TRIM_ELLIPSIS
|
||||
_name_label.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
_name_label.mouse_filter = Control.MOUSE_FILTER_IGNORE
|
||||
_name_line.add_child(_name_label)
|
||||
|
||||
|
||||
# ---- setter 面(投影契约与旧敌卡一致——presenter 装配面零改排) ----
|
||||
@@ -121,7 +134,6 @@ func set_data(d: Dictionary) -> void:
|
||||
_display_name = String(d.get("display_name", "敌人"))
|
||||
_enemy_id = String(d.get("enemy_id", ""))
|
||||
_armor = String(d.get("armor_type", "light"))
|
||||
_armor_class = int(d.get("armor_class", 0))
|
||||
_hp_bar.max_value = maxi(1, int(d.get("max_hp", 1)))
|
||||
_set_hp(int(d.get("hp", 0)))
|
||||
set_order(int(d.get("order", 1)))
|
||||
@@ -280,8 +292,17 @@ func _revive() -> void:
|
||||
|
||||
|
||||
func _update_name_line() -> void:
|
||||
if _name_line != null:
|
||||
_name_line.text = "%s · %s·AC%d" % [_display_name, String(ARMOR_NAMES.get(_armor, "轻甲")), _armor_class]
|
||||
if _name_line == null:
|
||||
return
|
||||
_name_label.text = _display_name
|
||||
var col: Color = UiKit.STONE # 轻甲 = 灰石(中性轻薄)
|
||||
match _armor:
|
||||
"ward":
|
||||
col = UiKit.HERO_BLUE # 魔法护甲 = 小人蓝(避开 Boss 专属紫赤/妨害紫)
|
||||
"heavy":
|
||||
col = UiKit.GOLD_DEEP # 重甲 = 深金(厚重达意金)
|
||||
_armor_icon.text = String(ARMOR_ICONS.get(_armor, "◇"))
|
||||
_armor_icon.add_theme_color_override("font_color", col)
|
||||
|
||||
|
||||
func _refresh_portrait_glyph() -> void:
|
||||
|
||||
Reference in new issue
Block a user