@rpgjs/client 5.0.0-beta.1 → 5.0.0-beta.11

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 (245) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/LICENSE +19 -0
  3. package/dist/Game/AnimationManager.d.ts +1 -1
  4. package/dist/Game/AnimationManager.js +18 -9
  5. package/dist/Game/AnimationManager.js.map +1 -1
  6. package/dist/Game/AnimationManager.spec.d.ts +1 -0
  7. package/dist/Game/Event.js.map +1 -1
  8. package/dist/Game/Map.d.ts +9 -1
  9. package/dist/Game/Map.js +63 -5
  10. package/dist/Game/Map.js.map +1 -1
  11. package/dist/Game/Object.d.ts +47 -15
  12. package/dist/Game/Object.js +82 -38
  13. package/dist/Game/Object.js.map +1 -1
  14. package/dist/Game/Player.js.map +1 -1
  15. package/dist/Game/ProjectileManager.d.ts +89 -0
  16. package/dist/Game/ProjectileManager.js +179 -0
  17. package/dist/Game/ProjectileManager.js.map +1 -0
  18. package/dist/Game/ProjectileManager.spec.d.ts +1 -0
  19. package/dist/Gui/Gui.d.ts +17 -4
  20. package/dist/Gui/Gui.js +78 -48
  21. package/dist/Gui/Gui.js.map +1 -1
  22. package/dist/Gui/Gui.spec.d.ts +1 -0
  23. package/dist/Gui/NotificationManager.js.map +1 -1
  24. package/dist/Resource.js +1 -1
  25. package/dist/Resource.js.map +1 -1
  26. package/dist/RpgClient.d.ts +110 -15
  27. package/dist/RpgClientEngine.d.ts +86 -10
  28. package/dist/RpgClientEngine.js +306 -49
  29. package/dist/RpgClientEngine.js.map +1 -1
  30. package/dist/Sound.js.map +1 -1
  31. package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.130.0}/helpers/decorate.js +1 -1
  32. package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.130.0}/helpers/decorateMetadata.js +1 -1
  33. package/dist/components/animations/animation.ce.js +4 -5
  34. package/dist/components/animations/animation.ce.js.map +1 -1
  35. package/dist/components/animations/hit.ce.js +19 -25
  36. package/dist/components/animations/hit.ce.js.map +1 -1
  37. package/dist/components/animations/index.js +4 -4
  38. package/dist/components/animations/index.js.map +1 -1
  39. package/dist/components/character.ce.js +422 -240
  40. package/dist/components/character.ce.js.map +1 -1
  41. package/dist/components/dynamics/bar.ce.js +97 -0
  42. package/dist/components/dynamics/bar.ce.js.map +1 -0
  43. package/dist/components/dynamics/image.ce.js +24 -0
  44. package/dist/components/dynamics/image.ce.js.map +1 -0
  45. package/dist/components/dynamics/parse-value.d.ts +3 -0
  46. package/dist/components/dynamics/parse-value.js +54 -35
  47. package/dist/components/dynamics/parse-value.js.map +1 -1
  48. package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
  49. package/dist/components/dynamics/shape-utils.d.ts +16 -0
  50. package/dist/components/dynamics/shape-utils.js +73 -0
  51. package/dist/components/dynamics/shape-utils.js.map +1 -0
  52. package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
  53. package/dist/components/dynamics/shape.ce.js +84 -0
  54. package/dist/components/dynamics/shape.ce.js.map +1 -0
  55. package/dist/components/dynamics/text.ce.js +34 -56
  56. package/dist/components/dynamics/text.ce.js.map +1 -1
  57. package/dist/components/gui/box.ce.js +6 -8
  58. package/dist/components/gui/box.ce.js.map +1 -1
  59. package/dist/components/gui/dialogbox/index.ce.js +56 -62
  60. package/dist/components/gui/dialogbox/index.ce.js.map +1 -1
  61. package/dist/components/gui/gameover.ce.js +42 -65
  62. package/dist/components/gui/gameover.ce.js.map +1 -1
  63. package/dist/components/gui/hud/hud.ce.js +21 -30
  64. package/dist/components/gui/hud/hud.ce.js.map +1 -1
  65. package/dist/components/gui/menu/equip-menu.ce.js +112 -165
  66. package/dist/components/gui/menu/equip-menu.ce.js.map +1 -1
  67. package/dist/components/gui/menu/exit-menu.ce.js +8 -6
  68. package/dist/components/gui/menu/exit-menu.ce.js.map +1 -1
  69. package/dist/components/gui/menu/items-menu.ce.js +52 -69
  70. package/dist/components/gui/menu/items-menu.ce.js.map +1 -1
  71. package/dist/components/gui/menu/main-menu.ce.js +75 -92
  72. package/dist/components/gui/menu/main-menu.ce.js.map +1 -1
  73. package/dist/components/gui/menu/options-menu.ce.js +5 -4
  74. package/dist/components/gui/menu/options-menu.ce.js.map +1 -1
  75. package/dist/components/gui/menu/skills-menu.ce.js +12 -17
  76. package/dist/components/gui/menu/skills-menu.ce.js.map +1 -1
  77. package/dist/components/gui/mobile/index.js +2 -2
  78. package/dist/components/gui/mobile/index.js.map +1 -1
  79. package/dist/components/gui/mobile/mobile.ce.js +5 -4
  80. package/dist/components/gui/mobile/mobile.ce.js.map +1 -1
  81. package/dist/components/gui/notification/notification.ce.js +22 -24
  82. package/dist/components/gui/notification/notification.ce.js.map +1 -1
  83. package/dist/components/gui/save-load.ce.js +72 -249
  84. package/dist/components/gui/save-load.ce.js.map +1 -1
  85. package/dist/components/gui/shop/shop.ce.js +90 -127
  86. package/dist/components/gui/shop/shop.ce.js.map +1 -1
  87. package/dist/components/gui/title-screen.ce.js +45 -70
  88. package/dist/components/gui/title-screen.ce.js.map +1 -1
  89. package/dist/components/index.d.ts +2 -1
  90. package/dist/components/index.js +1 -0
  91. package/dist/components/player-components-utils.d.ts +67 -0
  92. package/dist/components/player-components-utils.js +162 -0
  93. package/dist/components/player-components-utils.js.map +1 -0
  94. package/dist/components/player-components-utils.spec.d.ts +1 -0
  95. package/dist/components/player-components.ce.js +189 -0
  96. package/dist/components/player-components.ce.js.map +1 -0
  97. package/dist/components/prebuilt/hp-bar.ce.js +42 -44
  98. package/dist/components/prebuilt/hp-bar.ce.js.map +1 -1
  99. package/dist/components/prebuilt/light-halo.ce.js +36 -59
  100. package/dist/components/prebuilt/light-halo.ce.js.map +1 -1
  101. package/dist/components/scenes/canvas.ce.js +165 -21
  102. package/dist/components/scenes/canvas.ce.js.map +1 -1
  103. package/dist/components/scenes/draw-map.ce.js +25 -32
  104. package/dist/components/scenes/draw-map.ce.js.map +1 -1
  105. package/dist/components/scenes/event-layer.ce.js +9 -8
  106. package/dist/components/scenes/event-layer.ce.js.map +1 -1
  107. package/dist/core/inject.js +1 -1
  108. package/dist/core/inject.js.map +1 -1
  109. package/dist/core/setup.js +1 -1
  110. package/dist/core/setup.js.map +1 -1
  111. package/dist/decorators/spritesheet.d.ts +1 -0
  112. package/dist/decorators/spritesheet.js +11 -0
  113. package/dist/decorators/spritesheet.js.map +1 -0
  114. package/dist/index.d.ts +4 -0
  115. package/dist/index.js +26 -21
  116. package/dist/module.js +15 -1
  117. package/dist/module.js.map +1 -1
  118. package/dist/node_modules/.pnpm/{@signe_di@2.9.0 → @signe_di@3.0.1}/node_modules/@signe/di/dist/index.js +7 -117
  119. package/dist/node_modules/.pnpm/@signe_di@3.0.1/node_modules/@signe/di/dist/index.js.map +1 -0
  120. package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js +239 -0
  121. package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js.map +1 -0
  122. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
  123. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
  124. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js +696 -0
  125. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js.map +1 -0
  126. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js +44 -0
  127. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js.map +1 -0
  128. package/dist/node_modules/.pnpm/{@signe_sync@2.9.0 → @signe_sync@3.0.1}/node_modules/@signe/sync/dist/index.js +57 -141
  129. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/index.js.map +1 -0
  130. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -1
  131. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -1
  132. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js +27 -27
  133. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -1
  134. package/dist/presets/animation.js.map +1 -1
  135. package/dist/presets/faceset.js.map +1 -1
  136. package/dist/presets/icon.js.map +1 -1
  137. package/dist/presets/index.js.map +1 -1
  138. package/dist/presets/lpc.js.map +1 -1
  139. package/dist/presets/rmspritesheet.js.map +1 -1
  140. package/dist/services/AbstractSocket.js.map +1 -1
  141. package/dist/services/actionInput.d.ts +12 -0
  142. package/dist/services/actionInput.js +27 -0
  143. package/dist/services/actionInput.js.map +1 -0
  144. package/dist/services/actionInput.spec.d.ts +1 -0
  145. package/dist/services/keyboardControls.js.map +1 -1
  146. package/dist/services/loadMap.d.ts +6 -0
  147. package/dist/services/loadMap.js +1 -1
  148. package/dist/services/loadMap.js.map +1 -1
  149. package/dist/services/mmorpg-connection.d.ts +5 -0
  150. package/dist/services/mmorpg-connection.js +50 -0
  151. package/dist/services/mmorpg-connection.js.map +1 -0
  152. package/dist/services/mmorpg-connection.spec.d.ts +1 -0
  153. package/dist/services/mmorpg.d.ts +10 -4
  154. package/dist/services/mmorpg.js +56 -33
  155. package/dist/services/mmorpg.js.map +1 -1
  156. package/dist/services/pointerContext.d.ts +11 -0
  157. package/dist/services/pointerContext.js +48 -0
  158. package/dist/services/pointerContext.js.map +1 -0
  159. package/dist/services/pointerContext.spec.d.ts +1 -0
  160. package/dist/services/save.js.map +1 -1
  161. package/dist/services/save.spec.d.ts +1 -0
  162. package/dist/services/standalone-message.d.ts +1 -0
  163. package/dist/services/standalone-message.js +9 -0
  164. package/dist/services/standalone-message.js.map +1 -0
  165. package/dist/services/standalone.js +4 -3
  166. package/dist/services/standalone.js.map +1 -1
  167. package/dist/services/standalone.spec.d.ts +1 -0
  168. package/dist/utils/getEntityProp.js +4 -3
  169. package/dist/utils/getEntityProp.js.map +1 -1
  170. package/dist/utils/getEntityProp.spec.d.ts +1 -0
  171. package/dist/utils/readPropValue.d.ts +2 -0
  172. package/dist/utils/readPropValue.js +13 -0
  173. package/dist/utils/readPropValue.js.map +1 -0
  174. package/package.json +13 -14
  175. package/src/Game/AnimationManager.spec.ts +30 -0
  176. package/src/Game/AnimationManager.ts +22 -10
  177. package/src/Game/Map.ts +91 -2
  178. package/src/Game/Object.ts +148 -69
  179. package/src/Game/ProjectileManager.spec.ts +338 -0
  180. package/src/Game/ProjectileManager.ts +324 -0
  181. package/src/Gui/Gui.spec.ts +273 -0
  182. package/src/Gui/Gui.ts +105 -50
  183. package/src/Resource.ts +1 -2
  184. package/src/RpgClient.ts +125 -17
  185. package/src/RpgClientEngine.ts +457 -87
  186. package/src/components/character.ce +441 -32
  187. package/src/components/dynamics/bar.ce +88 -0
  188. package/src/components/dynamics/image.ce +21 -0
  189. package/src/components/dynamics/parse-value.spec.ts +83 -0
  190. package/src/components/dynamics/parse-value.ts +111 -37
  191. package/src/components/dynamics/shape-utils.spec.ts +46 -0
  192. package/src/components/dynamics/shape-utils.ts +61 -0
  193. package/src/components/dynamics/shape.ce +90 -0
  194. package/src/components/dynamics/text.ce +35 -149
  195. package/src/components/gui/dialogbox/index.ce +18 -8
  196. package/src/components/gui/gameover.ce +2 -1
  197. package/src/components/gui/menu/equip-menu.ce +2 -1
  198. package/src/components/gui/menu/exit-menu.ce +2 -1
  199. package/src/components/gui/menu/items-menu.ce +3 -2
  200. package/src/components/gui/menu/main-menu.ce +2 -1
  201. package/src/components/gui/save-load.ce +2 -1
  202. package/src/components/gui/shop/shop.ce +3 -2
  203. package/src/components/gui/title-screen.ce +2 -1
  204. package/src/components/index.ts +2 -1
  205. package/src/components/player-components-utils.spec.ts +109 -0
  206. package/src/components/player-components-utils.ts +205 -0
  207. package/src/components/player-components.ce +222 -0
  208. package/src/components/prebuilt/hp-bar.ce +4 -3
  209. package/src/components/prebuilt/light-halo.ce +2 -2
  210. package/src/components/scenes/canvas.ce +175 -8
  211. package/src/components/scenes/draw-map.ce +18 -17
  212. package/src/components/scenes/event-layer.ce +1 -2
  213. package/src/core/setup.ts +2 -2
  214. package/src/decorators/spritesheet.ts +8 -0
  215. package/src/index.ts +4 -0
  216. package/src/module.ts +18 -1
  217. package/src/services/actionInput.spec.ts +101 -0
  218. package/src/services/actionInput.ts +53 -0
  219. package/src/services/loadMap.ts +2 -0
  220. package/src/services/mmorpg-connection.spec.ts +99 -0
  221. package/src/services/mmorpg-connection.ts +69 -0
  222. package/src/services/mmorpg.ts +68 -36
  223. package/src/services/pointerContext.spec.ts +36 -0
  224. package/src/services/pointerContext.ts +84 -0
  225. package/src/services/save.spec.ts +127 -0
  226. package/src/services/standalone-message.ts +7 -0
  227. package/src/services/standalone.spec.ts +34 -0
  228. package/src/services/standalone.ts +3 -2
  229. package/src/utils/getEntityProp.spec.ts +96 -0
  230. package/src/utils/getEntityProp.ts +4 -3
  231. package/src/utils/readPropValue.ts +16 -0
  232. package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +0 -1
  233. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +0 -457
  234. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +0 -1
  235. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +0 -463
  236. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +0 -1
  237. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +0 -2191
  238. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +0 -1
  239. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +0 -10
  240. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +0 -1
  241. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +0 -91
  242. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +0 -1
  243. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +0 -1
  244. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +0 -14
  245. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +0 -1
