fix(presentation): 界面补数批——血量数字「当前/最大」落条(HUD框架 验收「血量数字可读」欠账+用户点名,白字深描边居中条带)+小人脚浮修正(素材透明留白致视觉脚悬空 12.75px,offset -16→-8.5 坐标推导留档)+台账 178

This commit is contained in:
DKChan committed 2026-09-26 16:47:23 +08:00
1 parent af3cddd61e
commit 9e6f06804e
3 files changed
+16 -3

No files matched your search

+4 -1
View File
@@ -49,7 +49,10 @@ func ensure_hero(tex: Texture2D, shadow_px: Vector2, scale: float) -> Sprite2D:
hero.texture = tex
hero.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
hero.centered = true
hero.offset = Vector2(0.0, -16.0) # 纹理中点上移半高——position = 脚底中点
# 脚浮修正(2026-09-26,样张预筛发现+用户实机确认的登记缺陷——台账 169/175 移交):素材底部 7 行全透明
#(内容底 = 源 row 24,自中心 16-7.5=8.5px),旧 offset -16 按纹理底=内容底假设成立时脚悬空 8.5×1.5≈12.75px;
# 修正 offset.y = -8.5 → 内容底恰落 position(脚锚=格底往上 25% 线,台账 162 口径——头仍越上格沿)
hero.offset = Vector2(0.0, -8.5) # 纹理中心上移 8.5 源 px——position = 视觉脚底中点
hero.z_index = 1
hero.use_parent_material = true
add_child(hero)
+10 -1
View File
@@ -48,6 +48,7 @@ var _enemy_id := ""
var _armor := "light"
var _dead := false
var _hp_max := 1.0
var _hp_cur := 0 # 血量数字显示面(HUD框架 验收「血量数字可读」——2026-09-26 用户点名补数)
var hp_value := 1.0: # 血条值 0..1(直角递减——tween_property 目标,逐行刷新重启不累积)
set(v):
hp_value = clampf(v, 0.0, 1.0)
@@ -108,7 +109,8 @@ func set_hero(hp: int, max_hp: int) -> void:
# 血条短 tween 递减(直角递减占位——密度/缓动终稿归战斗表现批);逐行刷新时重启 tween 不累积
func _set_hp(hp: int) -> void:
var target := float(clampi(hp, 0, int(_hp_max))) / _hp_max
_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 = create_tween()
@@ -309,6 +311,13 @@ func _draw() -> void:
var fill_w := bar_w * hp_value
if fill_w > 0.0:
draw_rect(Rect2(bar_x, 2, fill_w, 10), Color(0.41, 0.61, 0.91)) # 直角填充(默认主题蓝近似——直角递减)
# 血量数字「当前/最大」居中压条(白字+深描边双通道——11px 于 10px 条带垂直居中;
# 数字=目标值即时刷新,条 tween 只管填充宽度;死残位 0/max 照常可读)
var hp_txt := "%d/%d" % [_hp_cur, int(_hp_max)]
var hts: Vector2 = f.get_string_size(hp_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 11)
var hbase := Vector2(bar_x + (bar_w - hts.x) * 0.5, 2.0 + 5.0 + 4.0)
f.draw_string(get_canvas_item(), hbase + Vector2(1, 1), hp_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 11, Color(0.10, 0.08, 0.06, 0.85))
f.draw_string(get_canvas_item(), hbase, hp_txt, HORIZONTAL_ALIGNMENT_LEFT, -1, 11, Color(1, 1, 1, 0.95))
# 立绘:贴图在位 = Sprite2D(set_portrait_texture 落位);缺位 = 字形回退
if _portrait_sprite == null or _portrait_sprite.texture == null or not _portrait_sprite.visible:
+2 -1
View File
@@ -463,4 +463,5 @@
173. **探针取证与断言同步批(Phase B T5,2026-09-26,本会话——循环 1;worktree battle-stage-node2d-20260926,零常驻代码变更)**:①**临时取证探针**(跑完即删,台账 152 先例;踩坑复录=裸 .gd 无 tscn 载体跑场景探针=静默挂死,补 tscn 包装解):真实战斗态 B 区场景树 dump——**世界子树(SubViewport 内)Button=0/GridContainer=0/HBox=0**(站桩载体归零证);世界站桩本体 hero=true+enemies=1(StandeeBody)、伴随件容器子件=1 与本体数一致;壳层 HBox 逐件语义标注=文本行载体+StatusSlotRow 伴随件+log 内部(零站桩载体残留)。②ui_probe 敌站桩断言等价改写已于 T3 随批落地(enemy_box 子件穿透明→stage.enemy_body_at(i).name_line_probe()/intent_probe()/has_world_hp_bar 本体出口,呈现口径逐字保持——台账 171 改判记录);ui_click_probe :223 hero_standee.slot_row 伴随件引用=零改动即兼容(tooltip 机制零返工——代拍板①实证)。③ui_input_probe 十一断言原样全绿(B 区改造零波及 D 区实证——grep stage/standee/enemy 零命中在案)。取证报告本条即档案。轻闸全绿(冒烟 557/0+五探针 PASS)。进入 T6。
174. **文档随批与登记批(Phase B T6,2026-09-26,本会话——循环 1)**:①architecture.md——Last Updated 行+D1 层表形态行补 BattleStageView 例外(StageWorld/StandeeBody,slot_row 伴随件留壳层,Phase A/B 双注记引 ADR-0006)。②HUD框架.md——v0.10 渲染技术注记行(Phase B 同构改造/契约不变/伴随件/C6 复用/预算不变/等价证明外链)。③battle.md——2026-09-26 实现注记修订行(B 区 Node2D 化/setter 面保持/弹道锚点壳层口径/外框 252px 零改动)。④board-node2d-migration-plan.md §3——「Phase B 预留」改写为「已落地」(实施面三点+挂点复用)+**样张硬前置条款按裁决①作废落文**(样张冻结只卡换皮/演出批=循环 2 前置,不卡结构迁移)。⑤Alpha 清单状态列更新(A5 已实证转周期化复跑件待建/F1F2 全绿注记/F4 待 T7 对拍+修订记录行)。⑥06 待办核对=本批无解决条目(呈现层测试分级条 B/C 档与本批无涉;样张硬前置非 06 登记项)。验证=文档三闸对 T0 基线逐字节零新增(lint/link/term 三 diff 空)+轻闸随批全绿。进入 T7。
176. **换肤最小可看批——格面瓦片接线+敌像槽接线+接触带微光切换(2026-09-26,本会话——用户令「其他任务子 agent 委派」;worktree skin-wiring-20260926,两个并行子 agent+主会话微光,主编排者统一跑闸)**:①**格面高墙瓦片接线**(子 agent A,按任务书+词表逐条)——board_view.gd 新增 16 墙+5 地面瓦片路径常量(单点本文件,ui_kit 让位并行避撞)+整批守卫装载 `_tiles_ok`(21 枚全成才启用,任一缺位整批静默回退程序化平色,禁同板混渲染,fresh checkout 安全)+查表合成器(16 正交情形 Python 穷举对词表逐条命中/镜像 6 件 flip_x 运行时合成禁旋转/凹角回落 nw>ne>sw>se/center 变体+地面 5 变体格坐标哈希 60/20/20——纯确定性无 RNG)+`_paint_cell` 瓦片分支(tex_base=查表件,bg_sb 降透明描边载体,呼吸/蓝框通道不变)+cell_unit `_draw` 瓦片态补画 bg_sb 覆盖层;非整数 NEAREST 缩放=台账 166 已拍板档。②**敌人立绘槽接线**(子 agent B)——ui_kit 八敌种 TEX_ENEMY_<id> 常量(§4.6.4 键集,域_对象键命名)+battle_stage_view `_enemy_portrait_tex` match 映射(显式函数,UiKit const 不可动态 get 已注记)+set_enemies 重建拍 set_portrait_texture 接线(tex=null 字形回退逐位等价——素材零张在库为预期态,入库即自动显示零代码换装);签名零变更,ui_probe 断言面零触碰。③**接触带微光切换**(主会话,§3.2 v2.8 画法落码)——旧「墙格整框绿相」退役(DIG_EDGE/DIG_EDGE_DEEP 常量删)→**英雄格周界空间侧**:正交邻墙=整条边/斜向=共享角点圆+两侧各半条边(坐标推导注释在案,SW/SE+NE/SE 两处半带首版写反已修),带宽 4px 贴格边,蓝族近白蓝 CONTACT_GLOW #D6ECFF↔CONTACT_GLOW_DEEP 呼吸 0.48Hz 保留,减动效停格静态可辨;承载=英雄格 CellUnit 三属性(bands/corners/col),refresh+set_dig_glow_enabled(true) 双挂点,rebuild 复位。**验证**——editor --quit 0 error+冒烟 557/0+五探针全绿(probe stage 外框逐位零漂移)+static_scan exit0+文档三闸对基线零漂移+**MC 12 局 sha256=de8225b3 与基线逐位一致**(渲染批零核心接触铁证)。**遗留知悉**——词表 §五已知限制未修(成对双凹角 1px 缝/混合凹角缺落点/平铺重复感,按纪律不顺手修);瓦片态字形经 NEAREST 采样微锐化=预期;素材缺位回退路径全部保留。**待实机目检**——格面瓦片观感/微光蓝带/墙群拼缝(用户终验,任务书 §3.5)。
177. **呈现修复批——数字色牌落码+墙格轮廓加强(2026-09-26,本会话——用户实机三反馈之①③;worktree digit-plate-outline-20260926)**:①**数字消失根因=对比度死亡非逻辑丢失**——换肤批地面瓦片按图底分离纪律为暗色(亮度 ~50),现行游戏数字=深墨直写地面(旧浅地板 #B39A78 时代成立),墨 #33261B(亮度 ~40)对新地面 ~1.1:1 隐身;**修复=art-bible 原则二/§4.1 数字色牌落码**(素牌 #F5EAD3 直角 0.66/0.68 格边居中+牌缘线,已开格字形全垫牌〔数字/雷/?/人回退〕,旗=未开格不垫;可读不依赖格底,同时救回「雷」字可读性)——DIGIT_PLATE/DIGIT_PLATE_EDGE 常量入 ui_kit,paint 写 u.plate,CellUnit 字形段垫牌。②**轮廓加强**(反馈①「轮廓线不明显」)——墙格地面朝向边程序补 2px 深墨线(§8.5 结构归程序;素材 1px 墨线 45/36px 非整数缩放下视觉衰减;墙-墙内界不描保墙群内聚;paint 写 outline_sides,CellUnit 瓦片态 tile 后 bg_sb 前画——悬停金框/蓝框仍在其上)。③反馈②高墙感=研究件交付 `production/mockups/高墙感研究-2026-09-26.png`(同板四变体实瓦片拼样:A 现状/B+轮廓 2px/C+南立面双段暗带/D+地面投影;B/C/D 程序侧可做零素材重产,D 投影=ITB 同款高度线索推荐档),方案待用户挑档后落码。**验证**——editor --quit 0 error+冒烟 557/0+四探针绿(ui_probe/ui_input/ui_tune/click 问题=0)+MC 12 局 sha256=de8225b3 逐位一致+static_scan exit0。
177. **呈现修复批——数字色牌落码+墙格轮廓加强(2026-09-26,本会话——用户实机三反馈之①③;worktree digit-plate-outline-20260926)**:①**数字消失根因=对比度死亡非逻辑丢失**——换肤批地面瓦片按图底分离纪律为暗色(亮度 ~50),现行游戏数字=深墨直写地面(旧浅地板 #B39A78 时代成立),墨 #33261B(亮度 ~40)对新地面 ~1.1:1 隐身;**修复=art-bible 原则二/§4.1 数字色牌落码**(素牌 #F5EAD3 直角 0.66/0.68 格边居中+牌缘线,已开格字形全垫牌〔数字/雷/?/人回退〕,旗=未开格不垫;可读不依赖格底,同时救回「雷」字可读性)——DIGIT_PLATE/DIGIT_PLATE_EDGE 常量入 ui_kit,paint 写 u.plate,CellUnit 字形段垫牌。②**轮廓加强**(反馈①「轮廓线不明显」)——墙格地面朝向边程序补 2px 深墨线(§8.5 结构归程序;素材 1px 墨线 45/36px 非整数缩放下视觉衰减;墙-墙内界不描保墙群内聚;paint 写 outline_sides,CellUnit 瓦片态 tile 后 bg_sb 前画——悬停金框/蓝框仍在其上)。③反馈②高墙感=研究件交付 `production/mockups/高墙感研究-2026-09-26.png`(同板四变体实瓦片拼样:A 现状/B+轮廓 2px/C+南立面双段暗带/D+地面投影;B/C/D 程序侧可做零素材重产,D 投影=ITB 同款高度线索推荐档),方案待用户挑档后落码。**验证**——editor --quit 0 error+冒烟 557/0+四探针绿(ui_probe/ui_input/ui_tune/click 问题=0)+MC 12 局 sha256=de8225b3 逐位一致+static_scan exit0。
178. **界面补数批——血量数字+小人脚浮修正(2026-09-26,本会话——用户实机点名「血条没有数字」+登记缺陷顺修;worktree ui-polish-20260926)**:①**血量数字「当前/最大」**(HUD框架 验收标准「敌人呈现…血量数字可读」欠账落码+用户点名)——StandeeBody 血条带内居中 11px 白字+深描边双通道(条带 10px 内垂直居中),_hp_cur 于 _set_hp 即时取目标值(条 tween 只管填充宽度,数字不延迟);主角/敌人通用,死残位 0/max 照常可读;setter 签名零变更。②**小人脚浮修正**(台账 169/175 移交登记缺陷——素材底部 7 行全透明,旧 offset -16 按纹理底=内容底假设致视觉脚悬空 8.5×1.5≈12.75px)——ensure_hero offset.y -16→-8.5(坐标推导注释在案:内容底=源 row 24,自中心 8.5px,×1.5 档恰落脚锚;头仍越上格沿),挥铲手位锚与精灵对齐反而归位。**验证**——editor --quit 0 error+冒烟 557/0+四探针绿+MC 12 局 sha256=de8225b3 逐位一致+static_scan exit0。