merge: 敌方站桩护甲类型图标化+AC数值退役(2026-09-26 用户终裁)
This commit is contained in:
commit
e9519cdc10
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:
|
||||
|
||||
@@ -109,8 +109,8 @@ func _ready() -> void:
|
||||
# E 区道具面板已随可选类删除下线(格面资源批 2026-09-15)——四区构建由其余断言覆盖
|
||||
# ---- 敌方站桩投影(顺位徽标/意图三档动作动画占位——敌人系统×4;2026-09-20 全站桩拍板)----
|
||||
var standee = main.stage.enemy_box.get_child(0)
|
||||
if standee != null and standee._name_line.text == "":
|
||||
problems.append("敌立绘名字行为空")
|
||||
if standee != null and (standee._name_label.text == "" or standee._armor_icon.text == ""):
|
||||
problems.append("敌立绘名字行缺失(名字或护甲类型图标占位为空——2026-09-26 终裁:AC 不展示、类型图标化)")
|
||||
if standee != null and standee._intent_badge == null:
|
||||
problems.append("敌立绘意图指示缺失")
|
||||
elif standee != null:
|
||||
|
||||
Reference in new issue
Block a user