Commit Graph

819 Commits

Author SHA1 Message Date
08f9b41e93 feat(09-08): toolbox 单击选中 / 再点使用 / 右下退出
- 单击道具行选中,再次点击已选中项调用 heroState.items.useItem
- 右下退出按钮调用 props.controller.close(props.instance)
- 无丢弃 / 拖拽(D-36)

- 已忽略全角/半角措辞
2026-10-11 14:42:44 +08:00
f039ebc542 feat(09-08): toolbox 道具栏三列布局与道具列表
- 新增 toolbox.tsx:永久道具 / 可消耗道具 / 道具信息三列布局
- 以 heroState.items.iterateItems() 枚举背包,过滤 hideInToolbox
- 各组按数量降序、数量相同按图块数字升序
- 行渲染 <icon> + raw.name + core.formatBigNumber(count)
- 右列展示 raw.name 与 raw.text;列表 / 说明纵向 <Scroll noscroll>
- 右下退出按钮(本任务仅视觉占位)
2026-10-11 14:42:12 +08:00
e575944df5 docs(09): mark plan 09-07 complete in roadmap progress 2026-10-11 14:32:23 +08:00
2059c68e25 docs(09-07): complete equipbox plan summary 2026-10-11 14:31:49 +08:00
ba0732eb1d feat(09-07): add equipbox interactions and exit
- click select; re-click owned equip calls hero.equip.equip(uid, slot, true)
- drag owned to slot equips; drag equipped slot unequips (render action events)
- bottom-right exit calls props.controller.close(props.instance)
2026-10-11 14:30:50 +08:00
2217e0994e feat(09-07): add equipbox layout and data enumeration
- new ui/equipbox.tsx: left status column, right desc/slot/owned regions
- owned equipment sorted by item.num; slots from hero.equip.slots
- diff via hero.equip.compareEquip (-1 = no equipment)
2026-10-11 14:28:20 +08:00
1fe68b9f2b docs(09): record task 3 review findings (no UI background; TextContent for long text) 2026-10-11 14:16:12 +08:00
e321753058 docs(09): mark plan 09-06 complete in roadmap progress 2026-10-11 13:47:59 +08:00
11aaafeaef docs(09-06): complete book enemy handbook plan
- bookDetail.tsx: independent detail UI (base/computed, special list, critical table)
- book.tsx: handbook list UI (enemyContext, dedupe by code, 9 columns, open detail)
- static symbol + CRLF + scope gates all pass; OI-4..OI-6 recorded
2026-10-11 13:46:24 +08:00
0f0b2770fe feat(09-06): add enemy handbook list UI (book.tsx)
- Book / BookUI bound to props.state.enemyContext
- dedupe enemies by base.code, vertical Scroll list
- 9 columns: icon/name/specials/hp/atk/def/money/exp + damage/critical/reduce/1-def
- critical via calculateEnemyCritical (base path); 1-def via with(isolated +1 def)
- click row opens BookDetailUI; bottom-right exit closes instance
2026-10-11 13:44:43 +08:00
04fc4ff81e feat(09-06): add independent enemy detail UI (bookDetail.tsx)
- BookDetail / BookDetailUI over IEnemy | IEnemyView input
- base/computed toggle via getBaseEnemy/getComputedEnemy
- special list via iterateSpecials + getSpecialName/getDescription
- critical table via calculateEnemyCritical (base) / calculateViewCritical (computed)
- bottom-left toggle, bottom-right back (controller.close)
2026-10-11 13:43:05 +08:00
8951c54c88 fix(09-minimum-browser-runnable): revise 09-09 plan per checker feedback 2026-10-10 22:23:01 +08:00
7f0c90e3af docs(09): finalize shop plan (09-09) - GAP-S4 resolved, OI-S6 confirmed, drop hotkey name caveat 2026-10-10 20:18:37 +08:00
5bace98025 feat: 导出商店系统 2026-10-10 20:07:04 +08:00
88b4571da5 feat: 商店系统 2026-10-10 19:58:48 +08:00
3a6269be60 feat: 导出 shop 接口 2026-10-10 19:47:43 +08:00
6d24d826bc docs(09): un-defer shop interface note (interface provided) 2026-10-10 19:40:57 +08:00
ff71899f12 docs(09): create phase plan (09-09 shop) 2026-10-10 19:38:58 +08:00
7140ae6987 feat: 商店接口 2026-10-10 19:35:44 +08:00
e2b44441c7 fix(09): revise plans based on checker feedback 2026-10-10 19:20:47 +08:00
337d28c1d7 docs(09): revise book/equipbox/toolbox plans to consume new data-end interfaces
- book: wire base-attribute critical/damage via calculateEnemyCritical; rename calculateCritical->calculateViewCritical; @user/data-system dependency already declared (no package.json change)
- equipbox: single-equipment delta via compareEquip(uid,-1,slot)/(-1,uid,slot)
- toolbox: enumerate owned items via IHeroItems.iterateItems() (drop saveState workaround)
2026-10-10 19:12:37 +08:00
afc484465e feat: 新增道具迭代方法 2026-10-10 18:51:28 +08:00
ea7a404cc6 feat: 与空装备对比 2026-10-10 18:49:14 +08:00
751f206829 feat: 添加裸怪物临界计算 2026-10-10 18:45:29 +08:00
1d0c7db3cc docs(09): plan task 3 book/equipbox/toolbox (pending data-end interfaces) 2026-10-10 18:27:34 +08:00
1633ce268f chore: Agent UI 参考图片忽略 2026-10-10 17:43:51 +08:00
e287aa440e docs(09): capture task 3 interface designs (book/equipbox/toolbox/shop) 2026-10-10 17:43:22 +08:00
77a8adc05d feat: 特殊光环描述 2026-10-10 17:42:34 +08:00
a2dd4ace72 style: prettier 2026-10-10 15:20:58 +08:00
cdfe7ffc76 docs(09): add task 2 plan 09-05 (migration UI repair) and mark progress 2026-10-10 14:59:31 +08:00
6f3095cb9b docs(09-05): complete migration UI repair plan (A prettier + B IUIController generics + C src/ui type errors) 2026-10-10 14:24:04 +08:00
8cfbc7333e fix(09-05): repair src/ui migration type errors and prettier ui files
- main.tsx: p.state -> props.state (09-04 leftover typo)
2026-10-10 14:17:41 +08:00
3a49b37c25 fix(09-05): adapt IUIController/UIController to required IGameUIPropsBase generic
- add <IGameUIPropsBase> to 16 IUIController annotation sites (client-modules + client-base)
2026-10-10 14:14:12 +08:00
1bcdcc3677 refactor: 特殊属性定义方式 2026-10-09 20:09:51 +08:00
46bcafcfbb docs(09): mark plan 09-04 complete in roadmap progress 2026-10-09 18:56:04 +08:00
f584bd7301 docs(09-04): complete status ownership migration plan
- record Task 0 blocking-human checkpoint satisfied (defaults adopted)

