## VERTICAL SLICE - NOT FOR PRODUCTION ## 站桩身份与命值态件(StandeeBody 拆件——单一变化原因=战斗结算快照投影的字段形态): ## 站桩是谁、活没活、血量几何的唯一账面——身份五元组(种类/名/id/护甲/顺位)+存活位+血量账与两条血量系 tween 槽。 ## 无 class_name(类名缓存面纪律)——经宿主 standee_body preload 引用(st 实例名沿用); ## hp_value 属性 setter 经 _owner 回引触发宿主重绘语义逐字。 extends RefCounted var _owner: Node2D = null var _kind := "enemy" var _display_name := "" var _enemy_id := "" var _armor := "light" var _order := 1 var _dead := false var _hp_max := 1.0 var _hp_cur := 0 # 血量数字显示面(HUD框架 验收「血量数字可读」) var hp_value := 1.0: # 血条值 0..1(直角递减——tween_property 目标,逐行刷新重启不累积) set(v): hp_value = clampf(v, 0.0, 1.0) _owner.queue_redraw() var _hp_tween: Tween var _hp_flash_tw: Tween func _init(owner: Node2D) -> void: _owner = owner # 血条短 tween 递减(直角递减占位);逐行刷新时重启 tween 不累积 func apply_hp(hp: int) -> void: _hp_cur = clampi(hp, 0, int(_hp_max)) var target := float(_hp_cur) / _hp_max if _hp_tween != null and _hp_tween.is_valid(): _hp_tween.kill() _hp_tween = _owner.create_tween() _hp_tween.tween_property(self, "hp_value", target, UiKit.motion(0.15))