@@ -1,43 +1,20 @@
1
1
  import { inject } from "../../../core/inject.js";
2
+ import { getKeyboardControlBind } from "../../../services/actionInput.js";
2
3
  import { RpgClientEngine } from "../../../RpgClientEngine.js";
3
4
  import { DOMContainer, DOMElement, DOMSprite, Navigation, computed, cond, createTabindexNavigator, effect, h, loop, signal, useDefineProps, useProps } from "canvasengine";
4
5
  //#region src/components/gui/menu/equip-menu.ce
5
6
  function component($$props) {
6
7
  useProps($$props);
7
8
  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 = [{
9
+ const engine = inject(RpgClientEngine);
10
+ const keyboardControls = engine.globalConfig.keyboardControls;
11
+ const currentPlayer = engine.scene.currentPlayer;
12
+ const selectedTab = signal(0);
13
+ const selectedItem = signal(0);
14
+ const { data, onInteraction, onBack } = defineProps();
15
+ const equips = computed(() => data().equips ?? data().items);
16
+ const slots = computed(() => data().slots);
17
+ const defaultSlots = [{
41
18
  id: "weapon",
42
19
  label: "Weapon",
43
20
  types: ["weapon"]
@@ -46,108 +23,88 @@ function component($$props) {
46
23
  label: "Armor",
47
24
  types: ["armor"]
48
25
  }];
49
- var resolveProp = function(value) {
50
- return typeof value === "function" ? value() : value;
51
- };
52
- var safeEquips = computed(function() {
53
- var list = resolveProp(equips);
26
+ const resolveProp = (value) => typeof value === "function" ? value() : value;
27
+ const safeEquips = computed(() => {
28
+ const list = resolveProp(equips);
54
29
  return Array.isArray(list) ? list : [];
55
30
  });
56
- var slotList = computed(function() {
57
- var list = resolveProp(slots);
31
+ const slotList = computed(() => {
32
+ const list = resolveProp(slots);
58
33
  if (Array.isArray(list) && list.length) return list;
59
34
  return defaultSlots;
60
35
  });
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
- }));
36
+ const currentSlot = computed(() => slotList()[selectedTab()]);
37
+ const equippedIds = computed(() => {
38
+ const equipped = currentPlayer().equipments?.() || [];
39
+ return new Set(equipped.map((it) => it?.id?.() ?? it?.id ?? it?.name));
71
40
  });
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;
41
+ const equippedOverrides = signal({});
42
+ effect(() => {
43
+ const next = {};
44
+ safeEquips().forEach((item) => {
45
+ if (item?.id && typeof item.equipped === "boolean") next[item.id] = item.equipped;
77
46
  });
78
47
  equippedOverrides.set(next);
79
48
  });
80
- var itemEquipped = function(item) {
49
+ const itemEquipped = (item) => {
81
50
  if (!item) return false;
82
- var overrides = equippedOverrides();
51
+ const overrides = equippedOverrides();
83
52
  if (Object.prototype.hasOwnProperty.call(overrides, item.id)) return overrides[item.id];
84
53
  if (typeof item.equipped === "boolean") return item.equipped;
85
54
  return equippedIds().has(item.id);
86
55
  };
87
- var slotTypes = function(slot) {
56
+ const slotTypes = (slot) => {
88
57
  if (!slot) return [];
89
58
  if (Array.isArray(slot.types)) return slot.types;
90
59
  if (slot.type) return [slot.type];
91
60
  if (slot.id) return [slot.id];
92
61
  return [];
93
62
  };
94
- var slotItems = computed(function() {
95
- var slot = currentSlot();
63
+ const slotItems = computed(() => {
64
+ const slot = currentSlot();
96
65
  if (!slot) return [];
97
- var types = new Set(slotTypes(slot));
98
- return safeEquips().filter(function(item) {
99
- return item && types.has(item.type);
100
- });
66
+ const types = new Set(slotTypes(slot));
67
+ return safeEquips().filter((item) => item && types.has(item.type));
101
68
  });
102
- var currentEquippedItem = computed(function() {
103
- return slotItems().find(function(item) {
104
- return itemEquipped(item);
105
- }) || null;
69
+ const currentEquippedItem = computed(() => {
70
+ return slotItems().find((item) => itemEquipped(item)) || null;
106
71
  });
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
- });
72
+ const listEntries = computed(() => {
73
+ const items = slotItems().map((item) => ({
74
+ ...item,
75
+ kind: "item",
76
+ tag: itemEquipped(item) ? "Equipped" : ""
77
+ }));
114
78
  if (!currentEquippedItem()) return items;
115
- return __spreadArray([{
79
+ return [{
116
80
  id: "__unequip__",
117
81
  name: "Unequip",
118
82
  description: "Remove the current equipment",
119
83
  kind: "unequip",
120
84
  tag: ""
121
- }], items, true);
85
+ }, ...items];
122
86
  });
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;
87
+ const currentEntry = computed(() => listEntries()[selectedItem()]);
88
+ const detailsItem = computed(() => {
89
+ const entry = currentEntry();
90
+ if (entry?.kind === "item") return entry;
129
91
  return currentEquippedItem();
130
92
  });
131
- var equippedText = computed(function() {
132
- var slot = currentSlot();
93
+ const equippedText = computed(() => {
94
+ const slot = currentSlot();
133
95
  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;
96
+ const equipped = currentEquippedItem();
97
+ return equipped ? `${slot.label}: ${equipped.name}` : `${slot.label}: Empty`;
139
98
  });
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)) || {};
99
+ computed(() => listEntries().length === 0);
100
+ const nav = createTabindexNavigator(selectedItem, { count: () => listEntries().length }, "wrap");
101
+ const playerParams = computed(() => {
102
+ const menuData = data();
103
+ if (menuData?.playerStats) return menuData.playerStats;
104
+ if (menuData?.playerParams) return menuData.playerParams;
105
+ return currentPlayer()?._param?.() || {};
149
106
  });
150
- var statOrder = [
107
+ const statOrder = [
151
108
  "atk",
152
109
  "def",
153
110
  "pdef",
@@ -159,7 +116,7 @@ function component($$props) {
159
116
  "maxHp",
160
117
  "maxSp"
161
118
  ];
162
- var statLabels = {
119
+ const statLabels = {
163
120
  atk: "ATK",
164
121
  def: "DEF",
165
122
  pdef: "PDEF",
@@ -171,11 +128,11 @@ function component($$props) {
171
128
  maxHp: "MAX HP",
172
129
  maxSp: "MAX SP"
173
130
  };
174
- var getItemStats = function(item) {
131
+ const getItemStats = (item) => {
175
132
  if (!item) return {};
176
- var stats = item.stats || item.params || {};
133
+ const stats = item.stats || item.params || {};
177
134
  if (Object.keys(stats).length) return stats;
178
- var keys = [
135
+ const keys = [
179
136
  "atk",
180
137
  "def",
181
138
  "pdef",
@@ -187,29 +144,24 @@ function component($$props) {
187
144
  "maxHp",
188
145
  "maxSp"
189
146
  ];
190
- var direct = {};
191
- keys.forEach(function(key) {
147
+ const direct = {};
148
+ keys.forEach((key) => {
192
149
  if (item[key] !== void 0) direct[key] = item[key];
193
150
  });
194
151
  return direct;
195
152
  };
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];
153
+ const buildStatsList = (deltaStats) => {
154
+ const params = playerParams() || {};
155
+ const orderedKeys = statOrder.filter((key) => deltaStats[key] !== void 0);
156
+ const extraKeys = Object.keys(deltaStats).filter((key) => !statOrder.includes(key));
157
+ const keys = orderedKeys.concat(extraKeys);
158
+ const list = [];
159
+ for (const key of keys) {
160
+ const delta = deltaStats[key];
209
161
  if (delta === void 0 || delta === 0) continue;
210
- var current = params[key];
162
+ let current = params[key];
211
163
  if (current === void 0 && key === "def") current = params.pdef;
212
- var next = current !== void 0 ? current + delta : void 0;
164
+ const next = current !== void 0 ? current + delta : void 0;
213
165
  list.push({
214
166
  key,
215
167
  label: statLabels[key] || key.toUpperCase(),
@@ -220,50 +172,50 @@ function component($$props) {
220
172
  }
221
173
  return list;
222
174
  };
223
- var displayStats = computed(function() {
224
- var entry = currentEntry();
225
- var equipped = currentEquippedItem();
175
+ const displayStats = computed(() => {
176
+ const entry = currentEntry();
177
+ const equipped = currentEquippedItem();
226
178
  if (!entry) return [];
227
179
  if (entry.kind === "unequip") {
228
180
  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];
181
+ const stats = getItemStats(equipped);
182
+ const delta = {};
183
+ Object.keys(stats).forEach((key) => {
184
+ delta[key] = -stats[key];
233
185
  });
234
- return buildStatsList(delta_1);
186
+ return buildStatsList(delta);
235
187
  }
236
188
  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);
189
+ const equippedStats = getItemStats(equipped);
190
+ const nextStats = getItemStats(entry);
191
+ const delta = {};
192
+ new Set([...Object.keys(nextStats), ...Object.keys(equippedStats)]).forEach((key) => {
193
+ delta[key] = (nextStats[key] || 0) - (equippedStats[key] || 0);
242
194
  });
243
- return buildStatsList(delta_2);
195
+ return buildStatsList(delta);
244
196
  }
245
197
  return [];
246
198
  });
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) {
199
+ const applyEquipState = (slot, itemId, equip) => {
200
+ const types = slotTypes(slot);
201
+ const next = { ...equippedOverrides() };
202
+ if (types.length) safeEquips().forEach((item) => {
251
203
  if (!item) return;
252
204
  if (types.includes(item.type)) next[item.id] = false;
253
205
  });
254
206
  if (itemId) next[itemId] = equip;
255
207
  equippedOverrides.set(next);
256
208
  };
257
- var commitSelection = function(index) {
258
- var entry = listEntries()[index];
209
+ const commitSelection = (index) => {
210
+ const entry = listEntries()[index];
259
211
  if (!entry) return;
260
212
  if (entry.kind === "unequip") {
261
- var equipped = currentEquippedItem();
213
+ const equipped = currentEquippedItem();
262
214
  if (equipped && onInteraction) onInteraction("equipItem", {
263
215
  id: equipped.id,
264
216
  equip: false
265
217
  });
266
- applyEquipState(currentSlot(), equipped === null || equipped === void 0 ? void 0 : equipped.id, false);
218
+ applyEquipState(currentSlot(), equipped?.id, false);
267
219
  return;
268
220
  }
269
221
  if (entry.kind === "item" && onInteraction) {
@@ -286,15 +238,13 @@ function component($$props) {
286
238
  commitSelection(index);
287
239
  };
288
240
  }
289
- var iconSheet = function(iconId) {
290
- return { definition: engine.getSpriteSheet(iconId) };
291
- };
292
- var controls = signal({
241
+ const iconSheet = (iconId) => ({ definition: engine.getSpriteSheet(iconId) });
242
+ const controls = signal({
293
243
  up: {
294
244
  repeat: true,
295
245
  bind: keyboardControls.up,
296
246
  throttle: 150,
297
- keyDown: function() {
247
+ keyDown() {
298
248
  if (!listEntries().length) return;
299
249
  nav.next(-1);
300
250
  }
@@ -303,12 +253,10 @@ function component($$props) {
303
253
  repeat: true,
304
254
  bind: keyboardControls.left,
305
255
  throttle: 150,
306
- keyDown: function() {
307
- var tabs = slotList();
256
+ keyDown() {
257
+ const tabs = slotList();
308
258
  if (!tabs.length) return;
309
- selectedTab.update(function(value) {
310
- return (value - 1 + tabs.length) % tabs.length;
311
- });
259
+ selectedTab.update((value) => (value - 1 + tabs.length) % tabs.length);
312
260
  selectedItem.set(0);
313
261
  }
314
262
  },
@@ -316,12 +264,10 @@ function component($$props) {
316
264
  repeat: true,
317
265
  bind: keyboardControls.right,
318
266
  throttle: 150,
319
- keyDown: function() {
320
- var tabs = slotList();
267
+ keyDown() {
268
+ const tabs = slotList();
321
269
  if (!tabs.length) return;
322
- selectedTab.update(function(value) {
323
- return (value + 1) % tabs.length;
324
- });
270
+ selectedTab.update((value) => (value + 1) % tabs.length);
325
271
  selectedItem.set(0);
326
272
  }
327
273
  },
@@ -329,28 +275,28 @@ function component($$props) {
329
275
  repeat: true,
330
276
  bind: keyboardControls.down,
331
277
  throttle: 150,
332
- keyDown: function() {
278
+ keyDown() {
333
279
  if (!listEntries().length) return;
334
280
  nav.next(1);
335
281
  }
336
282
  },
337
283
  action: {
338
- bind: keyboardControls.action,
339
- keyDown: function() {
284
+ bind: getKeyboardControlBind(keyboardControls.action),
285
+ keyDown() {
340
286
  if (!listEntries().length) return;
341
287
  commitSelection(selectedItem());
342
288
  }
343
289
  },
344
290
  escape: {
345
291
  bind: keyboardControls.escape,
346
- keyDown: function() {
292
+ keyDown() {
347
293
  if (onBack) onBack();
348
294
  }
349
295
  },
350
296
  gamepad: { enabled: true }
351
297
  });
352
- effect(function() {
353
- var count = listEntries().length;
298
+ effect(() => {
299
+ const count = listEntries().length;
354
300
  if (!count) {
355
301
  selectedItem.set(0);
356
302
  return;
@@ -475,7 +421,8 @@ function component($$props) {
475
421
  textContent: entry.tag || ""
476
422
  })])))])])]));
477
423
  }
424
+ var __ce_component = component;
478
425
  //#endregion
479
- export { component as default };
426
+ export { __ce_component as default };
480
427
 
481
428
  //# sourceMappingURL=equip-menu.ce.js.map
@@ -1 +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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"}
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 import { getKeyboardControlBind } from \"../../../services/actionInput\";\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: getKeyboardControlBind(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":";;;;;AAYM,SAAS,UAAU,SAAO;CACT,SAAS,OAAA;CACxB,MAAM,cAAc,eAAC,OAAA;CACrB,MAAM,SAAS,OAAM,eAAA;CAC7B,MAAM,mBAAmB,OAAG,aAAA;CAC5B,MAAM,gBAAgB,OAAO,MAAI;CACjC,MAAM,cAAc,OAAO,CAAC;CAC5B,MAAM,eAAe,OAAO,CAAC;CAC7B,MAAM,EAAE,MAAM,eAAe,WAAW,YAAY;CACpD,MAAM,SAAS,eAAe,KAAG,EAAA,UAAc,KAAC,EAAA,KAAW;CAC3D,MAAM,QAAQ,eAAe,KAAI,EAAA,KAAA;CACjC,MAAM,eAAe,CACjB;EAAE,IAAI;EAAU,OAAO;EAAU,OAAO,CAAA,QAAO;CAAA,GAC/C;EAAE,IAAI;EAAS,OAAO;EAAS,OAAO,CAAC,OAAK;CAAA,CAChD;CACA,MAAM,eAAe,UAAU,OAAO,UAAU,aAAY,MAAG,IAAM;CACrE,MAAM,aAAa,eAAe;EAC9B,MAAM,OAAO,YAAY,MAAM;EAC/B,OAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC;CACzC,CAAC;CACD,MAAM,WAAW,eAAe;EAC5B,MAAM,OAAO,YAAY,KAAK;EAC9B,IAAI,MAAM,QAAQ,IAAI,KAAK,KAAK,QAC5B,OAAO;EACX,OAAO;CACX,CAAC;CACD,MAAM,cAAc,eAAa,SAAW,EAAE,YAAY,EAAA;CAC1D,MAAM,cAAc,eAAa;EAC7B,MAAM,WAAW,cAAY,EAAA,aAAA,KAAA,CAAA;EAC7B,OAAO,IAAI,IAAI,SAAO,KAAG,OAAA,IAAA,KAAA,KAAA,IAAA,MAAA,IAAA,IAAA,CAAA;CAC7B,CAAC;CACD,MAAM,oBAAe,OAAA,CAAA,CAAA;CACrB,aAAa;;EAET,WAAS,EAAI,SAAO,SAAW;GAC3B,IAAI,MAAK,MAAI,OAAU,KAAI,aAAU,WACjC,KAAK,KAAI,MAAM,KAAI;EAE3B,CAAC;EACD,kBAAkB,IAAI,IAAE;CAC5B,CAAC;CACD,MAAM,gBAAgB,SAAM;EACxB,IAAI,CAAC,MACD,OAAO;EACX,MAAM,YAAW,kBAAA;EACjB,IAAI,OAAO,UAAE,eAAqB,KAAA,WAAc,KAAS,EAAC,GACtD,OAAO,UAAU,KAAE;EAEvB,IAAI,OAAO,KAAK,aAAa,WACzB,OAAO,KAAK;EAChB,OAAO,YAAY,EAAE,IAAG,KAAA,EAAQ;CACpC;CACA,MAAM,aAAa,SAAK;EACpB,IAAI,CAAC,MACD,OAAO,CAAC;EACZ,IAAI,MAAM,QAAQ,KAAK,KAAK,GACxB,OAAO,KAAK;EAChB,IAAI,KAAK,MACL,OAAO,CAAC,KAAK,IAAI;EACrB,IAAI,KAAK,IACL,OAAO,CAAC,KAAK,EAAE;EACnB,OAAO,CAAC;CACZ;CACA,MAAM,YAAY,eAAe;EAC7B,MAAM,OAAO,YAAY;EACzB,IAAI,CAAC,MACD,OAAO,CAAC;EACZ,MAAM,QAAQ,IAAI,IAAI,UAAQ,IAAM,CAAC;EACrC,OAAO,WAAW,EAAE,QAAK,SAAA,QAAA,MAAA,IAAA,KAAA,IAAA,CAAA;CAC7B,CAAC;CACD,MAAM,sBAAsB,eAAA;EAExB,OADa,UACJ,EAAA,MAAA,SAAA,aAAA,IAAA,CAAA,KAAA;CACb,CAAC;CACD,MAAE,cAAY,eAAA;;GAEP,GAAA;GACH,MAAS;GACT,KAAS,aAAa,IAAI,IAAI,aAAQ;EACtC,EAAA;OACS,oBAAA,GAET,OAAM;EACN,OAAM,CACN;;GAEM,MAAA;GACA,aAAe;GACb,MAAM;;EAEd,GACA,GAAM,KAAA;CAEV,CAAC;CACD,MAAM,eAAe,eAAW,YAAgB,EAAE,aAAU,EAAA;CAC5D,MAAM,cAAc,eAAW;EAC3B,MAAC,QAAA,aAAA;EACD,IAAA,OAAM,SAAc,QACpB,OAAM;EACN,OAAI,oBAAa;CACrB,CAAC;CACD,MAAM,eAAA,eAAA;EACF,MAAM,OAAA,YAAmB;EACzB,IAAI,CAAA,MACA,OAAI;EACR,MAAI,WAAO,oBAAY;EACvB,OAAE,WAAA,GAAA,KAAA,MAAA,IAAA,SAAA,SAAA,GAAA,KAAA,MAAA;;CAEI,eAAuB,YAAM,EAAQ,WAAG,CAAA;;CAElD,MAAI,eAAiB,eAAe;EAChC,MAAI,WAAM,KAAW;EACrB,IAAI,UAAU,aACZ,OAAA,SAAA;EACF,IAAA,UAAM,cAAA,OAAA,SAAA;EAEN,OAAO,cAAM,GAAA,SAAA,KAAA,CAAA;CACjB,CAAC;CACD,MAAM,YAAY;EAAC;EAAE;EAAS;EAAS;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;CAAA;CACvC,MAAM,aAAU;EACZ,KAAK;EACL,KAAK;EACL,MAAM;EACN,MAAI;EACJ,KAAE;;EAEF,KAAK;EACL,KAAI;EACJ,OAAI;EACJ,OAAO;CACX;CACA,MAAM,gBAAE,SAAA;EACJ,IAAI,CAAA,MACA,OAAO,CAAA;EACX,MAAC,QAAA,KAAA,SAAA,KAAA,UAAA,CAAA;iCAED,OAAM;EACN,MAAM,OAAO;GAAC;GAAO;GAAG;GAAA;GAAA;GAAA;GAAA;GAAA;GAAA;GAAA;EAAA;EACxB,MAAM,SAAQ,CAAA;EACd,KAAI,SAAS,QAAM;GACf,IAAI,KAAK,SAAI,KAAA,GACb,OAAS,OAAA,KAAA;EACb,CAAC;;CAEL;CACA,MAAM,kBAAe,eAAa;EAC9B,MAAM,SAAS,aAAS,KAAA,CAAA;EACxB,MAAI,cAAc,UAAQ,QAAU,QAAM,WAAA,SAAA,KAAA,CAAA;EAC1C,MAAI,YAAO,OAAa,KAAM,UAAU,EAAC,QAAQ,QAAS,CAAC,UAAU,SAAC,GAAA,CAAA;EACtE,MAAE,OAAA,YAAA,OAAA,SAAA;;EAEF,KAAK,MAAC,OAAA,MAAA;GACF,MAAM,QAAO,WAAW;GACxB,IAAA,UAAY,KAAA,KAAe,UAAA,GAC7B;;GAEF,IAAM,YAAc,KAAA,KAAa,QAAE,OAC/B,UAAc,OAAA;GACd,MAAM,OAAK,YAAA,KAAA,IAAA,UAAA,QAAA,KAAA;GACX,KAAI,KAAM;IACN;IACD,OAAA,WAAA,QAAA,IAAA,YAAA;IACH;IACI;IACJ;GACA,CAAC;EACL;EACA,OAAO;CACX;CACA,MAAM,eAAe,eAAU;EAC3B,MAAM,QAAM,aAAM;EAClB,MAAM,WAAG,oBAAA;EACT,IAAI,CAAC,OACD,OAAC,CAAA;EACL,IAAE,MAAA,SAAA,WAAA;kBAEI,OAAA,CAAA;GACN,MAAM,QAAY,aAAa,QAAI;GAC/B,MAAM,QAAQ,CAAA;GACd,OAAI,KAAO,KAAM,EAAE,SAAS,QAAO;IACnC,MAAO,OAAA,CAAA,MAAA;GACT,CAAA;;EAEF;EACA,IAAI,MAAM,SAAO,QAAA;GACb,MAAK,gBAAe,aAAA,QAAA;GACpB,MAAM,YAAW,aAAA,KAAmB;GACpC,MAAM,QAAC,CAAQ;GAEnB,IADE,IAAA,CAAA,GAAA,OAAA,KAAA,SAAA,GAAA,GAAA,OAAA,KAAA,aAAA,CAAA,CACI,EAAA,SAAY,QAAQ;;GAE1B,CAAK;;EAEL;EACA,OAAI,CAAA;CACR,CAAC;CACD,MAAM,mBAAgB,MAAA,QAAc,UAAO;EACvC,MAAI,QAAO,UAAa,IAAI;EAC5B,MAAE,OAAA,EAAA,GAAA,kBAAA,EAAA;EACF,IAAA,MAAM,QACN,WAAM,EAAW,SAAE,SAAA;GACX,IAAE,CAAG,MACH;GACF,IAAG,MAAK,SAAA,KAAA,IAAA,GACL,KAAK,KAAA,MAAA;EAEZ,CAAA;EAEJ,IAAI,QACA,KAAK,UAAU;EAEnB,kBAAC,IAAA,IAAA;;CAEL,MAAI,mBAAqB,UAAU;EAC/B,MAAM,QAAQ,YAAU,EAAA;EACxB,IAAI,CAAA,OACA;EACJ,IAAI,MAAM,SAAS,WAAW;GAC1B,MAAM,WAAW,oBAAA;GACjB,IAAI,YAAU,eACV,cAAc,aAAa;IAAE,IAAA,SAAa;IAAC,OAAS;GAAA,CAAA;GAExD,gBAAa,YAAA,GAAA,UAAA,IAAA,KAAA;GAChB;;EAED,IAAA,MAAM,SAAA,UAAkB,eAAe;GACnC,IAAA,CAAK,aAAU,KAAA,GACf,cAAkB,aAAY;IAAA,IAAO,MAAM;IAAG,OAAA;GAAW,CAAG;GAE5D,gBAAa,YAAY,GAAM,MAAC,IAAS,IAAC;EAC9C;CACJ;CACA,SAAS,UAAS,OAAQ;EACtB,OAAO,WAAY;GACf,YAAQ,IAAQ,KAAE;GAClB,aAAQ,IAAS,CAAC;EACtB;CACJ;CACA,SAAS,WAAU,OAAA;EACf,OAAO,WAAY;GACf,aAAa,IAAA,KAAA;GACb,gBAAe,KAAA;EACnB;CACJ;CACA,MAAM,aAAE,YAAA,EACJ,YAAW,OAAI,eAAA,MAAA,EACnB;;EAEI,IAAA;GACI,QAAM;GACN,MAAM,iBAAW;GACjB,UAAU;GACV,UAAU;IACR,IAAA,CAAA,YAAA,EAAA,QACM;IACJ,IAAA,KAAM,EAAK;GACf;EACJ;EACA,MAAM;GACF,QAAM;GACN,MAAI,iBAAO;GACX,UAAA;GACA,UAAU;IACN,MAAM,OAAA,SAAgB;IACtB,IAAA,CAAK,KAAC,QACN;IACA,YAAY,QAAQ,WAAW,QAAM,IAAA,KAAW,UAAU,KAAK,MAAC;IAChE,aAAa,IAAI,CAAC;GACtB;EACJ;EACA,OAAO;GACH,QAAA;GACA,MAAM,iBAAG;GACX,UAAA;;IAEI,MAAA,OAAe,SAAS;IAC1B,IAAM,CAAA,KAAQ,QACR;IACF,YAAY,QAAE,WAAA,QAAA,KAAA,KAAA,MAAA;IACd,aAAa,IAAA,CAAA;GACjB;EACJ;EACA,MAAM;GACF,QAAQ;GACR,MAAM,iBAAA;GACN,UAAA;GACA,UAAU;IACN,IAAI,CAAC,YAAU,EAAA,QACnB;IACA,IAAA,KAAA,CAAA;GACH;;EAED,QAAM;GACF,MAAM,uBAAsB,iBAAM,MAAA;GAClC,UAAU;IACN,IAAA,CAAK,YAAW,EAAA,QAChB;IACA,gBAAgB,aAAa,CAAC;GAClC;EACJ;EACA,QAAQ;GACJ,MAAI,iBAAM;GACV,UAAA;IACI,IAAA,QACI,OAAC;GACT;EACJ;EACA,SAAQ,EACJ,SAAA,KACJ;;CAEJ,aAAa;EACT,MAAI,QAAO,YAAW,EAAA;EACtB,IAAI,CAAC,OAAG;GACJ,aAAI,IAAa,CAAA;GACjB;EACJ;+BAEA,aAAS,IAAW,QAAO,CAAA;CAE/B,CAAC;CAEO,OADI,EAAA,cAAsB;EAAA,OAAA;EAAA,QAAA;CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,iCAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,2BAAA;EAAA,aAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,wDAAA;CAAA,GAAA,CAAA,EAAA,YAAA,EAAA,SAAA,MAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,yCAAA;CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,yBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,8BAAA;CAAA,GAAA,EAAA,WAAA;EAAA,OAAA,eAAA,UAAA,YAAA,GAAA,IAAA,CAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,WAAA;CAAA,CAAA,CAAA,GAAA,EAAA,YAAA,EAAA,SAAA,MAAA,GAAA;EAAA,EAAA,YAAA;GAAA,SAAA;GAAA,OAAA,EAAA,OAAA,kCAAA;GAAA,aAAA,eAAA,YAAA,GAAA,QAAA,YAAA,GAAA,SAAA,OAAA;EAAA,CAAA;EAAA,EAAA,YAAA;GAAA,SAAA;GAAA,OAAA,EAAA,OAAA,iCAAA;GAAA,aAAA,eAAA,YAAA,GAAA,eAAA,EAAA;EAAA,CAAA;EAAA,KAAA,eAAA,aAAA,EAAA,SAAA,CAAA,SAAA,EAAA,YAAA;GAAA,SAAA;GAAA,OAAA,EAAA,OAAA,qBAAA;EAAA,GAAA,KAAA,eAAA,MAAA,UAAA,EAAA,YAAA;GAAA,SAAA;GAAA,OAAA,EAAA,OAAA,CAAA,qBAAA;IAAA,UAAA,KAAA,QAAA;IAAA,UAAA,KAAA,QAAA;GAAA,CAAA,EAAA;EAAA,GAAA;GAAA,EAAA,YAAA;IAAA,SAAA;IAAA,OAAA,EAAA,OAAA,wBAAA;IAAA,aAAA,KAAA;GAAA,CAAA;GAAA,EAAA,YAAA;IAAA,SAAA;IAAA,OAAA,EAAA,OAAA,0BAAA;IAAA,aAAA,KAAA,QAAA,IAAA,MAAA,KAAA,KAAA;GAAA,CAAA;GAAA,KAAA,KAAA,eAAA,EAAA,YAAA;IAAA,SAAA;IAAA,OAAA,EAAA,OAAA,4BAAA;IAAA,aAAA,KAAA,UAAA,SAAA,KAAA;GAAA,CAAA,CAAA;EAAA,CAAA,CAAA,CAAA,CAAA;EAAA,EAAA,YAAA;GAAA,SAAA;GAAA,OAAA,EAAA,OAAA,iCAAA;EAAA,GAAA,EAAA,YAAA;GAAA,SAAA;GAAA,aAAA,eAAA,aAAA,CAAA;EAAA,CAAA,CAAA;CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,iEAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,mBAAA;CAAA,GAAA,KAAA,WAAA,KAAA,aAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA,CAAA,mBAAA,gBAAA,EAAA,QAAA,YAAA,MAAA,SAAA,EAAA,CAAA;GAAA,UAAA;GAAA,OAAA,UAAA,QAAA;EAAA;EAAA,aAAA,IAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,UAAA;EAAA;CAAA,GAAA,KAAA,cAAA,OAAA,UAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,iBAAA,eAAA,aAAA,MAAA,QAAA,SAAA,OAAA;GAAA,UAAA;GAAA,OAAA,WAAA,KAAA;EAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,uBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,uBAAA;CAAA,GAAA,KAAA,OAAA,YAAA,EAAA,WAAA;EAAA,OAAA,eAAA,UAAA,MAAA,IAAA,CAAA;EAAA,SAAA;EAAA,OAAA;EAAA,QAAA;EAAA,WAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,aAAA,MAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,sBAAA;EAAA,aAAA,MAAA,OAAA;CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAC1B;AACJ;AAEA,IAAM,iBAAmB"}
@@ -1,25 +1,26 @@
1
1
  import { inject } from "../../../core/inject.js";
2
+ import { getKeyboardControlBind } from "../../../services/actionInput.js";
2
3
  import { RpgClientEngine } from "../../../RpgClientEngine.js";
3
4
  import { DOMContainer, DOMElement, h, signal, useDefineProps, useProps } from "canvasengine";
4
5
  //#region src/components/gui/menu/exit-menu.ce
5
6
  function component($$props) {
6
7
  useProps($$props);
7
8
  const defineProps = useDefineProps($$props);
8
- var keyboardControls = inject(RpgClientEngine).globalConfig.keyboardControls;
9
- var _a = defineProps(), onConfirm = _a.onConfirm, onBack = _a.onBack;
9
+ const keyboardControls = inject(RpgClientEngine).globalConfig.keyboardControls;
10
+ const { onConfirm, onBack } = defineProps();
10
11
  return h(DOMContainer, {
11
12
  width: "100%",
12
13
  height: "100%",
13
14
  controls: signal({
14
15
  action: {
15
- bind: keyboardControls.action,
16
- keyDown: function() {
16
+ bind: getKeyboardControlBind(keyboardControls.action),
17
+ keyDown() {
17
18
  if (onConfirm) onConfirm();
18
19
  }
19
20
  },
20
21
  escape: {
21
22
  bind: keyboardControls.escape,
22
- keyDown: function() {
23
+ keyDown() {
23
24
  if (onBack) onBack();
24
25
  }
25
26
  },
@@ -48,7 +49,8 @@ function component($$props) {
48
49
  textContent: "Press Action to confirm or Escape to go back.\n "
49
50
  })]))]));
50
51
  }
52
+ var __ce_component = component;
51
53
  //#endregion
52
- export { component as default };
54
+ export { __ce_component as default };
53
55
 
54
56
  //# sourceMappingURL=exit-menu.ce.js.map
@@ -1 +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"}
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 import { getKeyboardControlBind } from \"../../../services/actionInput\";\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: getKeyboardControlBind(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":";;;;;AAUM,SAAO,UAAA,SAAA;CACJ,SAAA,OAAA;CACP,MAAY,cAAA,eAAA,OAAA;CAEd,MAAC,mBAAA,OAAA,eAAM,EAAA,aAAA;CACP,MAAI,EAAA,WAAe,WAAS,YAAa;CAqBjC,OADI,EAAA,cAAA;EAAA,OAAA;EAAA,QAAA;EAAA,UAnBC,OAAS;GAClB,QAAQ;IACR,MAAS,uBAAwB,iBAAgB,MAAA;;KAE3C,IAAM,WACN,UAAgB;IACtB;;GAEA,QAAM;IACF,MAAM,iBAAE;IACR,UAAU;KACN,IAAA,QACI,OAAI;IACZ;GACJ;GACA,SAAI,EACA,SAAS,KACb;EACJ,CACY;CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,iCAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,2BAAA;EAAA,aAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,yBAAA;CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,4BAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kCAAA;EAAA,aAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,iCAAA;EAAA,aAAA;CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACH;AACH;AAEA,IAAE,iBAAA"}