@rpgjs/client 5.0.0-alpha.9 → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/dist/Game/AnimationManager.d.ts +8 -0
  2. package/dist/Game/AnimationManager.js +26 -0
  3. package/dist/Game/AnimationManager.js.map +1 -0
  4. package/dist/Game/Event.d.ts +1 -1
  5. package/dist/Game/Event.js +12 -0
  6. package/dist/Game/Event.js.map +1 -0
  7. package/dist/Game/Map.d.ts +23 -2
  8. package/dist/Game/Map.js +80 -0
  9. package/dist/Game/Map.js.map +1 -0
  10. package/dist/Game/Object.d.ts +157 -0
  11. package/dist/Game/Object.js +211 -0
  12. package/dist/Game/Object.js.map +1 -0
  13. package/dist/Game/Player.d.ts +1 -1
  14. package/dist/Game/Player.js +12 -0
  15. package/dist/Game/Player.js.map +1 -0
  16. package/dist/Gui/Gui.d.ts +177 -5
  17. package/dist/Gui/Gui.js +445 -0
  18. package/dist/Gui/Gui.js.map +1 -0
  19. package/dist/Gui/NotificationManager.d.ts +23 -0
  20. package/dist/Gui/NotificationManager.js +49 -0
  21. package/dist/Gui/NotificationManager.js.map +1 -0
  22. package/dist/Resource.d.ts +97 -0
  23. package/dist/Resource.js +133 -0
  24. package/dist/Resource.js.map +1 -0
  25. package/dist/RpgClient.d.ts +238 -11
  26. package/dist/RpgClientEngine.d.ts +615 -14
  27. package/dist/RpgClientEngine.js +1334 -0
  28. package/dist/RpgClientEngine.js.map +1 -0
  29. package/dist/Sound.d.ts +199 -0
  30. package/dist/Sound.js +167 -0
  31. package/dist/Sound.js.map +1 -0
  32. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +9 -0
  33. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +6 -0
  34. package/dist/components/animations/animation.ce.js +24 -0
  35. package/dist/components/animations/animation.ce.js.map +1 -0
  36. package/dist/components/animations/hit.ce.js +70 -0
  37. package/dist/components/animations/hit.ce.js.map +1 -0
  38. package/dist/components/animations/index.d.ts +4 -0
  39. package/dist/components/animations/index.js +11 -0
  40. package/dist/components/animations/index.js.map +1 -0
  41. package/dist/components/character.ce.js +392 -0
  42. package/dist/components/character.ce.js.map +1 -0
  43. package/dist/components/dynamics/parse-value.d.ts +1 -0
  44. package/dist/components/dynamics/parse-value.js +44 -0
  45. package/dist/components/dynamics/parse-value.js.map +1 -0
  46. package/dist/components/dynamics/text.ce.js +73 -0
  47. package/dist/components/dynamics/text.ce.js.map +1 -0
  48. package/dist/components/gui/box.ce.js +28 -0
  49. package/dist/components/gui/box.ce.js.map +1 -0
  50. package/dist/components/gui/dialogbox/index.ce.js +205 -0
  51. package/dist/components/gui/dialogbox/index.ce.js.map +1 -0
  52. package/dist/components/gui/gameover.ce.js +193 -0
  53. package/dist/components/gui/gameover.ce.js.map +1 -0
  54. package/dist/components/gui/hud/hud.ce.js +92 -0
  55. package/dist/components/gui/hud/hud.ce.js.map +1 -0
  56. package/dist/components/gui/index.d.ts +15 -3
  57. package/dist/components/gui/index.js +14 -0
  58. package/dist/components/gui/menu/equip-menu.ce.js +481 -0
  59. package/dist/components/gui/menu/equip-menu.ce.js.map +1 -0
  60. package/dist/components/gui/menu/exit-menu.ce.js +54 -0
  61. package/dist/components/gui/menu/exit-menu.ce.js.map +1 -0
  62. package/dist/components/gui/menu/items-menu.ce.js +344 -0
  63. package/dist/components/gui/menu/items-menu.ce.js.map +1 -0
  64. package/dist/components/gui/menu/main-menu.ce.js +417 -0
  65. package/dist/components/gui/menu/main-menu.ce.js.map +1 -0
  66. package/dist/components/gui/menu/options-menu.ce.js +48 -0
  67. package/dist/components/gui/menu/options-menu.ce.js.map +1 -0
  68. package/dist/components/gui/menu/skills-menu.ce.js +107 -0
  69. package/dist/components/gui/menu/skills-menu.ce.js.map +1 -0
  70. package/dist/components/gui/mobile/index.d.ts +8 -0
  71. package/dist/components/gui/mobile/index.js +21 -0
  72. package/dist/components/gui/mobile/index.js.map +1 -0
  73. package/dist/components/gui/mobile/mobile.ce.js +78 -0
  74. package/dist/components/gui/mobile/mobile.ce.js.map +1 -0
  75. package/dist/components/gui/notification/notification.ce.js +64 -0
  76. package/dist/components/gui/notification/notification.ce.js.map +1 -0
  77. package/dist/components/gui/save-load.ce.js +389 -0
  78. package/dist/components/gui/save-load.ce.js.map +1 -0
  79. package/dist/components/gui/shop/shop.ce.js +652 -0
  80. package/dist/components/gui/shop/shop.ce.js.map +1 -0
  81. package/dist/components/gui/title-screen.ce.js +190 -0
  82. package/dist/components/gui/title-screen.ce.js.map +1 -0
  83. package/dist/components/index.d.ts +1 -0
  84. package/dist/components/index.js +4 -0
  85. package/dist/components/prebuilt/hp-bar.ce.js +116 -0
  86. package/dist/components/prebuilt/hp-bar.ce.js.map +1 -0
  87. package/dist/components/prebuilt/index.d.ts +19 -0
  88. package/dist/components/prebuilt/index.js +2 -0
  89. package/dist/components/prebuilt/light-halo.ce.js +94 -0
  90. package/dist/components/prebuilt/light-halo.ce.js.map +1 -0
  91. package/dist/components/scenes/canvas.ce.js +60 -0
  92. package/dist/components/scenes/canvas.ce.js.map +1 -0
  93. package/dist/components/scenes/draw-map.ce.js +89 -0
  94. package/dist/components/scenes/draw-map.ce.js.map +1 -0
  95. package/dist/components/scenes/event-layer.ce.js +28 -0
  96. package/dist/components/scenes/event-layer.ce.js.map +1 -0
  97. package/dist/core/inject.js +18 -0
  98. package/dist/core/inject.js.map +1 -0
  99. package/dist/core/setup.js +16 -0
  100. package/dist/core/setup.js.map +1 -0
  101. package/dist/index.d.ts +15 -1
  102. package/dist/index.js +44 -14
  103. package/dist/module.d.ts +43 -4
  104. package/dist/module.js +176 -0
  105. package/dist/module.js.map +1 -0
  106. package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js +277 -0
  107. package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +1 -0
  108. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +457 -0
  109. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +1 -0
  110. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +463 -0
  111. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +1 -0
  112. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +2191 -0
  113. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +1 -0
  114. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +10 -0
  115. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +1 -0
  116. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +91 -0
  117. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +1 -0
  118. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js +325 -0
  119. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +1 -0
  120. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +14 -0
  121. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +1 -0
  122. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js +115 -0
  123. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -0
  124. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js +401 -0
  125. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -0
  126. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/index.js +2 -0
  127. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js +3756 -0
  128. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -0
  129. package/dist/presets/animation.d.ts +31 -0
  130. package/dist/presets/animation.js +39 -0
  131. package/dist/presets/animation.js.map +1 -0
  132. package/dist/presets/faceset.d.ts +30 -0
  133. package/dist/presets/faceset.js +51 -0
  134. package/dist/presets/faceset.js.map +1 -0
  135. package/dist/presets/icon.d.ts +20 -0
  136. package/dist/presets/icon.js +15 -0
  137. package/dist/presets/icon.js.map +1 -0
  138. package/dist/presets/index.d.ts +123 -0
  139. package/dist/presets/index.js +17 -0
  140. package/dist/presets/index.js.map +1 -0
  141. package/dist/presets/lpc.d.ts +89 -0
  142. package/dist/presets/lpc.js +98 -0
  143. package/dist/presets/lpc.js.map +1 -0
  144. package/dist/presets/rmspritesheet.js +42 -0
  145. package/dist/presets/rmspritesheet.js.map +1 -0
  146. package/dist/services/AbstractSocket.d.ts +9 -5
  147. package/dist/services/AbstractSocket.js +11 -0
  148. package/dist/services/AbstractSocket.js.map +1 -0
  149. package/dist/services/keyboardControls.d.ts +15 -0
  150. package/dist/services/keyboardControls.js +23 -0
  151. package/dist/services/keyboardControls.js.map +1 -0
  152. package/dist/services/loadMap.js +123 -0
  153. package/dist/services/loadMap.js.map +1 -0
  154. package/dist/services/mmorpg.d.ts +21 -9
  155. package/dist/services/mmorpg.js +131 -0
  156. package/dist/services/mmorpg.js.map +1 -0
  157. package/dist/services/save.d.ts +19 -0
  158. package/dist/services/save.js +77 -0
  159. package/dist/services/save.js.map +1 -0
  160. package/dist/services/standalone.d.ts +67 -7
  161. package/dist/services/standalone.js +168 -0
  162. package/dist/services/standalone.js.map +1 -0
  163. package/dist/utils/getEntityProp.d.ts +39 -0
  164. package/dist/utils/getEntityProp.js +52 -0
  165. package/dist/utils/getEntityProp.js.map +1 -0
  166. package/package.json +13 -9
  167. package/src/Game/{EffectManager.ts → AnimationManager.ts} +3 -2
  168. package/src/Game/Event.ts +1 -1
  169. package/src/Game/Map.ts +95 -3
  170. package/src/Game/Object.ts +330 -14
  171. package/src/Game/Player.ts +1 -1
  172. package/src/Gui/Gui.ts +506 -18
  173. package/src/Gui/NotificationManager.ts +69 -0
  174. package/src/Resource.ts +150 -0
  175. package/src/RpgClient.ts +246 -12
  176. package/src/RpgClientEngine.ts +1641 -62
  177. package/src/Sound.ts +253 -0
  178. package/src/components/{effects → animations}/animation.ce +3 -6
  179. package/src/components/{effects → animations}/index.ts +1 -1
  180. package/src/components/character.ce +387 -52
  181. package/src/components/dynamics/parse-value.ts +80 -0
  182. package/src/components/dynamics/text.ce +183 -0
  183. package/src/components/gui/box.ce +17 -0
  184. package/src/components/gui/dialogbox/index.ce +204 -187
  185. package/src/components/gui/gameover.ce +158 -0
  186. package/src/components/gui/hud/hud.ce +61 -0
  187. package/src/components/gui/index.ts +30 -4
  188. package/src/components/gui/menu/equip-menu.ce +410 -0
  189. package/src/components/gui/menu/exit-menu.ce +41 -0
  190. package/src/components/gui/menu/items-menu.ce +317 -0
  191. package/src/components/gui/menu/main-menu.ce +294 -0
  192. package/src/components/gui/menu/options-menu.ce +35 -0
  193. package/src/components/gui/menu/skills-menu.ce +83 -0
  194. package/src/components/gui/mobile/index.ts +24 -0
  195. package/src/components/gui/mobile/mobile.ce +80 -0
  196. package/src/components/gui/notification/notification.ce +51 -0
  197. package/src/components/gui/save-load.ce +208 -0
  198. package/src/components/gui/shop/shop.ce +493 -0
  199. package/src/components/gui/title-screen.ce +163 -0
  200. package/src/components/index.ts +3 -0
  201. package/src/components/prebuilt/hp-bar.ce +255 -0
  202. package/src/components/prebuilt/index.ts +24 -0
  203. package/src/components/prebuilt/light-halo.ce +148 -0
  204. package/src/components/scenes/canvas.ce +20 -15
  205. package/src/components/scenes/draw-map.ce +60 -13
  206. package/src/components/scenes/event-layer.ce +7 -0
  207. package/src/components/scenes/transition.ce +60 -0
  208. package/src/index.ts +16 -2
  209. package/src/module.ts +127 -9
  210. package/src/presets/animation.ts +46 -0
  211. package/src/presets/faceset.ts +60 -0
  212. package/src/presets/icon.ts +17 -0
  213. package/src/presets/index.ts +9 -1
  214. package/src/presets/lpc.ts +108 -0
  215. package/src/services/AbstractSocket.ts +10 -2
  216. package/src/services/keyboardControls.ts +20 -0
  217. package/src/services/loadMap.ts +1 -1
  218. package/src/services/mmorpg.ts +100 -12
  219. package/src/services/save.ts +103 -0
  220. package/src/services/standalone.ts +110 -18
  221. package/src/utils/getEntityProp.ts +87 -0
  222. package/vite.config.ts +4 -2
  223. package/dist/Game/EffectManager.d.ts +0 -5
  224. package/dist/components/effects/index.d.ts +0 -4
  225. package/dist/index.js.map +0 -1
  226. package/dist/index10.js +0 -8
  227. package/dist/index10.js.map +0 -1
  228. package/dist/index11.js +0 -10
  229. package/dist/index11.js.map +0 -1
  230. package/dist/index12.js +0 -8
  231. package/dist/index12.js.map +0 -1
  232. package/dist/index13.js +0 -17
  233. package/dist/index13.js.map +0 -1
  234. package/dist/index14.js +0 -107
  235. package/dist/index14.js.map +0 -1
  236. package/dist/index15.js +0 -50
  237. package/dist/index15.js.map +0 -1
  238. package/dist/index16.js +0 -191
  239. package/dist/index16.js.map +0 -1
  240. package/dist/index17.js +0 -9
  241. package/dist/index17.js.map +0 -1
  242. package/dist/index18.js +0 -387
  243. package/dist/index18.js.map +0 -1
  244. package/dist/index19.js +0 -31
  245. package/dist/index19.js.map +0 -1
  246. package/dist/index2.js +0 -181
  247. package/dist/index2.js.map +0 -1
  248. package/dist/index20.js +0 -24
  249. package/dist/index20.js.map +0 -1
  250. package/dist/index21.js +0 -2421
  251. package/dist/index21.js.map +0 -1
  252. package/dist/index22.js +0 -114
  253. package/dist/index22.js.map +0 -1
  254. package/dist/index23.js +0 -109
  255. package/dist/index23.js.map +0 -1
  256. package/dist/index24.js +0 -71
  257. package/dist/index24.js.map +0 -1
  258. package/dist/index25.js +0 -21
  259. package/dist/index25.js.map +0 -1
  260. package/dist/index26.js +0 -41
  261. package/dist/index26.js.map +0 -1
  262. package/dist/index27.js +0 -5
  263. package/dist/index27.js.map +0 -1
  264. package/dist/index28.js +0 -322
  265. package/dist/index28.js.map +0 -1
  266. package/dist/index29.js +0 -27
  267. package/dist/index29.js.map +0 -1
  268. package/dist/index3.js +0 -87
  269. package/dist/index3.js.map +0 -1
  270. package/dist/index30.js +0 -11
  271. package/dist/index30.js.map +0 -1
  272. package/dist/index31.js +0 -11
  273. package/dist/index31.js.map +0 -1
  274. package/dist/index32.js +0 -174
  275. package/dist/index32.js.map +0 -1
  276. package/dist/index33.js +0 -501
  277. package/dist/index33.js.map +0 -1
  278. package/dist/index34.js +0 -12
  279. package/dist/index34.js.map +0 -1
  280. package/dist/index35.js +0 -4403
  281. package/dist/index35.js.map +0 -1
  282. package/dist/index36.js +0 -316
  283. package/dist/index36.js.map +0 -1
  284. package/dist/index37.js +0 -61
  285. package/dist/index37.js.map +0 -1
  286. package/dist/index38.js +0 -20
  287. package/dist/index38.js.map +0 -1
  288. package/dist/index39.js +0 -20
  289. package/dist/index39.js.map +0 -1
  290. package/dist/index4.js +0 -67
  291. package/dist/index4.js.map +0 -1
  292. package/dist/index5.js +0 -16
  293. package/dist/index5.js.map +0 -1
  294. package/dist/index6.js +0 -17
  295. package/dist/index6.js.map +0 -1
  296. package/dist/index7.js +0 -39
  297. package/dist/index7.js.map +0 -1
  298. package/dist/index8.js +0 -108
  299. package/dist/index8.js.map +0 -1
  300. package/dist/index9.js +0 -76
  301. package/dist/index9.js.map +0 -1
  302. package/src/components/gui/dialogbox/itemMenu.ce +0 -23
  303. package/src/components/gui/dialogbox/selection.ce +0 -67
  304. /package/src/components/{effects → animations}/hit.ce +0 -0
