物品栏背包内装备未显示图标,且装备悬浮属性框(Tooltip)需等比缩放 #139

Closed
opened 2026-09-21 02:00:12 +00:00 by troytt · 1 comment
Owner

问题描述

参考截图:https://screenshot-v2.corp.google.com/2mupf6g92p8hg

  1. 物品栏(快捷键 I / B)下方 10×4 背包网格中,除赫拉迪克方块外,回城书、鉴定书、护身符(火炬/毁灭/基德)、战争召唤水晶剑均只显示了底色框而没有显示物品图标。
  2. 鼠标悬停物品弹出的属性悬浮框(Tooltip)同样被横向非等比拉伸。

根因分析

  1. STARTER_BAG_ITEMS 中填写的 invFile 名称(如 invbks、invcm1、invcm2、invcm3、invkri)与 MPQ weapons.txt / misc.txt 提取出的真实 itemRects 键名(invbbk 回城书、invrbk 鉴定书、invtrch 火炬、invchm 小护身符、invcrs 水晶剑、invob5 眼球涡流水晶)不一致;且 InventoryPanel.drawItemSprite 仅按 item.invFile 查找,未回退查询 manifest.codeToInvFile[item.code]。
  2. 悬浮框绘制在非等比缩放的 HUD Canvas 上,受 ctx.scale(targetW / 800, targetH / 600) 影响被横向拉宽。

解决方案

  1. 修正所有初始装备与背包物品的 invFile 键名,并在离线打包与运行时渲染中支持 codeToInvFile[item.code] 自动映射,补齐大型/超大型护身符(invlch / invgch)图集切片,确保 100% 物品显示原版 DC6 图标。
  2. 将悬浮框纳入 1:1 等比缩放坐标系中绘制,保证文字与边框比例端正。
### 问题描述 参考截图:https://screenshot-v2.corp.google.com/2mupf6g92p8hg 1. 物品栏(快捷键 `I` / `B`)下方 10×4 背包网格中,除赫拉迪克方块外,回城书、鉴定书、护身符(火炬/毁灭/基德)、战争召唤水晶剑均只显示了底色框而没有显示物品图标。 2. 鼠标悬停物品弹出的属性悬浮框(Tooltip)同样被横向非等比拉伸。 ### 根因分析 1. `STARTER_BAG_ITEMS` 中填写的 `invFile` 名称(如 `invbks`、`invcm1`、`invcm2`、`invcm3`、`invkri`)与 MPQ `weapons.txt` / `misc.txt` 提取出的真实 `itemRects` 键名(`invbbk` 回城书、`invrbk` 鉴定书、`invtrch` 火炬、`invchm` 小护身符、`invcrs` 水晶剑、`invob5` 眼球涡流水晶)不一致;且 `InventoryPanel.drawItemSprite` 仅按 `item.invFile` 查找,未回退查询 `manifest.codeToInvFile[item.code]`。 2. 悬浮框绘制在非等比缩放的 HUD Canvas 上,受 `ctx.scale(targetW / 800, targetH / 600)` 影响被横向拉宽。 ### 解决方案 1. 修正所有初始装备与背包物品的 `invFile` 键名,并在离线打包与运行时渲染中支持 `codeToInvFile[item.code]` 自动映射,补齐大型/超大型护身符(`invlch` / `invgch`)图集切片,确保 100% 物品显示原版 DC6 图标。 2. 将悬浮框纳入 1:1 等比缩放坐标系中绘制,保证文字与边框比例端正。
Author
Owner

验证通过并已随提交 14443c6 修复关单

  1. 改动方案:

    • 在 src/ui/inventory.ts 中实现 5 级回退装备图标解析链(invFile -> 物品代码匹配 -> codeToInvFile 字典 -> 大类回退 -> 默认装备图标),彻底消灭空白线框。
    • 结合 1.13c PL2 调色板 Table 104(cgrn)预烘培军帽(Harlequin Crest)纯正祖母绿外观。
    • 战争召唤(Call to Arms)按 ItemStatCost.txt 的 descpriority 完整呈现 11 条符文之语属性与三行标题。
    • Tooltip 支持随 uiScale 等比缩放,并在高位插槽自动垂直翻折防遮挡。
  2. 验证结果:

    • 1,475 件装备代码解析率 100%,无任何缺失图元。
    • 纸娃娃头盔呈现翡翠绿外观,悬浮框词条完整且不超出视口。
### 验证通过并已随提交 14443c6 修复关单 1. **改动方案**: - 在 `src/ui/inventory.ts` 中实现 5 级回退装备图标解析链(`invFile` -> 物品代码匹配 -> `codeToInvFile` 字典 -> 大类回退 -> 默认装备图标),彻底消灭空白线框。 - 结合 1.13c PL2 调色板 Table 104(`cgrn`)预烘培军帽(Harlequin Crest)纯正祖母绿外观。 - 战争召唤(Call to Arms)按 `ItemStatCost.txt` 的 `descpriority` 完整呈现 11 条符文之语属性与三行标题。 - Tooltip 支持随 `uiScale` 等比缩放,并在高位插槽自动垂直翻折防遮挡。 2. **验证结果**: - 1,475 件装备代码解析率 100%,无任何缺失图元。 - 纸娃娃头盔呈现翡翠绿外观,悬浮框词条完整且不超出视口。
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#139
No description provided.