[M19-P5] 实装原版四分页商人面板 UI 与买卖交互 (Panel\NPCInv.dc6 + Buy/Sell/Repair/Gamble) #485

Closed
opened 2026-09-26 04:22:15 +00:00 by troytt · 1 comment
Owner

背景与目标

打通城镇 NPC 点击菜单、左侧四分页商店面板 (Panel\NPCInv.dc6)、右侧玩家背包联动与悬浮价格 Tooltip。

核心实装内容

  1. 城镇 NPC 交互弹窗菜单 (src/scene/act-scene.ts & src/ui/world-panels.ts):
    • 当玩家走近并点击城镇 NPC 时,除了触发治疗与头顶/面板问候外,弹出原版暗黑风格选项菜单:
      • 交易型 NPC:交谈 / 交易 (或 交易/修理) / 赌博 (若支持) / 取消
      • 凯恩:交谈 / 鉴定物品 / 取消
  2. 左侧四分页商店面板 (src/ui/world-panels.ts):
    • 替换 drawLeftDockPanel 中的 'vendor' 占位符,使用 vendor-bg.png 与 buysellbtn.png 渲染:
      • 顶部 4 个分页标签:护甲 / 武器 I / 武器 II / 杂物。
      • 中部 10×10 物品网格(每格 29×29 px),绘制商店物品图标、染色、堆叠角标、鼠标悬停高亮。
      • 底部功能按钮栏:购买/出售、单件修理锤、全身修理(显示总修理费)、赌博刷新按钮(赌博模式)与关闭按钮。
  3. 左右双栏联动与 Tooltip 价格展示 (src/ui/hud-manager.ts & src/ui/inventory.ts):
    • 打开左侧 vendor 面板时自动打开右侧玩家背包 (rightOpen.inventory = true)。
    • 悬停商店物品时:Tooltip 显示原版属性 + 购买价格: X 金币(金币不足时标红)。
    • 悬停玩家背包/装备物品时:Tooltip 显示 出售价格: X 金币(修理光标激活时显示 修理费用: X 金币)。
    • 支持右键快捷购买/出售、Shift+右键批量买满药水/卷轴、左键拖拽买卖。

验收标准

  • 左侧商店面板与右侧背包面板严丝合缝并排显示,所有买卖/修理/赌博操作流畅闭环。
## 背景与目标 打通城镇 NPC 点击菜单、左侧四分页商店面板 (`Panel\NPCInv.dc6`)、右侧玩家背包联动与悬浮价格 Tooltip。 ## 核心实装内容 1. **城镇 NPC 交互弹窗菜单 (`src/scene/act-scene.ts` & `src/ui/world-panels.ts`)**: - 当玩家走近并点击城镇 NPC 时,除了触发治疗与头顶/面板问候外,弹出原版暗黑风格选项菜单: - 交易型 NPC:`交谈` / `交易` (或 `交易/修理`) / `赌博` (若支持) / `取消` - 凯恩:`交谈` / `鉴定物品` / `取消` 2. **左侧四分页商店面板 (`src/ui/world-panels.ts`)**: - 替换 `drawLeftDockPanel` 中的 `'vendor'` 占位符,使用 `vendor-bg.png` 与 `buysellbtn.png` 渲染: - 顶部 4 个分页标签:`护甲` / `武器 I` / `武器 II` / `杂物`。 - 中部 10×10 物品网格(每格 29×29 px),绘制商店物品图标、染色、堆叠角标、鼠标悬停高亮。 - 底部功能按钮栏:购买/出售、单件修理锤、全身修理(显示总修理费)、赌博刷新按钮(赌博模式)与关闭按钮。 3. **左右双栏联动与 Tooltip 价格展示 (`src/ui/hud-manager.ts` & `src/ui/inventory.ts`)**: - 打开左侧 `vendor` 面板时自动打开右侧玩家背包 (`rightOpen.inventory = true`)。 - 悬停商店物品时:Tooltip 显示原版属性 + **`购买价格: X 金币`**(金币不足时标红)。 - 悬停玩家背包/装备物品时:Tooltip 显示 **`出售价格: X 金币`**(修理光标激活时显示 **`修理费用: X 金币`**)。 - 支持右键快捷购买/出售、Shift+右键批量买满药水/卷轴、左键拖拽买卖。 ## 验收标准 - [ ] 左侧商店面板与右侧背包面板严丝合缝并排显示,所有买卖/修理/赌博操作流畅闭环。
troytt added this to the [M19] 原版商人 NPC 与交易经济系统 (1.13c Ground Truth) milestone 2026-09-26 04:22:15 +00:00
troytt changed title from [M15-P5] 实装原版四分页商人面板 UI 与买卖交互 (Panel\NPCInv.dc6 + Buy/Sell/Repair/Gamble) to [M19-P5] 实装原版四分页商人面板 UI 与买卖交互 (Panel\NPCInv.dc6 + Buy/Sell/Repair/Gamble) 2026-09-26 04:24:35 +00:00
Author
Owner

Implemented and verified in commit 3b993cf (tsc --noEmit 0 errors, vitest 17/17 passing, headless Chrome UI verification passing).

Implemented and verified in commit `3b993cf` (`tsc --noEmit` 0 errors, `vitest` 17/17 passing, headless Chrome UI verification passing).
Sign in to join this conversation.
No Label
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#485
No description provided.