@@ -0,0 +1,481 @@
1
+ import { inject } from "../../../core/inject.js";
2
+ import { RpgClientEngine } from "../../../RpgClientEngine.js";
3
+ import { DOMContainer, DOMElement, DOMSprite, Navigation, computed, cond, createTabindexNavigator, effect, h, loop, signal, useDefineProps, useProps } from "canvasengine";
4
+ //#region src/components/gui/menu/equip-menu.ce
5
+ function component($$props) {
6
+ useProps($$props);
7
+ const defineProps = useDefineProps($$props);
8
+ var __assign = this && this.__assign || function() {
9
+ __assign = Object.assign || function(t) {
10
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
11
+ s = arguments[i];
12
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
13
+ }
14
+ return t;
15
+ };
16
+ return __assign.apply(this, arguments);
17
+ };
18
+ var __spreadArray = this && this.__spreadArray || function(to, from, pack) {
19
+ if (pack || arguments.length === 2) {
20
+ for (var i = 0, l = from.length, ar; i < l; i++) if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ var engine = inject(RpgClientEngine);
28
+ var keyboardControls = engine.globalConfig.keyboardControls;
29
+ var currentPlayer = engine.scene.currentPlayer;
30
+ var selectedTab = signal(0);
31
+ var selectedItem = signal(0);
32
+ var _a = defineProps(), data = _a.data, onInteraction = _a.onInteraction, onBack = _a.onBack;
33
+ var equips = computed(function() {
34
+ var _a;
35
+ return (_a = data().equips) !== null && _a !== void 0 ? _a : data().items;
36
+ });
37
+ var slots = computed(function() {
38
+ return data().slots;
39
+ });
40
+ var defaultSlots = [{
41
+ id: "weapon",
42
+ label: "Weapon",
43
+ types: ["weapon"]
44
+ }, {
45
+ id: "armor",
46
+ label: "Armor",
47
+ types: ["armor"]
48
+ }];
49
+ var resolveProp = function(value) {
50
+ return typeof value === "function" ? value() : value;
51
+ };
52
+ var safeEquips = computed(function() {
53
+ var list = resolveProp(equips);
54
+ return Array.isArray(list) ? list : [];
55
+ });
56
+ var slotList = computed(function() {
57
+ var list = resolveProp(slots);
58
+ if (Array.isArray(list) && list.length) return list;
59
+ return defaultSlots;
60
+ });
61
+ var currentSlot = computed(function() {
62
+ return slotList()[selectedTab()];
63
+ });
64
+ var equippedIds = computed(function() {
65
+ var _a, _b;
66
+ var equipped = ((_b = (_a = currentPlayer()).equipments) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
67
+ return new Set(equipped.map(function(it) {
68
+ var _a, _b, _c;
69
+ return (_c = (_b = (_a = it === null || it === void 0 ? void 0 : it.id) === null || _a === void 0 ? void 0 : _a.call(it)) !== null && _b !== void 0 ? _b : it === null || it === void 0 ? void 0 : it.id) !== null && _c !== void 0 ? _c : it === null || it === void 0 ? void 0 : it.name;
70
+ }));
71
+ });
72
+ var equippedOverrides = signal({});
73
+ effect(function() {
74
+ var next = {};
75
+ safeEquips().forEach(function(item) {
76
+ if ((item === null || item === void 0 ? void 0 : item.id) && typeof item.equipped === "boolean") next[item.id] = item.equipped;
77
+ });
78
+ equippedOverrides.set(next);
79
+ });
80
+ var itemEquipped = function(item) {
81
+ if (!item) return false;
82
+ var overrides = equippedOverrides();
83
+ if (Object.prototype.hasOwnProperty.call(overrides, item.id)) return overrides[item.id];
84
+ if (typeof item.equipped === "boolean") return item.equipped;
85
+ return equippedIds().has(item.id);
86
+ };
87
+ var slotTypes = function(slot) {
88
+ if (!slot) return [];
89
+ if (Array.isArray(slot.types)) return slot.types;
90
+ if (slot.type) return [slot.type];
91
+ if (slot.id) return [slot.id];
92
+ return [];
93
+ };
94
+ var slotItems = computed(function() {
95
+ var slot = currentSlot();
96
+ if (!slot) return [];
97
+ var types = new Set(slotTypes(slot));
98
+ return safeEquips().filter(function(item) {
99
+ return item && types.has(item.type);
100
+ });
101
+ });
102
+ var currentEquippedItem = computed(function() {
103
+ return slotItems().find(function(item) {
104
+ return itemEquipped(item);
105
+ }) || null;
106
+ });
107
+ var listEntries = computed(function() {
108
+ var items = slotItems().map(function(item) {
109
+ return __assign(__assign({}, item), {
110
+ kind: "item",
111
+ tag: itemEquipped(item) ? "Equipped" : ""
112
+ });
113
+ });
114
+ if (!currentEquippedItem()) return items;
115
+ return __spreadArray([{
116
+ id: "__unequip__",
117
+ name: "Unequip",
118
+ description: "Remove the current equipment",
119
+ kind: "unequip",
120
+ tag: ""
121
+ }], items, true);
122
+ });
123
+ var currentEntry = computed(function() {
124
+ return listEntries()[selectedItem()];
125
+ });
126
+ var detailsItem = computed(function() {
127
+ var entry = currentEntry();
128
+ if ((entry === null || entry === void 0 ? void 0 : entry.kind) === "item") return entry;
129
+ return currentEquippedItem();
130
+ });
131
+ var equippedText = computed(function() {
132
+ var slot = currentSlot();
133
+ if (!slot) return "";
134
+ var equipped = currentEquippedItem();
135
+ return equipped ? "".concat(slot.label, ": ").concat(equipped.name) : "".concat(slot.label, ": Empty");
136
+ });
137
+ computed(function() {
138
+ return listEntries().length === 0;
139
+ });
140
+ var nav = createTabindexNavigator(selectedItem, { count: function() {
141
+ return listEntries().length;
142
+ } }, "wrap");
143
+ var playerParams = computed(function() {
144
+ var _a, _b;
145
+ var menuData = data();
146
+ if (menuData === null || menuData === void 0 ? void 0 : menuData.playerStats) return menuData.playerStats;
147
+ if (menuData === null || menuData === void 0 ? void 0 : menuData.playerParams) return menuData.playerParams;
148
+ return ((_b = (_a = currentPlayer()) === null || _a === void 0 ? void 0 : _a._param) === null || _b === void 0 ? void 0 : _b.call(_a)) || {};
149
+ });
150
+ var statOrder = [
151
+ "atk",
152
+ "def",
153
+ "pdef",
154
+ "sdef",
155
+ "str",
156
+ "dex",
157
+ "int",
158
+ "agi",
159
+ "maxHp",
160
+ "maxSp"
161
+ ];
162
+ var statLabels = {
163
+ atk: "ATK",
164
+ def: "DEF",
165
+ pdef: "PDEF",
166
+ sdef: "SDEF",
167
+ str: "STR",
168
+ dex: "DEX",
169
+ int: "INT",
170
+ agi: "AGI",
171
+ maxHp: "MAX HP",
172
+ maxSp: "MAX SP"
173
+ };
174
+ var getItemStats = function(item) {
175
+ if (!item) return {};
176
+ var stats = item.stats || item.params || {};
177
+ if (Object.keys(stats).length) return stats;
178
+ var keys = [
179
+ "atk",
180
+ "def",
181
+ "pdef",
182
+ "sdef",
183
+ "str",
184
+ "dex",
185
+ "int",
186
+ "agi",
187
+ "maxHp",
188
+ "maxSp"
189
+ ];
190
+ var direct = {};
191
+ keys.forEach(function(key) {
192
+ if (item[key] !== void 0) direct[key] = item[key];
193
+ });
194
+ return direct;
195
+ };
196
+ var buildStatsList = function(deltaStats) {
197
+ var params = playerParams() || {};
198
+ var orderedKeys = statOrder.filter(function(key) {
199
+ return deltaStats[key] !== void 0;
200
+ });
201
+ var extraKeys = Object.keys(deltaStats).filter(function(key) {
202
+ return !statOrder.includes(key);
203
+ });
204
+ var keys = orderedKeys.concat(extraKeys);
205
+ var list = [];
206
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
207
+ var key = keys_1[_i];
208
+ var delta = deltaStats[key];
209
+ if (delta === void 0 || delta === 0) continue;
210
+ var current = params[key];
211
+ if (current === void 0 && key === "def") current = params.pdef;
212
+ var next = current !== void 0 ? current + delta : void 0;
213
+ list.push({
214
+ key,
215
+ label: statLabels[key] || key.toUpperCase(),
216
+ delta,
217
+ current,
218
+ next
219
+ });
220
+ }
221
+ return list;
222
+ };
223
+ var displayStats = computed(function() {
224
+ var entry = currentEntry();
225
+ var equipped = currentEquippedItem();
226
+ if (!entry) return [];
227
+ if (entry.kind === "unequip") {
228
+ if (!equipped) return [];
229
+ var stats_1 = getItemStats(equipped);
230
+ var delta_1 = {};
231
+ Object.keys(stats_1).forEach(function(key) {
232
+ delta_1[key] = -stats_1[key];
233
+ });
234
+ return buildStatsList(delta_1);
235
+ }
236
+ if (entry.kind === "item") {
237
+ var equippedStats_1 = getItemStats(equipped);
238
+ var nextStats_1 = getItemStats(entry);
239
+ var delta_2 = {};
240
+ new Set(__spreadArray(__spreadArray([], Object.keys(nextStats_1), true), Object.keys(equippedStats_1), true)).forEach(function(key) {
241
+ delta_2[key] = (nextStats_1[key] || 0) - (equippedStats_1[key] || 0);
242
+ });
243
+ return buildStatsList(delta_2);
244
+ }
245
+ return [];
246
+ });
247
+ var applyEquipState = function(slot, itemId, equip) {
248
+ var types = slotTypes(slot);
249
+ var next = __assign({}, equippedOverrides());
250
+ if (types.length) safeEquips().forEach(function(item) {
251
+ if (!item) return;
252
+ if (types.includes(item.type)) next[item.id] = false;
253
+ });
254
+ if (itemId) next[itemId] = equip;
255
+ equippedOverrides.set(next);
256
+ };
257
+ var commitSelection = function(index) {
258
+ var entry = listEntries()[index];
259
+ if (!entry) return;
260
+ if (entry.kind === "unequip") {
261
+ var equipped = currentEquippedItem();
262
+ if (equipped && onInteraction) onInteraction("equipItem", {
263
+ id: equipped.id,
264
+ equip: false
265
+ });
266
+ applyEquipState(currentSlot(), equipped === null || equipped === void 0 ? void 0 : equipped.id, false);
267
+ return;
268
+ }
269
+ if (entry.kind === "item" && onInteraction) {
270
+ if (!itemEquipped(entry)) onInteraction("equipItem", {
271
+ id: entry.id,
272
+ equip: true
273
+ });
274
+ applyEquipState(currentSlot(), entry.id, true);
275
+ }
276
+ };
277
+ function selectTab(index) {
278
+ return function() {
279
+ selectedTab.set(index);
280
+ selectedItem.set(0);
281
+ };
282
+ }
283
+ function selectItem(index) {
284
+ return function() {
285
+ selectedItem.set(index);
286
+ commitSelection(index);
287
+ };
288
+ }
289
+ var iconSheet = function(iconId) {
290
+ return { definition: engine.getSpriteSheet(iconId) };
291
+ };
292
+ var controls = signal({
293
+ up: {
294
+ repeat: true,
295
+ bind: keyboardControls.up,
296
+ throttle: 150,
297
+ keyDown: function() {
298
+ if (!listEntries().length) return;
299
+ nav.next(-1);
300
+ }
301
+ },
302
+ left: {
303
+ repeat: true,
304
+ bind: keyboardControls.left,
305
+ throttle: 150,
306
+ keyDown: function() {
307
+ var tabs = slotList();
308
+ if (!tabs.length) return;
309
+ selectedTab.update(function(value) {
310
+ return (value - 1 + tabs.length) % tabs.length;
311
+ });
312
+ selectedItem.set(0);
313
+ }
314
+ },
315
+ right: {
316
+ repeat: true,
317
+ bind: keyboardControls.right,
318
+ throttle: 150,
319
+ keyDown: function() {
320
+ var tabs = slotList();
321
+ if (!tabs.length) return;
322
+ selectedTab.update(function(value) {
323
+ return (value + 1) % tabs.length;
324
+ });
325
+ selectedItem.set(0);
326
+ }
327
+ },
328
+ down: {
329
+ repeat: true,
330
+ bind: keyboardControls.down,
331
+ throttle: 150,
332
+ keyDown: function() {
333
+ if (!listEntries().length) return;
334
+ nav.next(1);
335
+ }
336
+ },
337
+ action: {
338
+ bind: keyboardControls.action,
339
+ keyDown: function() {
340
+ if (!listEntries().length) return;
341
+ commitSelection(selectedItem());
342
+ }
343
+ },
344
+ escape: {
345
+ bind: keyboardControls.escape,
346
+ keyDown: function() {
347
+ if (onBack) onBack();
348
+ }
349
+ },
350
+ gamepad: { enabled: true }
351
+ });
352
+ effect(function() {
353
+ var count = listEntries().length;
354
+ if (!count) {
355
+ selectedItem.set(0);
356
+ return;
357
+ }
358
+ if (selectedItem() >= count) selectedItem.set(count - 1);
359
+ });
360
+ return h(DOMContainer, {
361
+ width: "100%",
362
+ height: "100%"
363
+ }, h(DOMElement, {
364
+ element: "div",
365
+ attrs: { class: "rpg-ui-menu-panel rpg-ui-panel" }
366
+ }, [h(DOMElement, {
367
+ element: "div",
368
+ attrs: { class: "rpg-ui-menu-panel-header" },
369
+ textContent: "Equip"
370
+ }), h(DOMElement, {
371
+ element: "div",
372
+ attrs: { class: "rpg-ui-menu-panel-body rpg-ui-menu-panel-body-stacked" }
373
+ }, [h(DOMElement, { element: "div" }, h(DOMElement, {
374
+ element: "div",
375
+ attrs: { class: "rpg-ui-menu-panel-details rpg-ui-panel" }
376
+ }, h(DOMElement, {
377
+ element: "div",
378
+ attrs: { class: "rpg-ui-menu-panel-hero" }
379
+ }, [h(DOMElement, {
380
+ element: "div",
381
+ attrs: { class: "rpg-ui-menu-panel-hero-icon" }
382
+ }, h(DOMSprite, {
383
+ sheet: computed(() => iconSheet(detailsItem()?.icon)),
384
+ playing: "default",
385
+ width: "48px",
386
+ height: "48px",
387
+ objectFit: "contain"
388
+ })), h(DOMElement, { element: "div" }, [
389
+ h(DOMElement, {
390
+ element: "div",
391
+ attrs: { class: "rpg-ui-menu-panel-details-title" },
392
+ textContent: computed(() => detailsItem()?.name || currentSlot()?.label || "Equip")
393
+ }),
394
+ h(DOMElement, {
395
+ element: "div",
396
+ attrs: { class: "rpg-ui-menu-panel-details-desc" },
397
+ textContent: computed(() => detailsItem()?.description || "")
398
+ }),
399
+ cond(computed(() => displayStats().length > 0), () => h(DOMElement, {
400
+ element: "div",
401
+ attrs: { class: "rpg-ui-equip-stats" }
402
+ }, loop(displayStats, (stat, index) => h(DOMElement, {
403
+ element: "div",
404
+ attrs: { class: ["rpg-ui-equip-stat", {
405
+ positive: stat.delta > 0,
406
+ negative: stat.delta < 0
407
+ }] }
408
+ }, [
409
+ h(DOMElement, {
410
+ element: "div",
411
+ attrs: { class: "rpg-ui-equip-stat-key" },
412
+ textContent: stat.label
413
+ }),
414
+ h(DOMElement, {
415
+ element: "div",
416
+ attrs: { class: "rpg-ui-equip-stat-value" },
417
+ textContent: stat.delta > 0 ? "+" : "" + stat.delta
418
+ }),
419
+ cond(stat.current, () => h(DOMElement, {
420
+ element: "div",
421
+ attrs: { class: "rpg-ui-equip-stat-current" },
422
+ textContent: stat.current + " -> " + stat.next
423
+ }))
424
+ ])))),
425
+ h(DOMElement, {
426
+ element: "div",
427
+ attrs: { class: "rpg-ui-menu-panel-details-meta" }
428
+ }, h(DOMElement, {
429
+ element: "span",
430
+ textContent: computed(() => equippedText())
431
+ }))
432
+ ])]))), h(DOMElement, {
433
+ element: "div",
434
+ attrs: { class: "rpg-ui-menu-panel-list rpg-ui-menu rpg-ui-menu-panel-list-full" }
435
+ }, [h(DOMElement, {
436
+ element: "div",
437
+ attrs: { class: "rpg-ui-menu-tabs" }
438
+ }, loop(slotList, (tab, tabIndex) => h(DOMElement, {
439
+ element: "div",
440
+ attrs: {
441
+ class: ["rpg-ui-menu-tab", computed(() => ({ active: selectedTab() === tabIndex }))],
442
+ tabindex: tabIndex,
443
+ click: selectTab(tabIndex)
444
+ },
445
+ textContent: tab.label
446
+ }))), h(Navigation, {
447
+ tabindex: selectedItem,
448
+ controls
449
+ }, loop(listEntries, (entry, index) => h(DOMElement, {
450
+ element: "div",
451
+ attrs: {
452
+ class: "rpg-ui-menu-item rpg-ui-menu-row",
453
+ "data-selected": computed(() => selectedItem() === index ? "true" : "false"),
454
+ tabindex: index,
455
+ click: selectItem(index)
456
+ }
457
+ }, [h(DOMElement, {
458
+ element: "div",
459
+ attrs: { class: "rpg-ui-menu-row-main" }
460
+ }, [h(DOMElement, {
461
+ element: "div",
462
+ attrs: { class: "rpg-ui-menu-row-icon" }
463
+ }, cond(entry?.icon, () => h(DOMSprite, {
464
+ sheet: computed(() => iconSheet(entry.icon)),
465
+ playing: "default",
466
+ width: "28px",
467
+ height: "28px",
468
+ objectFit: "contain"
469
+ }))), h(DOMElement, {
470
+ element: "span",
471
+ textContent: entry.name
472
+ })]), h(DOMElement, {
473
+ element: "span",
474
+ attrs: { class: "rpg-ui-menu-row-end" },
475
+ textContent: entry.tag || ""
476
+ })])))])])]));
477
+ }
478
+ //#endregion
479
+ export { component as default };
480
+
481
+ //# sourceMappingURL=equip-menu.ce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equip-menu.ce.js","names":[],"sources":["../../../../src/components/gui/menu/equip-menu.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-menu-panel rpg-ui-panel\">\n <div class=\"rpg-ui-menu-panel-header\">Equip</div>\n <div class=\"rpg-ui-menu-panel-body rpg-ui-menu-panel-body-stacked\">\n <div>\n <div class=\"rpg-ui-menu-panel-details rpg-ui-panel\">\n <div class=\"rpg-ui-menu-panel-hero\">\n <div class=\"rpg-ui-menu-panel-hero-icon\">\n <DOMSprite \n sheet={iconSheet(detailsItem()?.icon)} \n playing=\"default\" \n width=\"48px\"\n height=\"48px\"\n objectFit=\"contain\"\n />\n </div>\n <div>\n <div class=\"rpg-ui-menu-panel-details-title\">\n {detailsItem()?.name || currentSlot()?.label || \"Equip\"}\n </div>\n <div class=\"rpg-ui-menu-panel-details-desc\">\n {detailsItem()?.description || \"\"}\n </div>\n @if (displayStats().length > 0) {\n <div class=\"rpg-ui-equip-stats\">\n @for ((stat,index) of displayStats) {\n <div class=\"rpg-ui-equip-stat\" class={{positive: stat.delta > 0, negative: stat.delta < 0}}>\n <div class=\"rpg-ui-equip-stat-key\">{stat.label}</div>\n <div class=\"rpg-ui-equip-stat-value\">\n {stat.delta > 0 ? \"+\" : \"\"}{stat.delta}\n </div>\n @if (stat.current) {\n <div class=\"rpg-ui-equip-stat-current\">{stat.current} -> {stat.next}</div>\n }\n </div>\n }\n </div>\n }\n <div class=\"rpg-ui-menu-panel-details-meta\">\n <span>{equippedText()}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"rpg-ui-menu-panel-list rpg-ui-menu rpg-ui-menu-panel-list-full\">\n <div class=\"rpg-ui-menu-tabs\">\n @for ((tab,tabIndex) of slotList) {\n <div\n class=\"rpg-ui-menu-tab\"\n class={{active: selectedTab() === tabIndex}}\n tabindex={tabIndex}\n click={selectTab(tabIndex)}\n >{tab.label}</div>\n }\n </div>\n <Navigation tabindex={selectedItem} controls={controls}>\n @for ((entry,index) of listEntries) {\n <div\n class=\"rpg-ui-menu-item rpg-ui-menu-row\"\n data-selected={selectedItem() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={selectItem(index)}\n >\n <div class=\"rpg-ui-menu-row-main\">\n <div class=\"rpg-ui-menu-row-icon\">\n @if (entry?.icon) {\n <DOMSprite \n sheet={iconSheet(entry.icon)} \n playing=\"default\" \n width=\"28px\"\n height=\"28px\"\n objectFit=\"contain\"\n />\n }\n </div>\n <span>{entry.name}</span>\n </div>\n <span class=\"rpg-ui-menu-row-end\">{entry.tag || \"\"}</span>\n </div>\n }\n </Navigation>\n </div>\n </div>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, createTabindexNavigator, effect } from \"canvasengine\";\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n\n const engine = inject(RpgClientEngine);\n const keyboardControls = engine.globalConfig.keyboardControls;\n const currentPlayer = engine.scene.currentPlayer;\n\n const selectedTab = signal(0);\n const selectedItem = signal(0);\n const { data, onInteraction, onBack } = defineProps();\n\n const equips = computed(() => data().equips ?? data().items);\n const slots = computed(() => data().slots);\n\n const defaultSlots = [\n { id: \"weapon\", label: \"Weapon\", types: [\"weapon\"] },\n { id: \"armor\", label: \"Armor\", types: [\"armor\"] }\n ];\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const safeEquips = computed(() => {\n const list = resolveProp(equips);\n return Array.isArray(list) ? list : [];\n });\n const slotList = computed(() => {\n const list = resolveProp(slots);\n if (Array.isArray(list) && list.length) return list;\n return defaultSlots;\n });\n\n const currentSlot = computed(() => slotList()[selectedTab()]);\n\n const equippedIds = computed(() => {\n const equipped = currentPlayer().equipments?.() || [];\n return new Set(equipped.map((it) => it?.id?.() ?? it?.id ?? it?.name));\n });\n const equippedOverrides = signal({});\n\n effect(() => {\n const next = {};\n safeEquips().forEach((item) => {\n if (item?.id && typeof item.equipped === \"boolean\") {\n next[item.id] = item.equipped;\n }\n });\n equippedOverrides.set(next);\n });\n\n const itemEquipped = (item) => {\n if (!item) return false;\n const overrides = equippedOverrides();\n if (Object.prototype.hasOwnProperty.call(overrides, item.id)) {\n return overrides[item.id];\n }\n if (typeof item.equipped === \"boolean\") return item.equipped;\n return equippedIds().has(item.id);\n };\n\n const slotTypes = (slot) => {\n if (!slot) return [];\n if (Array.isArray(slot.types)) return slot.types;\n if (slot.type) return [slot.type];\n if (slot.id) return [slot.id];\n return [];\n };\n\n const slotItems = computed(() => {\n const slot = currentSlot();\n if (!slot) return [];\n const types = new Set(slotTypes(slot));\n return safeEquips().filter((item) => item && types.has(item.type));\n });\n\n const currentEquippedItem = computed(() => {\n const list = slotItems();\n return list.find((item) => itemEquipped(item)) || null;\n });\n\n const listEntries = computed(() => {\n const items = slotItems().map((item) => ({\n ...item,\n kind: \"item\",\n tag: itemEquipped(item) ? \"Equipped\" : \"\"\n }));\n const equipped = currentEquippedItem();\n if (!equipped) return items;\n return [\n {\n id: \"__unequip__\",\n name: \"Unequip\",\n description: \"Remove the current equipment\",\n kind: \"unequip\",\n tag: \"\"\n },\n ...items\n ];\n });\n\n const currentEntry = computed(() => listEntries()[selectedItem()]);\n const detailsItem = computed(() => {\n const entry = currentEntry();\n if (entry?.kind === \"item\") return entry;\n return currentEquippedItem();\n });\n\n const equippedText = computed(() => {\n const slot = currentSlot();\n if (!slot) return \"\";\n const equipped = currentEquippedItem();\n return equipped ? `${slot.label}: ${equipped.name}` : `${slot.label}: Empty`;\n });\n const listEmpty = computed(() => listEntries().length === 0);\n\n const nav = createTabindexNavigator(selectedItem, { count: () => listEntries().length }, \"wrap\");\n\n const playerParams = computed(() => {\n const menuData = data();\n if (menuData?.playerStats) return menuData.playerStats;\n if (menuData?.playerParams) return menuData.playerParams;\n return currentPlayer()?._param?.() || {};\n });\n const statOrder = [\"atk\", \"def\", \"pdef\", \"sdef\", \"str\", \"dex\", \"int\", \"agi\", \"maxHp\", \"maxSp\"];\n const statLabels = {\n atk: \"ATK\",\n def: \"DEF\",\n pdef: \"PDEF\",\n sdef: \"SDEF\",\n str: \"STR\",\n dex: \"DEX\",\n int: \"INT\",\n agi: \"AGI\",\n maxHp: \"MAX HP\",\n maxSp: \"MAX SP\"\n };\n\n const getItemStats = (item) => {\n if (!item) return {};\n const stats = item.stats || item.params || {};\n if (Object.keys(stats).length) return stats;\n const keys = [\"atk\", \"def\", \"pdef\", \"sdef\", \"str\", \"dex\", \"int\", \"agi\", \"maxHp\", \"maxSp\"];\n const direct = {};\n keys.forEach((key) => {\n if (item[key] !== undefined) direct[key] = item[key];\n });\n return direct;\n };\n\n const buildStatsList = (deltaStats) => {\n const params = playerParams() || {};\n const orderedKeys = statOrder.filter((key) => deltaStats[key] !== undefined);\n const extraKeys = Object.keys(deltaStats).filter((key) => !statOrder.includes(key));\n const keys = orderedKeys.concat(extraKeys);\n const list = [];\n for (const key of keys) {\n const delta = deltaStats[key];\n if (delta === undefined || delta === 0) continue;\n let current = params[key];\n if (current === undefined && key === \"def\") current = params.pdef;\n const next = current !== undefined ? current + delta : undefined;\n list.push({\n key,\n label: statLabels[key] || key.toUpperCase(),\n delta,\n current,\n next\n });\n }\n return list;\n };\n\n const displayStats = computed(() => {\n const entry = currentEntry();\n const equipped = currentEquippedItem();\n if (!entry) return [];\n if (entry.kind === \"unequip\") {\n \n if (!equipped) return [];\n const stats = getItemStats(equipped);\n const delta = {};\n Object.keys(stats).forEach((key) => {\n delta[key] = -stats[key];\n });\n return buildStatsList(delta);\n }\n if (entry.kind === \"item\") {\n const equippedStats = getItemStats(equipped);\n const nextStats = getItemStats(entry);\n const delta = {};\n const keys = new Set([...Object.keys(nextStats), ...Object.keys(equippedStats)]);\n keys.forEach((key) => {\n delta[key] = (nextStats[key] || 0) - (equippedStats[key] || 0);\n });\n return buildStatsList(delta);\n }\n return [];\n });\n\n const applyEquipState = (slot, itemId, equip) => {\n const types = slotTypes(slot);\n const next = { ...equippedOverrides() };\n if (types.length) {\n safeEquips().forEach((item) => {\n if (!item) return;\n if (types.includes(item.type)) {\n next[item.id] = false;\n }\n });\n }\n if (itemId) {\n next[itemId] = equip;\n }\n equippedOverrides.set(next);\n };\n\n const commitSelection = (index) => {\n const entry = listEntries()[index];\n if (!entry) return;\n if (entry.kind === \"unequip\") {\n const equipped = currentEquippedItem();\n if (equipped && onInteraction) {\n onInteraction(\"equipItem\", { id: equipped.id, equip: false });\n }\n applyEquipState(currentSlot(), equipped?.id, false);\n return;\n }\n if (entry.kind === \"item\" && onInteraction) {\n if (!itemEquipped(entry)) {\n onInteraction(\"equipItem\", { id: entry.id, equip: true });\n }\n applyEquipState(currentSlot(), entry.id, true);\n }\n };\n\n function selectTab(index) {\n return function() {\n selectedTab.set(index);\n selectedItem.set(0);\n }\n }\n\n function selectItem(index) {\n return function() {\n selectedItem.set(index);\n commitSelection(index);\n }\n }\n\n const iconSheet = (iconId) => ({\n definition: engine.getSpriteSheet(iconId)\n });\n\n const controls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n if (!listEntries().length) return;\n nav.next(-1);\n }\n },\n left: {\n repeat: true,\n bind: keyboardControls.left,\n throttle: 150,\n keyDown() {\n const tabs = slotList();\n if (!tabs.length) return;\n selectedTab.update((value) => (value - 1 + tabs.length) % tabs.length);\n selectedItem.set(0);\n }\n },\n right: {\n repeat: true,\n bind: keyboardControls.right,\n throttle: 150,\n keyDown() {\n const tabs = slotList();\n if (!tabs.length) return;\n selectedTab.update((value) => (value + 1) % tabs.length);\n selectedItem.set(0);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n if (!listEntries().length) return;\n nav.next(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (!listEntries().length) return;\n commitSelection(selectedItem());\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (onBack) onBack();\n }\n },\n gamepad: {\n enabled: true\n }\n });\n\n effect(() => {\n const count = listEntries().length;\n if (!count) {\n selectedItem.set(0);\n return;\n }\n if (selectedItem() >= count) {\n selectedItem.set(count - 1);\n }\n });\n</script>\n"],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { inject } from "../../../core/inject.js";
2
+ import { RpgClientEngine } from "../../../RpgClientEngine.js";
3
+ import { DOMContainer, DOMElement, h, signal, useDefineProps, useProps } from "canvasengine";
4
+ //#region src/components/gui/menu/exit-menu.ce
5
+ function component($$props) {
6
+ useProps($$props);
7
+ const defineProps = useDefineProps($$props);
8
+ var keyboardControls = inject(RpgClientEngine).globalConfig.keyboardControls;
9
+ var _a = defineProps(), onConfirm = _a.onConfirm, onBack = _a.onBack;
10
+ return h(DOMContainer, {
11
+ width: "100%",
12
+ height: "100%",
13
+ controls: signal({
14
+ action: {
15
+ bind: keyboardControls.action,
16
+ keyDown: function() {
17
+ if (onConfirm) onConfirm();
18
+ }
19
+ },
20
+ escape: {
21
+ bind: keyboardControls.escape,
22
+ keyDown: function() {
23
+ if (onBack) onBack();
24
+ }
25
+ },
26
+ gamepad: { enabled: true }
27
+ })
28
+ }, h(DOMElement, {
29
+ element: "div",
30
+ attrs: { class: "rpg-ui-menu-panel rpg-ui-panel" }
31
+ }, [h(DOMElement, {
32
+ element: "div",
33
+ attrs: { class: "rpg-ui-menu-panel-header" },
34
+ textContent: "Exit"
35
+ }), h(DOMElement, {
36
+ element: "div",
37
+ attrs: { class: "rpg-ui-menu-panel-body" }
38
+ }, h(DOMElement, {
39
+ element: "div",
40
+ attrs: { class: "rpg-ui-menu-panel-details" }
41
+ }, [h(DOMElement, {
42
+ element: "div",
43
+ attrs: { class: "rpg-ui-menu-panel-details-title" },
44
+ textContent: "Leave the game?"
45
+ }), h(DOMElement, {
46
+ element: "div",
47
+ attrs: { class: "rpg-ui-menu-panel-details-desc" },
48
+ textContent: "Press Action to confirm or Escape to go back.\n "
49
+ })]))]));
50
+ }
51
+ //#endregion
52
+ export { component as default };
53
+
54
+ //# sourceMappingURL=exit-menu.ce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exit-menu.ce.js","names":[],"sources":["../../../../src/components/gui/menu/exit-menu.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\" controls={controls}>\n <div class=\"rpg-ui-menu-panel rpg-ui-panel\">\n <div class=\"rpg-ui-menu-panel-header\">Exit</div>\n <div class=\"rpg-ui-menu-panel-body\">\n <div class=\"rpg-ui-menu-panel-details\">\n <div class=\"rpg-ui-menu-panel-details-title\">Leave the game?</div>\n <div class=\"rpg-ui-menu-panel-details-desc\">\n Press Action to confirm or Escape to go back.\n </div>\n </div>\n </div>\n </div>\n</DOMContainer>\n\n<script>\n import { signal } from \"canvasengine\";\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n\n const engine = inject(RpgClientEngine);\n const keyboardControls = engine.globalConfig.keyboardControls;\n const { onConfirm, onBack } = defineProps();\n\n const controls = signal({\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (onConfirm) onConfirm();\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (onBack) onBack();\n }\n },\n gamepad: {\n enabled: true\n }\n });\n</script>\n"],"mappings":";;;;AASM,SAAW,UAAA,SAAA;AACJ,UAAA,QAAA;CACP,MAAG,cAAA,eAAA,QAAA;wBACK,OAAA,gBAAA,CAAA,aAAA;CAEd,IAAC,KAAM,aAAA,EAAA,YAAA,GAAA,WAAA,SAAA,GAAA;AAqBC,QADI,EAAA,cAAA;EAAA,OAAA;EAAA,QAAA;EAAA,UAnBC,OAAS;GAClB,QAAQ;IACR,MAAS,iBAAkB;;AAErB,SAAM,UACN,YAAiB;;;GAGvB,QAAM;IACF,MAAM,iBAAE;IACR,SAAS,WAAC;AACN,SAAA,OACI,SAAI;;IAEf;GACD,SAAI,EACA,SAAS,MACZ;GACJ,CAAC;EACU,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kCAAA;EAAA,EAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,4BAAA;EAAA,aAAA;EAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,0BAAA;EAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,6BAAA;EAAA,EAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,mCAAA;EAAA,aAAA;EAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kCAAA;EAAA,aAAA;EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}