Commit Graph

434 Commits

Author SHA1 Message Date
85d4b9f610 refactor: UI 换用新的按键系统 2026-10-26 18:45:07 +08:00
88c4f5112c refactor: 按键系统的部分实现 2026-10-24 18:25:06 +08:00
7d323e1674 rename: @motajs/system/src/hotkey/type.ts 2026-10-23 20:54:15 +08:00
0b7eac364f refactor: 按键注册 2026-10-23 20:41:40 +08:00
564f53d82a refactor: 按键系统 2026-10-22 22:25:59 +08:00
d5b2a820d8 fix: 动静转换的 keepEvent 问题 2026-10-22 20:18:31 +08:00
9d4b4f5d9f fix: 装备的属性对比 2026-10-22 20:18:11 +08:00
a7dc542671 fix: IDataCommon 漏写 enemyStore 2026-10-20 21:25:16 +08:00
e6f4346924 refactor: 插件系统结构 2026-10-20 20:44:33 +08:00
8f32509199 refactor: UI 挪到 src 2026-10-19 21:18:22 +08:00
f53f611db0 refactor: 删除 legacy 的大部分内容 2026-10-19 20:12:47 +08:00
3f74d5f25e feat: 完善内置特殊属性 2026-10-16 20:30:04 +08:00
a0e402728e refactor: 数据端用户结构 2026-10-16 17:29:51 +08:00
0a133058ca refactor: 渲染端初始化移动至主插件 2026-10-16 00:41:58 +08:00
7fde97ff1e feat: list 文件的配置类型定义 2026-10-15 14:59:48 +08:00
d1ebca0b16 chore: 调整加载接口 2026-10-14 20:41:14 +08:00
2f3d3387a0 refactor: 插件系统 & 数据端顶层移植 2026-10-14 20:32:46 +08:00
a15b79b29f feat: 商店系统实现 2026-10-12 19:17:06 +08:00
c1ebd25892 refactor: 怪物特殊属性适应新接口 2026-10-12 17:05:58 +08:00
0747fcaa9a refactor(09-13): replace core.drawTip/core.playSound callsites with direct interfaces
- ui/save.tsx: core.drawTip(validation.message) -> TipStore.get('main-tip')?.drawTip(...) (C:drawTip)

- ui/settings.tsx: core.playSound('confirm.opus') -> props.state.soundPlayer.play('confirm.opus') (C:playSound)

- no client singleton; no new naming; no import type
2026-10-12 16:13:35 +08:00
12bb67b5db refactor(09-13): remove legacy fallback layer and de-wire index.ts
- delete fallback/{index,audio,ui,weather,load}.ts (A-7/A-1/A-4)

- index.ts: drop patchAll import/call and export * from './fallback'

- create() keeps createRender(); no new naming
2026-10-12 16:12:25 +08:00
00379e1861 chore: 微调四个 UI 的代码 2026-10-11 16:02:43 +08:00
fc159ce11f feat(09-10): apply R-2/R-3/R-4/R-5/R-6/R-7 review fixes to equipbox, toolbox & shop
- R-2: render descriptions via TextContent (equipbox/toolbox/shop)
- R-3: add jsDoc to top-level definitions
- R-4: add JSX section comments
- R-5: un-export IHeroAttrItem and IShopItemEntry
- R-6: isNil for literals, ! for objects (no === null / undefined)
- R-7: move top-level openShop call into onMounted
2026-10-11 15:57:14 +08:00
4c383f6999 feat(09-10): apply R-1/R-2/R-3/R-4/R-6/R-8 review fixes to book & bookDetail
- R-1: remove self-drawn full-screen background in book/bookDetail
- R-2: render special description via TextContent
- R-3: add jsDoc to top-level definitions
- R-4: add JSX section comments
- R-6: null checks use truthiness (no !== null)
- R-8: replace 'getBaseEnemy' in enemy with instanceof EnemyView
2026-10-11 15:52:10 +08:00
c8849f1f64 feat(09-09): add shop quantity selector, buy/sell and exit
- 4-button quantity << < n > >> (step 10/1), clamped to stock (buy) or owned (sell), remembered per item and per mode
- price info row shows buy/sell/stock/owned/total above buttons
- buy/sell via props.shopSystem.buyItem/sellItem; openShop(props.shop) in setup; exit via controller.close
2026-10-11 14:56:13 +08:00
2531940d45 feat(09-09): add shop UI layout, shop list and price info
- new shop.tsx exporting Shop/ShopUI/ShopProps/IShopItemEntry
- top buy/sell mode toggle; left scrollable shop list sorted by num with stock right-aligned
- right column name / description / price info (buy via getPrice)
2026-10-11 14:55:19 +08:00
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
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
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
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
7140ae6987 feat: 商店接口 2026-10-10 19:35:44 +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
77a8adc05d feat: 特殊光环描述 2026-10-10 17:42:34 +08:00
a2dd4ace72 style: prettier 2026-10-10 15:20:58 +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
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
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
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