Files
noname-shuying/mengsan/docs/unified-battle-hud-20261021.md
T
2026-10-23 00:38:05 +08:00

99 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 梦三统一战斗 HUD
> 当前范围以末尾“77.png/78.png”一节为准:仅替换玩家下方 HUD,采用完全透明布局;怪物、助战和战场出牌副本保持原生呈现。
用户已确认统一下方 HUD,并要求支持鼠标/触屏拖牌、多个敌人;不依赖十周年 UI,但兼容十周年 UI。本轮直接修改实际文件,保留其他已有修改,不创建修复副本、不提交或发布。
## 目标与边界
- 左侧真实玩家头像与生命/格挡/费用,中央状态条和原有真实手牌,右侧原生技能、确认、取消与结束控件。
- 保持卡牌父容器、角色节点、控件回调及原生事件结算;不创建另一套技能执行或出牌结算。
- 敌人与助战按现有席位身份动态布局;意图在上方,状态在下方,保留最多八席的原有校验。
- 读取现有效果;不启用 Wiki 尚未实现的状态,不改变触发优先级、存档或数值。
- 独立实例(炸弹、未来回合效果)分别显示,强度、回合、次数与阈值分别说明。
- 十周年未启用时必须完整工作;启用时只适配其当前真实节点,不导入其接口或资源。
## 实施计划
1. [x] 建立会话隔离的只读状态来源;接入刘备基础/进阶、通用牌及遗物状态。先验证负值、独立实例及旧会话清理。
2. [x] 新增 HUD 模块、样式、状态资源;保留原生手牌/控件父级,管理会话挂载与恢复。
3. [x] 接入战斗入口与召唤刷新,适配原生和十周年控件、拖牌遮罩及多角色布局。
4. [x] 用浏览器隔离场景检查原生/十周年样式、动态控件、拖牌、七个敌人、状态变化与重复卸载;结合源码核对并修复触屏误选、缓慢层数及遗物条裁切问题。
## 检查重点
技能进入/退出时控件重建;拖牌期间原生确认隐藏;触屏 click/touch 双触发;目标死亡/召唤后的真实命中区域;保存后换战的监听与样式清理。
静态、模块与浏览器隔离检查不等同于实际游戏验收。最终须在原生 UI 和实际十周年风格下分别验证完整对局。
## 进度
已检查既有修改;按本会话已确认方案直接实施。采用当前工作区,不另建工作树;不执行自动提交。
新增 `battle/status-sources.js` 管理会话级只读来源,`ui/hud/` 负责显示和布局。刘备基础/进阶与通用牌模块只增加显示读取注册;遗物控制器只增加状态快照,不更改结算。图标从本机 v0.111.0 切片复制60张,共270585字节,尺寸/字节/哈希见 `assets/status/manifest.json`。
原生 UI 与十周年三种实际 CSS 的隔离场景已覆盖1280×720、812×375、540×900、七个敌人、原节点父级保持、鼠标拖牌、触屏 PointerEvent 拖牌、十周年独立技能控件回调、状态详情和重复卸载。上述均为隔离检查,未运行完整游戏和真实安卓客户端。
检查结果:4项状态模型测试、270项浏览器隔离断言、13个模块语法检查通过;60张图标清单与本机切片一致。拖拽继续使用原有单目标/无目标出牌适配,复杂技能、多次选牌和特殊目标流程沿用原生选择控件。
显示顺序目前是稳定的状态定义/来源顺序,不宣称等同于原版的施加/触发顺序。未知原生标记继续保留;只有已由HUD展示的对应标记才隐藏。
## 70.png 反馈修正(2026-10-22)
截图暴露了上一版隔离场景未覆盖的实际结构:十周年将 `ui.control.id` 改为 `dui-controls`,人物姓名/生命位于 `camp-wrap`、`hp-wrap` 内,人物尺寸及手机 `stayleft` 操作组还有高优先级规则。原来的直接子节点选择器未覆盖这些结构,造成皮肤边框、重复数值与操作按钮错位。
- 下方改为通透渐隐背景,仅左侧人物信息使用紧凑墨蓝面板;人物真实头像保持原节点,移除由 HUD 替代的姓名、生命和身份装饰显示,保留未知标记及装备交互。
- 真实操作容器按引用定位,不依赖容器 ID;原生操作组和可选技能/全局技能列分别安排空间。覆盖手机 `stayleft` 横移与旧布局过渡,恢复手杀透明渐变字体的可见性,并保留技能选中/不可用提示。
- 遗物条按内容收缩;无状态时隐藏空标题和敌人空状态框;真实手牌上移,减少桌面底边裁切。敌人按数量在可用战场空间内排布,独立显示姓名、生命与格挡。
- 检查扩充为原生与三种十周年风格、四组尺寸(含1234×920),使用实际人物 CSS、嵌套人物结构、重命名按钮容器及手机样式,覆盖可选全局技能和技能文字可见性。
本次508项浏览器隔离断言、4项状态模型测试及修改模块语法/差异检查通过。已查看渲染截图;仍未在实际游戏进程或真实安卓客户端验收。游戏需重启以加载修改后的模块。
## 71.png 与原方案对照(2026-10-22)
用户明确仍要求之前确认的统一下方HUD。上一轮实际做成浮动人物卡、手牌和操作列,虽修正了部分皮肤冲突,却偏离原示意中共用底座的视觉关系。本轮对照原 `mengsan-hud-options.html` 第一节恢复统一底座、三栏分隔、固定状态行与完整手牌,保留真实节点及事件;单个敌人使用更大尺寸,多敌人继续动态分行。
十周年 `playerDamagepop` 将字符串通知放在 `player.offsetTop + 80`,缩小后的头像会让“回合开始”等通知覆盖底部信息。本轮只为当前HUD中的原生 `.damage.skill-popup` 加显示类并把位置限制在底座上方,保留文字动画与原有自动移除,退出时恢复。
新增检查覆盖空状态行稳定占位、旋转手牌底边、单敌人尺寸、通知位置及卸载恢复;仍属浏览器隔离验证。最终视觉需以重新启动后的实际游戏截图确认,不以检查数量作为美观验收。
只读评审发现长遗物条会与首排意图相交,新增十遗物场景先复现失败,再为战场顶部独立预留空间。多单位布局将意图、头像、状态作为整体分配高度;短屏按每单位至少64像素确定列数,头像与标签都受单元格限宽。补查667×375/七名敌人和375×500/三名敌人边界,复核确认原遮挡及头像重叠问题已消除。最终871项浏览器隔离断言、修改模块语法与差异检查通过;仍未进行实机验收。
## 72.png 细节与遗物位置(2026-10-22)
用户要求保留统一底座,修正头像被装备覆盖的问题,并将遗物移到屏幕中上方以避开左上回合数。装备原节点保持父级、回调和选取机制,移到头像下方的24像素紧凑横滚行;玩家装备放在底座底部,敌人装备与状态分别预留空间。额外适配十周年把同一装备根节点置于独立 `ui.equipSolts` 包装内的情况,不重建或搬移卡牌。遗物条改上方居中、限制最大宽度,过多时横向滚动。
测试加入真实装备CSS、五件装备首尾点击、装备与头像/状态互不遮挡、独立装备包装和卸载恢复,以及遗物居中和避开回合区域。先复现装备遮头像;独立包装的旧 `justify-content:flex-end` 使首件装备溢出且不可滚回,已显式改为起始排列。最终1087项浏览器隔离断言及修改模块语法/差异检查通过,未在实际游戏或安卓客户端验收。
## 73.png 现代风格、透明度与阵亡拥挤(2026-10-22)
按用户要求使用 UI/UX 技能评审后,保留统一下方HUD,改为内缩8像素、24像素圆角、76%背景不透明度与10像素轻度模糊的底座。文字不整体降透明度;头像、状态、按钮、遗物条与详情面板采用一致的圆角层级,弱化分隔线和装备滚动条,扩大桌面栏间留白。原生控件按真实引用清除十周年高优先级的15像素侧边距,并包含按钮内边距/边框,修正右侧圆角裁切。
阵亡角色保留真实节点和引擎登记,只隐藏其战场呈现;复活时恢复,避免存留尸体覆盖重排后的角色。普通出牌副本在空间足够时缩成最近两张,独立放在战场下沿;小屏或空间不足时隐藏重复副本。新增 `ui/hud/played-cards.js` 仅修改可恢复的独立translate/scale,不覆盖原生transform、不移除卡牌、不更改结算或原生过渡完成回调;判定/比拼与固定、可选、抽牌/获得牌副本沿用原生呈现。
只读评审指出固定预留128像素会压缩812×600七角色的第二排信息,新增场景先复现,再改为优先保障角色及标注空间,余量足够时才显示最近出牌区。最终原生与十周年三种风格、七组尺寸共28组场景、1556项浏览器隔离断言通过,覆盖透明度、圆角、按钮边界、阵亡/复活、判定恢复、原生transform过渡完成、拖牌及退出恢复。已检查桌面阵亡与短屏渲染截图;模块语法及差异检查通过。上述不等于实际游戏或安卓客户端验收,需重启游戏确认最终效果。
## 标注图、75.png/76.png(2026-10-22)
用户明确取消深蓝底框,要求完全透明;左下仅玩家立绘,不存在双武将,立绘需略大以容纳标记、装备。按标注将生命、格挡和费用移到立绘右侧竖排,状态移到立绘上方左侧矩阵;提示语放在手牌上方,确认、取消、托管和结束等原生控件在其下横排,原生技能与十周年可选技能控件在最右侧竖排。桌面玩家立绘由80×116放大为144×196,装备仍在原节点的下方横滚行;窄屏采用竖排人物信息。底座无背景色、边框、阴影或模糊,文字保持不透明并用文字阴影辅助辨识。
75.png 的右键说明被手牌遮住。新增 `ui/hud/overlays.js` 仅调整已有简单提示和原生 `.dialog.popped` 的位置,说明放到手牌和操作提示上方,并限制窗口内边界、允许长内容滚动。保留原有右键入口、内容节点、关闭遮罩和回调;不重建说明,不干预含卡牌/按钮的原生复杂选择框。针对原生绝对定位的内容包装增加局部流式布局,避免自动高度塌缩。
用户后续收窄范围:怪物界面沿用原版,只替换玩家下方 HUD。已去除本 HUD 的多单位布局、姓名/生命/装备/状态代理、死亡隐藏及最近出牌副本模块;敌人与助战不添加 HUD 类、不改内联位置、不替换节点,也不隐藏它们的原生标记。
76.png 奖励界面后方恢复旧布局,原因是 `requestBattleFinish` 立即卸载 HUD 和手牌适配。改为先冻结呈现、停交互和监听,保留玩家及扇形手牌外观;最终仍由原会话在奖励完成后统一释放,不改变战斗停止、结算、存档或奖励选择顺序。
本轮浏览器隔离检查使用实际玩家 HUD、手牌模块和原生/十周年三种风格 CSS,覆盖七组尺寸、状态矩阵溢出、玩家装备回调、怪物节点保持、原生技能独立竖排、鼠标与触屏拖牌、右键说明位置/内容/关闭、提示语与横排操作分离,以及停止后保留外观并最终恢复。最终28组场景、1455项浏览器隔离断言、4项状态模型测试以及修改模块语法和差异检查通过,已复核右键说明与透明底座的渲染截图;此类检查仍不等于实际游戏与安卓客户端验收。
## 77.png/78.png(2026-10-23)
玩家信息列与立绘的横向间距缩至 8~16px;常规/横屏立绘下边距由 66px 改为 24px,数值列同步下移。装备使用原节点,在立绘下半部竖向叠放,窄尺寸可滚动;兼容十周年独立装备容器,不迁移节点或替换回调。
移除“当前状态/暂无状态”和“选择行动/等待行动”占位文字,无状态时隐藏状态区,有状态时自动显示。左侧状态矩阵贴近立绘上方;遗物移至右侧技能区上方,与状态区对应。窄竖屏遗物改为单行横向滚动,并作 16px 对齐补偿以避开原有怪物意图。技能区高度限于遗物下方。
后续按用户要求移除“技能与装备”按钮及其详情代理分支,删除自制操作按钮的纹理、字体、边框、颜色和禁用态覆盖,并移除已无引用的两张复制纹理。确定/回合结束使用当前已启用的十周年或官方原版控件和样式,保留真实节点、内容、点击回调及原有内边距;HUD 仅安排容器位置,允许原生尺寸向上撑开。信息列改为相对立绘顶部定位,避免移除按钮后数值列下沉。右侧技能区仍按原有 HUD 轨道适配,底部布局保持透明。
78.png 的原生标记说明层级低于立绘,原生打开函数也不拒绝重复点击。玩家标记捕获阶段仅阻止尚未完成打开或已有说明时的重复打开;由原生事件生成内容,随后将说明移到手牌操作区上方。说明与遮罩分别置于 90/89 层,取消位置和层级过渡,避免短暂遮挡。关闭仍走原生回调,关闭后可重新打开;不改怪物标记。
已通过原生及十周年三种风格、七种尺寸的 28 组浏览器隔离场景,共 1847 项断言;另有前一轮 4 项状态模型测试、当前修改模块语法检查和差异检查通过。检查覆盖装备在立绘内、信息间距、移除技能装备代理按钮、操作按钮原始节点/内容/外观/字体/内边距保持、原生确认和结束回调、按钮在手牌上方、遗物溢出访问、标记连续点击/层级/位置/关闭后重开。已复核透明布局与原生按钮、标记说明截图;拖牌在原生目标可见区域验证。尚未完成真实游戏或安卓客户端验收。