技能快捷栏与选择弹窗(Speedbar)Tooltip 浮动提示严格复刻暗黑 2 原版规范 #380
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
1. 问题现状与视觉缺陷分析
在当前底部控制栏左右技能槽及点击弹出的技能选择菜单(Speedbar,
src/ui/hotkeys.ts)中:210 × 38像素矩形,位置死板地固定在Y = 412(ctx.fillRect(anchorX, 412, 210, 38)),未根据技能提示内容的行数和宽度自适应拓展,也未跟随鼠标悬停的技能格动态定位。普通攻击 (Attack) Lv.1和法力消耗: 0 · 按 F1-F8 绑定。2. 暗黑破坏神 2 v1.13c 原版 Tooltip 规范 (Ground Truth)
2.1 提示内容层级与数据规范
原版 D2 鼠标悬停在技能图标(快捷栏或弹窗菜单)上时,Tooltip 具有严格的信息层级:
#c8a15a),居中对齐。例如暴风雪 (Blizzard)或普通攻击 (Attack)。当前技能等级: 28(白色/浅金)。Skills.txt、SkillDesc.txt及计算引擎(skill-calc-engine.ts)动态计算:法力消耗: 23(白色)冰冷伤害: 580 - 640(依元素类型或白色/蓝色展现)持续时间: 4 秒攻击准确率加成: +120%SkillDesc.txt与.tbl文本)。使用当前持有的武器或空手攻击敌人(附带主手武器攻击力与命中率)。向目标投掷标枪、飞刀或药剂。解散或消灭选中的己方仆从。#696969/#d8c898,font8),居中。按快捷键直接绑定 (F1-F8)。2.2 视觉与排版容器规范 (Box Styling)
rgba(0, 0, 0, 0.92)),带有暗黑 2 经典的复古凹凸金属雕花双边框(主边框金色#8c7244,内凹描边#3a2c1c)。width与height(内衬 padding 左右 14px,上下 10px)。3. 修复方案与实现要求
3.1 接入计算引擎 (
skill-calc-engine.ts)hotkeys.ts中简易的entry.manaCost假数据,改为主调buildTooltipViewModel或技能计算状态机,实现与技能树面板(Skill Tree)100% 相同的数据同源。3.2 动态排版与自适应测量
computeSkillTooltipPlacement(hoverRect, lines, font)方法:D2FontRenderer.measureText动态计算各行宽度。hotkeys.ts的draw()流程中重构 Tooltip 渲染,彻底移除ctx.fillRect(anchorX, 412, 210, 38)。3.3 支持主技能槽与弹窗双向触发
hotkeys.hoverSkillId !== null时(无论是在底部主快捷栏,还是在打开的 Speedbar 弹窗格子内),均触发完整 Tooltip 渲染。4. 验收标准 (Acceptance Criteria)
npm run typecheck,npm test)100% 通过。