- Task 1 statusBar.tsx 61b618e; Task 2 main.tsx 4581350
2026-10-09 18:55:35 +08:00
458135037c refactor(09-04): clean up main.tsx after status ownership migration
- remove replayStatus/leftStatus/rightStatus defs, updateStatus, updateDataFallback

- remove dead write-only locked ref and attributeHook + its onUnmounted

- drop status={...} props on LeftStatusBar/RightStatusBar

- hideStatus now reads flag default once at setup + // TODO: (flags has no listen system)

- preserve hideStatus consumers, map render, interaction handlers, mainUIController, MainSceneUI

- drop now-unused imports (onUnmounted/reactive/ILeftHeroStatus/IRightHeroStatus/ReplayingStatus)
2026-10-09 18:53:04 +08:00
61b618e533 refactor(09-04): migrate status-bar state ownership into statusBar.tsx
- LeftStatusBar/RightStatusBar self-own leftStatus/rightStatus (reactive)

- attributes+lv refresh via hero.attribute.addHook({ onUpdateAttribute })

- floor trigger via hero.location.addHook({ onSetFloor }); value stays legacy core.status.floorId

- no-hook fields (up/items/debuff/replay/exampleHard) left as // TODO:

- onUnmounted unloads both hooks; StatusBarProps drops status member and generic
2026-10-09 18:51:26 +08:00
c52bf9abee fix(09): anchor 09-04 Task 0 pre-state regex to local leftStatus declaration (exclude leftStatusBarUI export) 2026-10-09 18:07:15 +08:00
7798ba1987 fix(09): revise 09-04 plan based on checker feedback (narrow p.status gate to executable reads; note stale line-463 comment) 2026-10-09 18:01:29 +08:00
f18d577b77 docs(09-4): redesign plan — status ownership into statusBar + per-field hooks/TODO 2026-10-09 17:55:24 +08:00
3f2e3b1083 docs(09): mark plan 09-03 complete in roadmap progress 2026-10-09 17:19:45 +08:00
c5049769f8 docs(09-3): complete D-11 UI alignment plan (props.state + D-13 TODO) 2026-10-09 17:19:15 +08:00
699b0b09a0 refactor(09-3): align main/statusBar/toolbar to props.state (D-11/D-13)
- main.tsx: add MainSceneProps extends IUIPropsBase + props decl; mainMapRenderer/mainMapExtension/flags/9x getFinalAttribute/addHook -> props.state; thread state={props.state} to LeftStatusBar/RightStatusBar; D-13 TODOs (3); keep state/using/mainUIController
- statusBar.tsx: StatusBarProps base + IUIPropsBase + 'state' prop; client.materials -> p.state.materials; thread state to MixedToolbar
- toolbar.tsx: ToolbarProps/ReplayingProps base + IUIPropsBase + 'state' prop; client.materials -> props.state.materials; thread state to child toolbars
2026-10-09 17:17:31 +08:00
d1f167ce6f refactor(09-3): align settings.tsx to props.state (D-11/D-13)
- MainSettingsProps base IUIDefaultPropsBase -> IUIPropsBase; props array adds 'state'
- client.flags -> props.state.flags (2 sites); drop client import
- D-13: add // TODO: at both __seed__ flags read sites
2026-10-09 17:17:22 +08:00
804844e5b5 docs(09): mark plan 09-02 complete in roadmap progress 2026-10-09 17:06:34 +08:00
303287831a docs(09-02): complete D-10 closure plan (remaining 4 modules + consumer rewire + delete render/ui) 2026-10-09 17:05:58 +08:00
2ed60467a1 feat(09-02): rewire cross-dir consumers, add package-root ./ui barrel, delete render/ui
- render/index.tsx: imports now '../ui' / '../ui/load'; remove the './ui' re-export (dead link + D-69)
- render/action.ts: import './ui' -> '../ui'
- client.ts: import './render/ui/load' -> './ui/load'
- index.ts: add export * from './ui' (ui surface kept via package root)
- delete render/ui/{title,load,index}; remove the now-empty render/ui directory
2026-10-09 17:04:30 +08:00
964f479270 feat(09-02): migrate main/settings/statusBar/toolbar to src/ui and rebuild barrel
- Move render/ui/{main,settings,statusBar,toolbar}.tsx to src/ui/ with only relative specifiers rewritten
- Rewrite render capabilities to leaf modules (../render/use, ../render/renderer), never the ../render barrel
- Complete src/ui/index.ts with ./main ./settings ./statusBar ./toolbar + createUI()
- Delete the four old render/ui files
2026-10-09 16:59:54 +08:00
6a3812252b docs(09): mark plan 09-01 complete in roadmap progress 2026-10-09 16:00:28 +08:00