@rpgjs/client 5.0.0-alpha.3 → 5.0.0-alpha.30
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.
- package/dist/Game/AnimationManager.d.ts +8 -0
- package/dist/{index19.js → Game/AnimationManager.js} +4 -3
- package/dist/Game/AnimationManager.js.map +1 -0
- package/dist/{index30.js → Game/Event.js} +2 -2
- package/dist/Game/Event.js.map +1 -0
- package/dist/Game/Map.d.ts +8 -1
- package/dist/Game/Map.js +54 -0
- package/dist/Game/Map.js.map +1 -0
- package/dist/Game/Object.d.ts +129 -0
- package/dist/Game/Object.js +218 -0
- package/dist/Game/Object.js.map +1 -0
- package/dist/{index29.js → Game/Player.js} +2 -2
- package/dist/Game/Player.js.map +1 -0
- package/dist/Gui/Gui.d.ts +177 -5
- package/dist/Gui/Gui.js +478 -0
- package/dist/Gui/Gui.js.map +1 -0
- package/dist/Gui/NotificationManager.d.ts +23 -0
- package/dist/Gui/NotificationManager.js +51 -0
- package/dist/Gui/NotificationManager.js.map +1 -0
- package/dist/Resource.d.ts +97 -0
- package/dist/Resource.js +114 -0
- package/dist/Resource.js.map +1 -0
- package/dist/RpgClient.d.ts +259 -59
- package/dist/RpgClientEngine.d.ts +632 -9
- package/dist/RpgClientEngine.js +1262 -0
- package/dist/RpgClientEngine.js.map +1 -0
- package/dist/Sound.d.ts +199 -0
- package/dist/Sound.js +97 -0
- package/dist/Sound.js.map +1 -0
- package/dist/components/animations/animation.ce.js +21 -0
- package/dist/components/animations/animation.ce.js.map +1 -0
- package/dist/{index23.js → components/animations/hit.ce.js} +3 -3
- package/dist/components/animations/hit.ce.js.map +1 -0
- package/dist/components/animations/index.d.ts +4 -0
- package/dist/components/animations/index.js +10 -0
- package/dist/components/animations/index.js.map +1 -0
- package/dist/components/character.ce.js +316 -0
- package/dist/components/character.ce.js.map +1 -0
- package/dist/components/dynamics/parse-value.d.ts +1 -0
- package/dist/components/dynamics/parse-value.js +54 -0
- package/dist/components/dynamics/parse-value.js.map +1 -0
- package/dist/components/dynamics/text.ce.js +141 -0
- package/dist/components/dynamics/text.ce.js.map +1 -0
- package/dist/components/gui/box.ce.js +27 -0
- package/dist/components/gui/box.ce.js.map +1 -0
- package/dist/components/gui/dialogbox/index.ce.js +152 -0
- package/dist/components/gui/dialogbox/index.ce.js.map +1 -0
- package/dist/components/gui/gameover.ce.js +141 -0
- package/dist/components/gui/gameover.ce.js.map +1 -0
- package/dist/components/gui/hud/hud.ce.js +35 -0
- package/dist/components/gui/hud/hud.ce.js.map +1 -0
- package/dist/components/gui/index.d.ts +15 -3
- package/dist/components/gui/menu/equip-menu.ce.js +349 -0
- package/dist/components/gui/menu/equip-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/exit-menu.ce.js +35 -0
- package/dist/components/gui/menu/exit-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/items-menu.ce.js +229 -0
- package/dist/components/gui/menu/items-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/main-menu.ce.js +205 -0
- package/dist/components/gui/menu/main-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/options-menu.ce.js +28 -0
- package/dist/components/gui/menu/options-menu.ce.js.map +1 -0
- package/dist/components/gui/menu/skills-menu.ce.js +53 -0
- package/dist/components/gui/menu/skills-menu.ce.js.map +1 -0
- package/dist/components/gui/mobile/index.d.ts +8 -0
- package/dist/components/gui/mobile/index.js +24 -0
- package/dist/components/gui/mobile/index.js.map +1 -0
- package/dist/components/gui/mobile/mobile.ce.js +17 -0
- package/dist/components/gui/mobile/mobile.ce.js.map +1 -0
- package/dist/components/gui/notification/notification.ce.js +38 -0
- package/dist/components/gui/notification/notification.ce.js.map +1 -0
- package/dist/components/gui/save-load.ce.js +242 -0
- package/dist/components/gui/save-load.ce.js.map +1 -0
- package/dist/components/gui/shop/shop.ce.js +322 -0
- package/dist/components/gui/shop/shop.ce.js.map +1 -0
- package/dist/components/gui/title-screen.ce.js +148 -0
- package/dist/components/gui/title-screen.ce.js.map +1 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/prebuilt/hp-bar.ce.js +106 -0
- package/dist/components/prebuilt/hp-bar.ce.js.map +1 -0
- package/dist/components/prebuilt/index.d.ts +19 -0
- package/dist/components/prebuilt/light-halo.ce.js +76 -0
- package/dist/components/prebuilt/light-halo.ce.js.map +1 -0
- package/dist/components/scenes/canvas.ce.js +44 -0
- package/dist/components/scenes/canvas.ce.js.map +1 -0
- package/dist/components/scenes/draw-map.ce.js +34 -0
- package/dist/components/scenes/draw-map.ce.js.map +1 -0
- package/dist/{index13.js → components/scenes/event-layer.ce.js} +7 -6
- package/dist/components/scenes/event-layer.ce.js.map +1 -0
- package/dist/{index6.js → core/inject.js} +2 -2
- package/dist/core/inject.js.map +1 -0
- package/dist/core/setup.js +16 -0
- package/dist/core/setup.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.js +40 -12
- package/dist/index.js.map +1 -1
- package/dist/module.d.ts +43 -4
- package/dist/module.js +175 -0
- package/dist/module.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_di@2.8.2/node_modules/@signe/di/dist/index.js +366 -0
- package/dist/node_modules/.pnpm/@signe_di@2.8.2/node_modules/@signe/di/dist/index.js.map +1 -0
- package/dist/{index27.js → node_modules/.pnpm/@signe_reactive@2.8.2/node_modules/@signe/reactive/dist/index.js} +229 -11
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.2/node_modules/@signe/reactive/dist/index.js.map +1 -0
- package/dist/{index20.js → node_modules/.pnpm/@signe_room@2.8.2/node_modules/@signe/room/dist/index.js} +308 -40
- package/dist/node_modules/.pnpm/@signe_room@2.8.2/node_modules/@signe/room/dist/index.js.map +1 -0
- package/dist/{index26.js → node_modules/.pnpm/@signe_sync@2.8.2/node_modules/@signe/sync/dist/chunk-7QVYU63E.js} +1 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.8.2/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +1 -0
- package/dist/{index21.js → node_modules/.pnpm/@signe_sync@2.8.2/node_modules/@signe/sync/dist/client/index.js} +5 -5
- package/dist/node_modules/.pnpm/@signe_sync@2.8.2/node_modules/@signe/sync/dist/client/index.js.map +1 -0
- package/dist/{index17.js → node_modules/.pnpm/@signe_sync@2.8.2/node_modules/@signe/sync/dist/index.js} +89 -12
- package/dist/node_modules/.pnpm/@signe_sync@2.8.2/node_modules/@signe/sync/dist/index.js.map +1 -0
- package/dist/{index33.js → node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js} +1 -1
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +1 -0
- package/dist/{index31.js → node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js} +2 -2
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -0
- package/dist/{index32.js → node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js} +1 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -0
- package/dist/{index34.js → node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js} +1 -1
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -0
- package/dist/presets/animation.d.ts +31 -0
- package/dist/presets/animation.js +27 -0
- package/dist/presets/animation.js.map +1 -0
- package/dist/presets/faceset.d.ts +30 -0
- package/dist/presets/faceset.js +24 -0
- package/dist/presets/faceset.js.map +1 -0
- package/dist/presets/icon.d.ts +20 -0
- package/dist/presets/icon.js +15 -0
- package/dist/presets/icon.js.map +1 -0
- package/dist/presets/index.d.ts +123 -0
- package/dist/presets/index.js +16 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/lpc.d.ts +89 -0
- package/dist/presets/lpc.js +95 -0
- package/dist/presets/lpc.js.map +1 -0
- package/dist/{index25.js → presets/rmspritesheet.js} +1 -1
- package/dist/presets/rmspritesheet.js.map +1 -0
- package/dist/{index16.js → services/AbstractSocket.js} +1 -1
- package/dist/services/AbstractSocket.js.map +1 -0
- package/dist/services/keyboardControls.d.ts +15 -0
- package/dist/services/keyboardControls.js +21 -0
- package/dist/services/keyboardControls.js.map +1 -0
- package/dist/services/loadMap.d.ts +123 -2
- package/dist/{index7.js → services/loadMap.js} +12 -4
- package/dist/services/loadMap.js.map +1 -0
- package/dist/services/mmorpg.d.ts +16 -4
- package/dist/services/mmorpg.js +84 -0
- package/dist/services/mmorpg.js.map +1 -0
- package/dist/services/save.d.ts +19 -0
- package/dist/services/save.js +69 -0
- package/dist/services/save.js.map +1 -0
- package/dist/services/standalone.d.ts +65 -3
- package/dist/services/standalone.js +170 -0
- package/dist/services/standalone.js.map +1 -0
- package/dist/utils/getEntityProp.d.ts +39 -0
- package/dist/utils/getEntityProp.js +54 -0
- package/dist/utils/getEntityProp.js.map +1 -0
- package/package.json +24 -18
- package/src/Game/{EffectManager.ts → AnimationManager.ts} +3 -2
- package/src/Game/Map.ts +37 -2
- package/src/Game/Object.ts +296 -11
- package/src/Gui/Gui.ts +506 -18
- package/src/Gui/NotificationManager.ts +69 -0
- package/src/Resource.ts +150 -0
- package/src/RpgClient.ts +264 -58
- package/src/RpgClientEngine.ts +1421 -44
- package/src/Sound.ts +253 -0
- package/src/components/{effects → animations}/animation.ce +3 -6
- package/src/components/{effects → animations}/index.ts +1 -1
- package/src/components/character.ce +406 -40
- package/src/components/dynamics/parse-value.ts +80 -0
- package/src/components/dynamics/text.ce +183 -0
- package/src/components/gui/box.ce +17 -0
- package/src/components/gui/dialogbox/index.ce +204 -187
- package/src/components/gui/gameover.ce +158 -0
- package/src/components/gui/hud/hud.ce +56 -0
- package/src/components/gui/index.ts +30 -4
- package/src/components/gui/menu/equip-menu.ce +410 -0
- package/src/components/gui/menu/exit-menu.ce +41 -0
- package/src/components/gui/menu/items-menu.ce +317 -0
- package/src/components/gui/menu/main-menu.ce +291 -0
- package/src/components/gui/menu/options-menu.ce +35 -0
- package/src/components/gui/menu/skills-menu.ce +83 -0
- package/src/components/gui/mobile/index.ts +24 -0
- package/src/components/gui/mobile/mobile.ce +80 -0
- package/src/components/gui/notification/notification.ce +51 -0
- package/src/components/gui/save-load.ce +208 -0
- package/src/components/gui/shop/shop.ce +493 -0
- package/src/components/gui/title-screen.ce +163 -0
- package/src/components/index.ts +5 -1
- package/src/components/prebuilt/hp-bar.ce +255 -0
- package/src/components/prebuilt/index.ts +24 -0
- package/src/components/prebuilt/light-halo.ce +148 -0
- package/src/components/scenes/canvas.ce +19 -14
- package/src/components/scenes/draw-map.ce +21 -29
- package/src/components/scenes/event-layer.ce +10 -3
- package/src/components/scenes/transition.ce +60 -0
- package/src/core/setup.ts +2 -0
- package/src/index.ts +16 -2
- package/src/module.ts +145 -9
- package/src/presets/animation.ts +46 -0
- package/src/presets/faceset.ts +60 -0
- package/src/presets/icon.ts +17 -0
- package/src/presets/index.ts +9 -1
- package/src/presets/lpc.ts +108 -0
- package/src/services/keyboardControls.ts +20 -0
- package/src/services/loadMap.ts +132 -3
- package/src/services/mmorpg.ts +39 -5
- package/src/services/save.ts +103 -0
- package/src/services/standalone.ts +107 -15
- package/src/utils/getEntityProp.ts +87 -0
- package/tsconfig.json +1 -1
- package/vite.config.ts +5 -3
- package/CHANGELOG.md +0 -9
- package/dist/Game/EffectManager.d.ts +0 -5
- package/dist/components/effects/index.d.ts +0 -4
- package/dist/index10.js +0 -8
- package/dist/index10.js.map +0 -1
- package/dist/index11.js +0 -10
- package/dist/index11.js.map +0 -1
- package/dist/index12.js +0 -8
- package/dist/index12.js.map +0 -1
- package/dist/index13.js.map +0 -1
- package/dist/index14.js +0 -50
- package/dist/index14.js.map +0 -1
- package/dist/index15.js +0 -191
- package/dist/index15.js.map +0 -1
- package/dist/index16.js.map +0 -1
- package/dist/index17.js.map +0 -1
- package/dist/index18.js +0 -31
- package/dist/index18.js.map +0 -1
- package/dist/index19.js.map +0 -1
- package/dist/index2.js +0 -112
- package/dist/index2.js.map +0 -1
- package/dist/index20.js.map +0 -1
- package/dist/index21.js.map +0 -1
- package/dist/index22.js +0 -109
- package/dist/index22.js.map +0 -1
- package/dist/index23.js.map +0 -1
- package/dist/index24.js +0 -21
- package/dist/index24.js.map +0 -1
- package/dist/index25.js.map +0 -1
- package/dist/index26.js.map +0 -1
- package/dist/index27.js.map +0 -1
- package/dist/index28.js +0 -25
- package/dist/index28.js.map +0 -1
- package/dist/index29.js.map +0 -1
- package/dist/index3.js +0 -87
- package/dist/index3.js.map +0 -1
- package/dist/index30.js.map +0 -1
- package/dist/index31.js.map +0 -1
- package/dist/index32.js.map +0 -1
- package/dist/index33.js.map +0 -1
- package/dist/index34.js.map +0 -1
- package/dist/index35.js +0 -91
- package/dist/index35.js.map +0 -1
- package/dist/index36.js +0 -61
- package/dist/index36.js.map +0 -1
- package/dist/index37.js +0 -20
- package/dist/index37.js.map +0 -1
- package/dist/index38.js +0 -20
- package/dist/index38.js.map +0 -1
- package/dist/index4.js +0 -54
- package/dist/index4.js.map +0 -1
- package/dist/index5.js +0 -15
- package/dist/index5.js.map +0 -1
- package/dist/index6.js.map +0 -1
- package/dist/index7.js.map +0 -1
- package/dist/index8.js +0 -90
- package/dist/index8.js.map +0 -1
- package/dist/index9.js +0 -76
- package/dist/index9.js.map +0 -1
- package/src/components/gui/dialogbox/itemMenu.ce +0 -23
- package/src/components/gui/dialogbox/selection.ce +0 -67
- package/src/components/scenes/element-map.ce +0 -23
- /package/src/components/{effects → animations}/hit.ce +0 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { useProps, useDefineProps, signal, computed, createTabindexNavigator, h, DOMContainer, DOMElement, cond, DOMSprite, loop, Navigation } from 'canvasengine';
|
|
2
|
+
import { inject } from '../../../core/inject.js';
|
|
3
|
+
import { RpgClientEngine } from '../../../RpgClientEngine.js';
|
|
4
|
+
import { delay } from '@rpgjs/common';
|
|
5
|
+
|
|
6
|
+
function component($$props) {
|
|
7
|
+
useProps($$props);
|
|
8
|
+
const defineProps = useDefineProps($$props);
|
|
9
|
+
var engine = inject(RpgClientEngine);
|
|
10
|
+
var keyboardControls = engine.globalConfig.keyboardControls;
|
|
11
|
+
var selectedItem = signal(0);
|
|
12
|
+
var selectedTab = signal(0);
|
|
13
|
+
var selectedConfirm = signal(0);
|
|
14
|
+
var confirmOpen = signal(false);
|
|
15
|
+
var confirmItem = signal(null);
|
|
16
|
+
var _a = defineProps(), data = _a.data, onInteraction = _a.onInteraction, onBack = _a.onBack;
|
|
17
|
+
var items = computed(function () { return data().items; });
|
|
18
|
+
var tabs = [
|
|
19
|
+
{ id: "item", label: "Items" },
|
|
20
|
+
{ id: "weapon", label: "Weapons" },
|
|
21
|
+
{ id: "armor", label: "Armor" }
|
|
22
|
+
];
|
|
23
|
+
var resolveProp = function (value) { return typeof value === "function" ? value() : value; };
|
|
24
|
+
var safeItems = computed(function () {
|
|
25
|
+
var value = resolveProp(items);
|
|
26
|
+
return Array.isArray(value) ? value : [];
|
|
27
|
+
});
|
|
28
|
+
var filteredItems = computed(function () {
|
|
29
|
+
var items = safeItems();
|
|
30
|
+
var tab = tabs[selectedTab()];
|
|
31
|
+
if (!tab)
|
|
32
|
+
return [];
|
|
33
|
+
return items.filter(function (item) { var _a; return item.type === tab.id && ((_a = item.quantity) !== null && _a !== void 0 ? _a : 1) > 0; });
|
|
34
|
+
});
|
|
35
|
+
var confirmOptions = [
|
|
36
|
+
{ id: "use", label: "Use" },
|
|
37
|
+
{ id: "cancel", label: "Cancel" }
|
|
38
|
+
];
|
|
39
|
+
var nav = createTabindexNavigator(selectedItem, { count: function () { return filteredItems().length; } }, "wrap");
|
|
40
|
+
var navConfirm = createTabindexNavigator(selectedConfirm, { count: function () { return confirmOptions.length; } }, "wrap");
|
|
41
|
+
var currentItem = computed(function () { return filteredItems()[selectedItem()]; });
|
|
42
|
+
var iconSheet = function (iconId) { return ({
|
|
43
|
+
definition: engine.getSpriteSheet(iconId)
|
|
44
|
+
}); };
|
|
45
|
+
var clampSelection = function () {
|
|
46
|
+
var count = filteredItems().length;
|
|
47
|
+
if (count === 0) {
|
|
48
|
+
selectedItem.set(0);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (selectedItem() >= count) {
|
|
52
|
+
selectedItem.set(count - 1);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
function selectItem(index) {
|
|
56
|
+
return function () {
|
|
57
|
+
selectedItem.set(index);
|
|
58
|
+
requestUseItem(index);
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function selectTab(index) {
|
|
62
|
+
return function () {
|
|
63
|
+
selectedItem.set(0);
|
|
64
|
+
selectedTab.set(index);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
var useItem = function (index) {
|
|
68
|
+
var item = filteredItems()[index];
|
|
69
|
+
if (!item || !item.usable)
|
|
70
|
+
return;
|
|
71
|
+
if (onInteraction)
|
|
72
|
+
onInteraction("useItem", { id: item.id });
|
|
73
|
+
};
|
|
74
|
+
var requestUseItem = function (index) {
|
|
75
|
+
var item = filteredItems()[index];
|
|
76
|
+
if (!item || !item.usable)
|
|
77
|
+
return;
|
|
78
|
+
if (item.consumable) {
|
|
79
|
+
confirmItem.set(item);
|
|
80
|
+
confirmOpen.set(true);
|
|
81
|
+
selectedConfirm.set(0);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
useItem(index);
|
|
85
|
+
};
|
|
86
|
+
var confirmUse = function () {
|
|
87
|
+
var item = confirmItem();
|
|
88
|
+
if (!item)
|
|
89
|
+
return;
|
|
90
|
+
delay(function () {
|
|
91
|
+
if (onInteraction)
|
|
92
|
+
onInteraction("useItem", { id: item.id });
|
|
93
|
+
confirmOpen.set(false);
|
|
94
|
+
confirmItem.set(null);
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
var cancelConfirm = function () {
|
|
98
|
+
delay(function () {
|
|
99
|
+
confirmOpen.set(false);
|
|
100
|
+
confirmItem.set(null);
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
function confirmSelect(index) {
|
|
104
|
+
return function () {
|
|
105
|
+
selectedConfirm.set(index);
|
|
106
|
+
if (index === 0) {
|
|
107
|
+
confirmUse();
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
cancelConfirm();
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
var confirmControls = signal({
|
|
114
|
+
left: {
|
|
115
|
+
repeat: true,
|
|
116
|
+
bind: keyboardControls.left,
|
|
117
|
+
throttle: 150,
|
|
118
|
+
keyDown: function () {
|
|
119
|
+
if (!confirmOpen())
|
|
120
|
+
return;
|
|
121
|
+
navConfirm.next(-1);
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
right: {
|
|
125
|
+
repeat: true,
|
|
126
|
+
bind: keyboardControls.right,
|
|
127
|
+
throttle: 150,
|
|
128
|
+
keyDown: function () {
|
|
129
|
+
if (!confirmOpen())
|
|
130
|
+
return;
|
|
131
|
+
navConfirm.next(1);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
action: {
|
|
135
|
+
bind: keyboardControls.action,
|
|
136
|
+
keyDown: function () {
|
|
137
|
+
if (!confirmOpen())
|
|
138
|
+
return;
|
|
139
|
+
confirmSelect(selectedConfirm())();
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
escape: {
|
|
143
|
+
bind: keyboardControls.escape,
|
|
144
|
+
keyDown: function () {
|
|
145
|
+
if (!confirmOpen())
|
|
146
|
+
return;
|
|
147
|
+
cancelConfirm();
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
var controls = signal({
|
|
152
|
+
up: {
|
|
153
|
+
repeat: true,
|
|
154
|
+
bind: keyboardControls.up,
|
|
155
|
+
throttle: 150,
|
|
156
|
+
keyDown: function () {
|
|
157
|
+
if (confirmOpen()) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
nav.next(-1);
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
left: {
|
|
164
|
+
repeat: true,
|
|
165
|
+
bind: keyboardControls.left,
|
|
166
|
+
throttle: 150,
|
|
167
|
+
keyDown: function () {
|
|
168
|
+
if (confirmOpen()) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
selectedTab.update(function (value) { return (value - 1 + tabs.length) % tabs.length; });
|
|
172
|
+
selectedItem.set(0);
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
right: {
|
|
176
|
+
repeat: true,
|
|
177
|
+
bind: keyboardControls.right,
|
|
178
|
+
throttle: 150,
|
|
179
|
+
keyDown: function () {
|
|
180
|
+
if (confirmOpen()) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
selectedTab.update(function (value) { return (value + 1) % tabs.length; });
|
|
184
|
+
selectedItem.set(0);
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
down: {
|
|
188
|
+
repeat: true,
|
|
189
|
+
bind: keyboardControls.down,
|
|
190
|
+
throttle: 150,
|
|
191
|
+
keyDown: function () {
|
|
192
|
+
if (confirmOpen()) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
nav.next(1);
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
action: {
|
|
199
|
+
bind: keyboardControls.action,
|
|
200
|
+
keyDown: function () {
|
|
201
|
+
if (confirmOpen()) {
|
|
202
|
+
confirmSelect(selectedConfirm())();
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
requestUseItem(selectedItem());
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
escape: {
|
|
209
|
+
bind: keyboardControls.escape,
|
|
210
|
+
keyDown: function () {
|
|
211
|
+
if (confirmOpen()) {
|
|
212
|
+
cancelConfirm();
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (onBack)
|
|
216
|
+
onBack();
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
gamepad: {
|
|
220
|
+
enabled: true
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
clampSelection();
|
|
224
|
+
let $this = h(DOMContainer, { width: '100%', height: '100%' }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel rpg-ui-panel' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-header' }, textContent: 'Items' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-body rpg-ui-menu-panel-body-stacked' } }, [h(DOMElement, { element: "div" }, cond(currentItem, () => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details rpg-ui-panel' } }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-hero' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-hero-icon' } }, h(DOMSprite, { sheet: computed(() => iconSheet(currentItem()?.icon)), playing: 'default', width: '48px', height: '48px', objectFit: 'contain' })), h(DOMElement, { element: "div" }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details-title' }, textContent: computed(() => currentItem()?.name) }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details-desc' }, textContent: computed(() => currentItem()?.description || "") })])])))), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-list rpg-ui-menu rpg-ui-menu-panel-list-full' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-tabs' } }, loop(tabs, (tab, tabIndex) => h(DOMElement, { element: "div", attrs: { class: ['rpg-ui-menu-tab', computed(() => ({ active: selectedTab() === tabIndex }))], tabindex: tabIndex, click: selectTab(tabIndex) }, textContent: tab.label }))), h(Navigation, { tabindex: selectedItem, controls: controls }, loop(filteredItems, (item, index) => h(DOMElement, { element: "div", attrs: { class: ['rpg-ui-menu-item rpg-ui-menu-row', { disabled: !item.usable }], 'data-selected': computed(() => selectedItem() === index ? "true" : "false"), tabindex: index, click: selectItem(index) } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-row-main' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-row-icon' } }, h(DOMSprite, { sheet: computed(() => iconSheet(item.icon)), playing: 'default', width: '28px', height: '28px', objectFit: 'contain' })), h(DOMElement, { element: "span", textContent: item.name })]), h(DOMElement, { element: "span", attrs: { class: 'rpg-ui-menu-row-end' }, textContent: 'x' + item.quantity ?? 1 })])))])]), cond(confirmOpen, () => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-confirm' } }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-confirm-card' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-confirm-title' }, textContent: computed(() => 'Use ' + confirmItem()?.name + '?') }), h(Navigation, { tabindex: selectedConfirm, controls: confirmControls }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-confirm-actions' } }, loop(confirmOptions, (option, index) => h(DOMElement, { element: "button", attrs: { class: ['rpg-ui-menu-confirm-btn', {"rpg-ui-menu-confirm-btn-secondary": option.id === "cancel"}], 'data-selected': computed(() => selectedConfirm() === index ? "true" : "false"), tabindex: index, click: confirmSelect(index) }, textContent: option.label }))))])))]));
|
|
225
|
+
return $this
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
export { component as default };
|
|
229
|
+
//# sourceMappingURL=items-menu.ce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items-menu.ce.js","sources":["../../../../src/components/gui/menu/items-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\">Items</div>\n <div class=\"rpg-ui-menu-panel-body rpg-ui-menu-panel-body-stacked\">\n <div>\n @if (currentItem) {\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(currentItem()?.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\">{currentItem()?.name}</div>\n <div class=\"rpg-ui-menu-panel-details-desc\">{currentItem()?.description || \"\"}</div>\n </div>\n </div>\n </div>\n }\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 tabs) {\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 ((item,index) of filteredItems) {\n <div\n class=\"rpg-ui-menu-item rpg-ui-menu-row\"\n class={{disabled: !item.usable}}\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 <DOMSprite \n sheet={iconSheet(item.icon)} \n playing=\"default\" \n width=\"28px\"\n height=\"28px\"\n objectFit=\"contain\"\n />\n </div>\n <span>{item.name}</span>\n </div>\n <span class=\"rpg-ui-menu-row-end\">x{item.quantity ?? 1}</span>\n </div>\n }\n </Navigation>\n </div>\n </div>\n @if (confirmOpen) {\n <div class=\"rpg-ui-menu-confirm\">\n <div class=\"rpg-ui-menu-confirm-card\">\n <div class=\"rpg-ui-menu-confirm-title\">Use {confirmItem()?.name}?</div>\n <Navigation tabindex={selectedConfirm} controls={confirmControls}>\n <div class=\"rpg-ui-menu-confirm-actions\">\n @for ((option,index) of confirmOptions) {\n <button\n class=\"rpg-ui-menu-confirm-btn\"\n class={{\"rpg-ui-menu-confirm-btn-secondary\": option.id === \"cancel\"}}\n data-selected={selectedConfirm() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={confirmSelect(index)}\n >{option.label}</button>\n }\n </div>\n </Navigation>\n </div>\n </div>\n }\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 { delay } from \"@rpgjs/common\";\n\n const engine = inject(RpgClientEngine);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const selectedItem = signal(0);\n const selectedTab = signal(0);\n const selectedConfirm = signal(0);\n const confirmOpen = signal(false);\n const confirmItem = signal(null);\n\n const { data, onInteraction, onBack } = defineProps();\n\n const items = computed(() => data().items);\n\n const tabs = [\n { id: \"item\", label: \"Items\" },\n { id: \"weapon\", label: \"Weapons\" },\n { id: \"armor\", label: \"Armor\" }\n ];\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const safeItems = computed(() => {\n const value = resolveProp(items);\n return Array.isArray(value) ? value : [];\n });\n\n const filteredItems = computed(() => {\n const items = safeItems();\n const tab = tabs[selectedTab()];\n if (!tab) return [];\n return items.filter((item) => item.type === tab.id && (item.quantity ?? 1) > 0);\n });\n\n const confirmOptions = [\n { id: \"use\", label: \"Use\" },\n { id: \"cancel\", label: \"Cancel\" }\n ];\n\n const nav = createTabindexNavigator(selectedItem, { count: () => filteredItems().length }, \"wrap\");\n const navConfirm = createTabindexNavigator(selectedConfirm, { count: () => confirmOptions.length }, \"wrap\");\n const currentItem = computed(() => filteredItems()[selectedItem()]);\n const iconSheet = (iconId) => ({\n definition: engine.getSpriteSheet(iconId)\n });\n\n const clampSelection = () => {\n const count = filteredItems().length;\n if (count === 0) {\n selectedItem.set(0);\n return;\n }\n if (selectedItem() >= count) {\n selectedItem.set(count - 1);\n }\n };\n\n function selectItem(index) {\n return function() {\n selectedItem.set(index);\n requestUseItem(index);\n }\n }\n\n function selectTab(index) {\n return function() {\n selectedItem.set(0);\n selectedTab.set(index);\n }\n }\n\n const useItem = (index) => {\n const item = filteredItems()[index];\n if (!item || !item.usable) return;\n if (onInteraction) onInteraction(\"useItem\", { id: item.id });\n };\n\n const requestUseItem = (index) => {\n const item = filteredItems()[index];\n if (!item || !item.usable) return;\n if (item.consumable) {\n confirmItem.set(item);\n confirmOpen.set(true);\n selectedConfirm.set(0);\n return;\n }\n useItem(index);\n };\n\n const confirmUse = () => {\n const item = confirmItem();\n if (!item) return;\n delay(() => {\n if (onInteraction) onInteraction(\"useItem\", { id: item.id });\n confirmOpen.set(false);\n confirmItem.set(null);\n });\n };\n\n const cancelConfirm = () => {\n delay(() => {\n confirmOpen.set(false);\n confirmItem.set(null);\n });\n };\n\n function confirmSelect(index) {\n return function() {\n selectedConfirm.set(index);\n if (index === 0) {\n confirmUse();\n return;\n }\n cancelConfirm();\n }\n }\n\n const confirmControls = signal({\n left: {\n repeat: true,\n bind: keyboardControls.left,\n throttle: 150,\n keyDown() {\n if (!confirmOpen()) return;\n navConfirm.next(-1);\n }\n },\n right: {\n repeat: true,\n bind: keyboardControls.right,\n throttle: 150,\n keyDown() {\n if (!confirmOpen()) return;\n navConfirm.next(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (!confirmOpen()) return;\n confirmSelect(selectedConfirm())();\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (!confirmOpen()) return;\n cancelConfirm();\n }\n }\n });\n\n const controls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n if (confirmOpen()) {\n return;\n }\n nav.next(-1);\n }\n },\n left: {\n repeat: true,\n bind: keyboardControls.left,\n throttle: 150,\n keyDown() {\n if (confirmOpen()) {\n return;\n }\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 if (confirmOpen()) {\n return;\n }\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 (confirmOpen()) {\n return;\n }\n nav.next(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (confirmOpen()) {\n confirmSelect(selectedConfirm())();\n return;\n }\n requestUseItem(selectedItem());\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (confirmOpen()) {\n cancelConfirm();\n return;\n }\n if (onBack) onBack();\n }\n },\n gamepad: {\n enabled: true\n }\n });\n\n clampSelection();\n</script>\n"],"names":[],"mappings":";;;;;AAYqB,SAAS,SAAS,CAAC,OAAO,EAAE;AACjD,QAAuB,QAAQ,CAAC,OAAO;AACvC,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO;AAClD,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,IAAI,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB;AAC3D,IAAI,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC;AAC5B,IAAI,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC;AAC3B,IAAI,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC;AAC/B,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;AAC/B,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;AAC9B,IAAI,EAAE,GAAG,WAAW,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,aAAa,GAAG,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,EAAE,CAAC,MAAM;AAC5F,IAAI,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAI,IAAI,GAAG;AACX,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;AAClC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACtC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO;AACjC,CAAC;AACD,IAAI,WAAW,GAAG,UAAU,KAAK,EAAE,EAAE,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5F,IAAI,SAAS,GAAG,QAAQ,CAAC,YAAY;AACrC,IAAI,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;AAClC,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5C,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,QAAQ,CAAC,YAAY;AACzC,IAAI,IAAI,KAAK,GAAG,SAAS,EAAE;AAC3B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AACjC,IAAI,IAAI,CAAC,GAAG;AACZ,QAAQ,OAAO,EAAE;AACjB,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAClJ,CAAC,CAAC;AACF,IAAI,cAAc,GAAG;AACrB,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;AACnC,CAAC;AACD,IAAI,GAAG,GAAG,uBAAuB,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC;AAClH,IAAI,UAAU,GAAG,uBAAuB,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC;AAC3H,IAAI,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,OAAO,aAAa,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACnF,IAAI,SAAS,GAAG,UAAU,MAAM,EAAE,EAAE,QAAQ;AAC5C,IAAI,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM;AAC5C,CAAC,EAAE,CAAC,CAAC;AACL,IAAI,cAAc,GAAG,YAAY;AACjC,IAAI,IAAI,KAAK,GAAG,aAAa,EAAE,CAAC,MAAM;AACtC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;AACrB,QAAQ,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,QAAQ;AACR,IAAI;AACJ,IAAI,IAAI,YAAY,EAAE,IAAI,KAAK,EAAE;AACjC,QAAQ,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACnC,IAAI;AACJ,CAAC;AACD,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAI,OAAO,YAAY;AACvB,QAAQ,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAQ,cAAc,CAAC,KAAK,CAAC;AAC7B,IAAI,CAAC;AACL;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAI,OAAO,YAAY;AACvB,QAAQ,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,QAAQ,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,IAAI,CAAC;AACL;AACA,IAAI,OAAO,GAAG,UAAU,KAAK,EAAE;AAC/B,IAAI,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;AAC7B,QAAQ;AACR,IAAI,IAAI,aAAa;AACrB,QAAQ,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACjD,CAAC;AACD,IAAI,cAAc,GAAG,UAAU,KAAK,EAAE;AACtC,IAAI,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC;AACrC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;AAC7B,QAAQ;AACR,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,QAAQ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAQ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAQ,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,CAAC,KAAK,CAAC;AAClB,CAAC;AACD,IAAI,UAAU,GAAG,YAAY;AAC7B,IAAI,IAAI,IAAI,GAAG,WAAW,EAAE;AAC5B,IAAI,IAAI,CAAC,IAAI;AACb,QAAQ;AACR,IAAI,KAAK,CAAC,YAAY;AACtB,QAAQ,IAAI,aAAa;AACzB,YAAY,aAAa,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACrD,QAAQ,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,CAAC;AACD,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,KAAK,CAAC,YAAY;AACtB,QAAQ,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAQ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,IAAI,CAAC,CAAC;AACN,CAAC;AACD,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,IAAI,OAAO,YAAY;AACvB,QAAQ,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,QAAQ,IAAI,KAAK,KAAK,CAAC,EAAE;AACzB,YAAY,UAAU,EAAE;AACxB,YAAY;AACZ,QAAQ;AACR,QAAQ,aAAa,EAAE;AACvB,IAAI,CAAC;AACL;AACA,IAAI,eAAe,GAAG,MAAM,CAAC;AAC7B,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,gBAAgB,CAAC,IAAI;AACnC,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB;AAChB,YAAY,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,QAAQ;AACR,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,gBAAgB,CAAC,KAAK;AACpC,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB;AAChB,YAAY,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,QAAQ;AACR,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,IAAI,EAAE,gBAAgB,CAAC,MAAM;AACrC,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB;AAChB,YAAY,aAAa,CAAC,eAAe,EAAE,CAAC,EAAE;AAC9C,QAAQ;AACR,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,IAAI,EAAE,gBAAgB,CAAC,MAAM;AACrC,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,CAAC,WAAW,EAAE;AAC9B,gBAAgB;AAChB,YAAY,aAAa,EAAE;AAC3B,QAAQ;AACR;AACA,CAAC,CAAC;AACF,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB,IAAI,EAAE,EAAE;AACR,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,gBAAgB,CAAC,EAAE;AACjC,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,WAAW,EAAE,EAAE;AAC/B,gBAAgB;AAChB,YAAY;AACZ,YAAY,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,QAAQ;AACR,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,gBAAgB,CAAC,IAAI;AACnC,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,WAAW,EAAE,EAAE;AAC/B,gBAAgB;AAChB,YAAY;AACZ,YAAY,WAAW,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpG,YAAY,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ;AACR,KAAK;AACL,IAAI,KAAK,EAAE;AACX,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,gBAAgB,CAAC,KAAK;AACpC,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,WAAW,EAAE,EAAE;AAC/B,gBAAgB;AAChB,YAAY;AACZ,YAAY,WAAW,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtF,YAAY,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,QAAQ;AACR,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,IAAI,EAAE,gBAAgB,CAAC,IAAI;AACnC,QAAQ,QAAQ,EAAE,GAAG;AACrB,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,WAAW,EAAE,EAAE;AAC/B,gBAAgB;AAChB,YAAY;AACZ,YAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACvB,QAAQ;AACR,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,IAAI,EAAE,gBAAgB,CAAC,MAAM;AACrC,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,WAAW,EAAE,EAAE;AAC/B,gBAAgB,aAAa,CAAC,eAAe,EAAE,CAAC,EAAE;AAClD,gBAAgB;AAChB,YAAY;AACZ,YAAY,cAAc,CAAC,YAAY,EAAE,CAAC;AAC1C,QAAQ;AACR,KAAK;AACL,IAAI,MAAM,EAAE;AACZ,QAAQ,IAAI,EAAE,gBAAgB,CAAC,MAAM;AACrC,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,WAAW,EAAE,EAAE;AAC/B,gBAAgB,aAAa,EAAE;AAC/B,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,MAAM;AACtB,gBAAgB,MAAM,EAAE;AACxB,QAAQ;AACR,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAE;AACjB;AACA,CAAC,CAAC;AACF,cAAc,EAAE;AAChB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,uDAAuD,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,SAAS,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,WAAW,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,gEAAgE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,kCAAkC,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,YAAY,EAAE,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,MAAM,GAAG,WAAW,EAAE,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,yBAAyB,EAAE,CAAC,mCAAmC,EAAE,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,eAAe,EAAE,KAAK,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnqG,QAAQ,OAAO;AACf,MAAM;;;;"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { useProps, useDefineProps, computed, signal, effect, mount, h, DOMContainer, DOMElement, cond, loop } from 'canvasengine';
|
|
2
|
+
import { inject } from '../../../core/inject.js';
|
|
3
|
+
import { RpgClientEngine } from '../../../RpgClientEngine.js';
|
|
4
|
+
import component$6 from '../save-load.ce.js';
|
|
5
|
+
import component$1 from './items-menu.ce.js';
|
|
6
|
+
import component$2 from './skills-menu.ce.js';
|
|
7
|
+
import component$3 from './equip-menu.ce.js';
|
|
8
|
+
import component$4 from './options-menu.ce.js';
|
|
9
|
+
import component$5 from './exit-menu.ce.js';
|
|
10
|
+
import { getEntityProp } from '../../../utils/getEntityProp.js';
|
|
11
|
+
import { delay } from '@rpgjs/common';
|
|
12
|
+
|
|
13
|
+
function component($$props) {
|
|
14
|
+
useProps($$props);
|
|
15
|
+
const defineProps = useDefineProps($$props);
|
|
16
|
+
var engine = inject(RpgClientEngine);
|
|
17
|
+
var currentPlayer = engine.scene.currentPlayer;
|
|
18
|
+
var keyboardControls = engine.globalConfig.keyboardControls;
|
|
19
|
+
var _a = defineProps(), data = _a.data, onFinish = _a.onFinish, onInteraction = _a.onInteraction;
|
|
20
|
+
var _b = data(), menus = _b.menus; _b.items; _b.skills; _b.equips; var saveLoad = _b.saveLoad;
|
|
21
|
+
var defaultMenus = [
|
|
22
|
+
{ id: "items", label: "Items" },
|
|
23
|
+
{ id: "skills", label: "Skills" },
|
|
24
|
+
{ id: "equip", label: "Equip" },
|
|
25
|
+
{ id: "options", label: "Options" },
|
|
26
|
+
{ id: "save", label: "Save" },
|
|
27
|
+
{ id: "exit", label: "Exit" }
|
|
28
|
+
];
|
|
29
|
+
var menuEntries = computed(function () {
|
|
30
|
+
if (menus && Array.isArray(menus) && menus.length)
|
|
31
|
+
return menus;
|
|
32
|
+
return defaultMenus;
|
|
33
|
+
});
|
|
34
|
+
var resolveProp = function (value) { return typeof value === "function" ? value() : value; };
|
|
35
|
+
var saveLoadData = computed(function () { return resolveProp(saveLoad) || {}; });
|
|
36
|
+
computed(function () { return saveLoadData().mode || "load"; });
|
|
37
|
+
computed(function () { return saveLoadData().slots || []; });
|
|
38
|
+
var saveLoadCanSave = computed(function () { return saveLoadData().canSave !== false; });
|
|
39
|
+
var isMenuDisabled = function (entry) {
|
|
40
|
+
if (!entry)
|
|
41
|
+
return true;
|
|
42
|
+
if (entry.disabled)
|
|
43
|
+
return true;
|
|
44
|
+
if (entry.enabled === false)
|
|
45
|
+
return true;
|
|
46
|
+
if (entry.id === "save" && !saveLoadCanSave())
|
|
47
|
+
return true;
|
|
48
|
+
return false;
|
|
49
|
+
};
|
|
50
|
+
var selectedMenu = signal(0);
|
|
51
|
+
var view = signal("menu");
|
|
52
|
+
var saveOverlay = signal(false);
|
|
53
|
+
var selectableIndexes = computed(function () {
|
|
54
|
+
var entries = menuEntries();
|
|
55
|
+
return entries
|
|
56
|
+
.map(function (entry, index) { return (isMenuDisabled(entry) ? null : index); })
|
|
57
|
+
.filter(function (value) { return value !== null; });
|
|
58
|
+
});
|
|
59
|
+
effect(function () {
|
|
60
|
+
var available = selectableIndexes();
|
|
61
|
+
if (!available.length)
|
|
62
|
+
return;
|
|
63
|
+
var current = selectedMenu();
|
|
64
|
+
if (!available.includes(current)) {
|
|
65
|
+
selectedMenu.set(available[0]);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
var moveMenu = function (delta) {
|
|
69
|
+
var available = selectableIndexes();
|
|
70
|
+
if (!available.length)
|
|
71
|
+
return;
|
|
72
|
+
var current = selectedMenu();
|
|
73
|
+
var currentIndex = Math.max(0, available.indexOf(current));
|
|
74
|
+
var nextIndex = (currentIndex + delta + available.length) % available.length;
|
|
75
|
+
selectedMenu.set(available[nextIndex]);
|
|
76
|
+
};
|
|
77
|
+
function selectMenu(index) {
|
|
78
|
+
return function () {
|
|
79
|
+
selectedMenu.set(index);
|
|
80
|
+
openMenu();
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
var openMenu = function () {
|
|
84
|
+
var entry = menuEntries()[selectedMenu()];
|
|
85
|
+
if (!entry || isMenuDisabled(entry))
|
|
86
|
+
return;
|
|
87
|
+
if (entry.id === "save") {
|
|
88
|
+
saveOverlay.set(true);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (entry.id === "exit") {
|
|
92
|
+
view.set("exit");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
view.set(entry.id);
|
|
96
|
+
};
|
|
97
|
+
var goBack = function () {
|
|
98
|
+
delay(function () {
|
|
99
|
+
view.set("menu");
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
var closeSaveOverlay = function () {
|
|
103
|
+
delay(function () {
|
|
104
|
+
saveOverlay.set(false);
|
|
105
|
+
view.set("menu");
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
var confirmExit = function () {
|
|
109
|
+
if (onInteraction)
|
|
110
|
+
onInteraction("exit");
|
|
111
|
+
};
|
|
112
|
+
var hp = getEntityProp(currentPlayer, "hp");
|
|
113
|
+
var hpMax = getEntityProp(currentPlayer, "params.maxHp");
|
|
114
|
+
var sp = getEntityProp(currentPlayer, "sp");
|
|
115
|
+
var spMax = getEntityProp(currentPlayer, "params.maxSp");
|
|
116
|
+
var level = getEntityProp(currentPlayer, "level");
|
|
117
|
+
var exp = getEntityProp(currentPlayer, "exp");
|
|
118
|
+
var gold = getEntityProp(currentPlayer, "gold");
|
|
119
|
+
var hpPercent = computed(function () {
|
|
120
|
+
var max = hpMax() || 1;
|
|
121
|
+
return "".concat(Math.max(0, Math.min(100, (hp() / max) * 100)), "%");
|
|
122
|
+
});
|
|
123
|
+
var spPercent = computed(function () {
|
|
124
|
+
var max = spMax() || 1;
|
|
125
|
+
return "".concat(Math.max(0, Math.min(100, (sp() / max) * 100)), "%");
|
|
126
|
+
});
|
|
127
|
+
var expPercent = computed(function () {
|
|
128
|
+
var max = exp() || 1;
|
|
129
|
+
return "".concat(Math.max(0, Math.min(100, (exp() / max) * 100)), "%");
|
|
130
|
+
});
|
|
131
|
+
var paramsList = computed(function () {
|
|
132
|
+
return [
|
|
133
|
+
{ label: "ATK", value: data().playerStats.atk },
|
|
134
|
+
{ label: "PDEF", value: data().playerStats.pdef },
|
|
135
|
+
{ label: "SDEF", value: data().playerStats.sdef },
|
|
136
|
+
{ label: "STR", value: data().playerStats.str },
|
|
137
|
+
{ label: "DEX", value: data().playerStats.dex },
|
|
138
|
+
{ label: "INT", value: data().playerStats.int },
|
|
139
|
+
{ label: "AGI", value: data().playerStats.agi }
|
|
140
|
+
];
|
|
141
|
+
});
|
|
142
|
+
var menuControls = signal({
|
|
143
|
+
up: {
|
|
144
|
+
repeat: true,
|
|
145
|
+
bind: keyboardControls.up,
|
|
146
|
+
throttle: 150,
|
|
147
|
+
keyDown: function () {
|
|
148
|
+
if (saveOverlay())
|
|
149
|
+
return;
|
|
150
|
+
if (view() !== "menu")
|
|
151
|
+
return;
|
|
152
|
+
moveMenu(-1);
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
down: {
|
|
156
|
+
repeat: true,
|
|
157
|
+
bind: keyboardControls.down,
|
|
158
|
+
throttle: 150,
|
|
159
|
+
keyDown: function () {
|
|
160
|
+
if (saveOverlay())
|
|
161
|
+
return;
|
|
162
|
+
if (view() !== "menu")
|
|
163
|
+
return;
|
|
164
|
+
moveMenu(1);
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
action: {
|
|
168
|
+
bind: keyboardControls.action,
|
|
169
|
+
keyDown: function () {
|
|
170
|
+
if (saveOverlay())
|
|
171
|
+
return;
|
|
172
|
+
if (view() !== "menu")
|
|
173
|
+
return;
|
|
174
|
+
openMenu();
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
escape: {
|
|
178
|
+
bind: keyboardControls.escape,
|
|
179
|
+
keyDown: function () {
|
|
180
|
+
if (saveOverlay())
|
|
181
|
+
return;
|
|
182
|
+
if (view() !== "menu") {
|
|
183
|
+
goBack();
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
onFinish();
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
gamepad: {
|
|
190
|
+
enabled: true
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
mount(function (element) {
|
|
194
|
+
return function () {
|
|
195
|
+
delay(function () {
|
|
196
|
+
engine.stopProcessingInput = false;
|
|
197
|
+
});
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
let $this = h(DOMContainer, { width: '100%', height: '100%', controls: menuControls }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu rpg-anim-fade-in' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-layout' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-left rpg-ui-menu rpg-ui-panel' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-header' }, textContent: 'Menu' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-list' } }, loop(menuEntries(), (entry, index) => h(DOMElement, { element: "div", attrs: { class: ['rpg-ui-menu-item', computed(() => ({ disabled: isMenuDisabled(entry) }))], 'data-selected': computed(() => selectedMenu() === index ? "true" : "false"), tabindex: index, click: selectMenu(index) }, textContent: entry.label })))]), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-right' } }, [cond(computed(() => view() === "menu"), () => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-panel' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-section-title' }, textContent: 'Status' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-card' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-block' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-label' }, textContent: 'Level' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-value' }, textContent: computed(() => level()) })]), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-block' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-label' }, textContent: 'Gold' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-value' }, textContent: computed(() => gold()) })]), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-block' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-label' }, textContent: computed(() => 'HP ' + hp() + '/' + hpMax()) }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-bar' } }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-bar-fill hp', style: { width: hpPercent } } }))]), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-block' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-label' }, textContent: computed(() => 'SP ' + sp() + '/' + spMax()) }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-bar' } }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-bar-fill sp', style: { width: spPercent } } }))]), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-block', style: { gridColumn: "span 2" } } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-label' }, textContent: computed(() => 'EXP ' + exp()) }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-bar' } }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-status-bar-fill exp', style: { width: expPercent } } }))])]), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-section-title' }, textContent: 'Parameters' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-params' } }, loop(paramsList, (param, index) => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-param' } }, [h(DOMElement, { element: "span", textContent: param.label }), h(DOMElement, { element: "span", textContent: param.value })])))])), cond(computed(() => view() === "items"), () => h(component$1, { data: data, onInteraction: onInteraction, onBack: goBack })), cond(computed(() => view() === "skills"), () => h(component$2, { data: data, onBack: goBack })), cond(computed(() => view() === "equip"), () => h(component$3, { data: data, onInteraction: onInteraction, onBack: goBack })), cond(computed(() => view() === "options"), () => h(component$4, { onBack: goBack })), cond(computed(() => view() === "exit"), () => h(component$5, { onConfirm: confirmExit, onBack: goBack }))])]), cond(saveOverlay, () => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-overlay' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-overlay-backdrop' } }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-main-menu-overlay-content' } }, h(component$6, { data: saveLoadData, onFinish: closeSaveOverlay }))]))]));
|
|
201
|
+
return $this
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export { component as default };
|
|
205
|
+
//# sourceMappingURL=main-menu.ce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-menu.ce.js","sources":["../../../../src/components/gui/menu/main-menu.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\" controls={menuControls}>\n <div class=\"rpg-ui-main-menu rpg-anim-fade-in\">\n <div class=\"rpg-ui-main-menu-layout\">\n <div class=\"rpg-ui-main-menu-left rpg-ui-menu rpg-ui-panel\">\n <div class=\"rpg-ui-menu-header\">Menu</div>\n <div class=\"rpg-ui-main-menu-list\">\n @for ((entry,index) of menuEntries()) {\n <div\n class=\"rpg-ui-menu-item\"\n class={{disabled: isMenuDisabled(entry)}}\n data-selected={selectedMenu() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={selectMenu(index)}\n >{entry.label}</div>\n }\n </div>\n </div>\n <div class=\"rpg-ui-main-menu-right\">\n @if (view() === \"menu\") {\n <div class=\"rpg-ui-panel\">\n <div class=\"rpg-ui-main-menu-section-title\">Status</div>\n <div class=\"rpg-ui-main-menu-status-card\">\n <div class=\"rpg-ui-main-menu-status-block\">\n <div class=\"rpg-ui-main-menu-status-label\">Level</div>\n <div class=\"rpg-ui-main-menu-status-value\">{level()}</div>\n </div>\n <div class=\"rpg-ui-main-menu-status-block\">\n <div class=\"rpg-ui-main-menu-status-label\">Gold</div>\n <div class=\"rpg-ui-main-menu-status-value\">{gold()}</div>\n </div>\n <div class=\"rpg-ui-main-menu-status-block\">\n <div class=\"rpg-ui-main-menu-status-label\">HP {hp()}/{hpMax()}</div>\n <div class=\"rpg-ui-main-menu-status-bar\">\n <div class=\"rpg-ui-main-menu-status-bar-fill hp\" style={{width: hpPercent}}></div>\n </div>\n </div>\n <div class=\"rpg-ui-main-menu-status-block\">\n <div class=\"rpg-ui-main-menu-status-label\">SP {sp()}/{spMax()}</div>\n <div class=\"rpg-ui-main-menu-status-bar\">\n <div class=\"rpg-ui-main-menu-status-bar-fill sp\" style={{width: spPercent}}></div>\n </div>\n </div>\n <div class=\"rpg-ui-main-menu-status-block\" style={{gridColumn: \"span 2\"}}>\n <div class=\"rpg-ui-main-menu-status-label\">EXP {exp()}</div>\n <div class=\"rpg-ui-main-menu-status-bar\">\n <div class=\"rpg-ui-main-menu-status-bar-fill exp\" style={{width: expPercent}}></div>\n </div>\n </div>\n </div>\n <div class=\"rpg-ui-main-menu-section-title\">Parameters</div>\n <div class=\"rpg-ui-main-menu-params\">\n @for ((param,index) of paramsList) {\n <div class=\"rpg-ui-main-menu-param\">\n <span>{param.label}</span>\n <span>{param.value}</span>\n </div>\n }\n </div>\n </div>\n }\n @if (view() === \"items\") {\n <ItemsMenu data={data} onInteraction={onInteraction} onBack={goBack} />\n }\n @if (view() === \"skills\") {\n <SkillsMenu data={data} onBack={goBack} />\n }\n @if (view() === \"equip\") {\n <EquipMenu data={data} onInteraction={onInteraction} onBack={goBack} />\n }\n @if (view() === \"options\") {\n <OptionsMenu onBack={goBack} />\n }\n @if (view() === \"exit\") {\n <ExitMenu onConfirm={confirmExit} onBack={goBack} />\n }\n </div>\n </div>\n @if (saveOverlay) {\n <div class=\"rpg-ui-main-menu-overlay\">\n <div class=\"rpg-ui-main-menu-overlay-backdrop\"></div>\n <div class=\"rpg-ui-main-menu-overlay-content\">\n <SaveLoadComponent\n data={saveLoadData}\n onFinish={closeSaveOverlay}\n />\n </div>\n </div>\n }\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect, mount } from \"canvasengine\";\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n import SaveLoadComponent from \"../save-load.ce\";\n import ItemsMenu from \"./items-menu.ce\";\n import SkillsMenu from \"./skills-menu.ce\";\n import EquipMenu from \"./equip-menu.ce\";\n import OptionsMenu from \"./options-menu.ce\";\n import ExitMenu from \"./exit-menu.ce\";\n import { getEntityProp } from \"../../../utils/getEntityProp\";\n import { delay } from \"@rpgjs/common\";\n\n const engine = inject(RpgClientEngine);\n const currentPlayer = engine.scene.currentPlayer;\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const { data, onFinish, onInteraction } = defineProps();\n const { menus, items, skills, equips, saveLoad } = data();\n\n const defaultMenus = [\n { id: \"items\", label: \"Items\" },\n { id: \"skills\", label: \"Skills\" },\n { id: \"equip\", label: \"Equip\" },\n { id: \"options\", label: \"Options\" },\n { id: \"save\", label: \"Save\" },\n { id: \"exit\", label: \"Exit\" }\n ];\n\n const menuEntries = computed(() => {\n if (menus && Array.isArray(menus) && menus.length) return menus;\n return defaultMenus;\n });\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const saveLoadData = computed(() => resolveProp(saveLoad) || {});\n const saveLoadMode = computed(() => saveLoadData().mode || \"load\");\n const saveLoadSlots = computed(() => saveLoadData().slots || []);\n const saveLoadCanSave = computed(() => saveLoadData().canSave !== false);\n\n const isMenuDisabled = (entry) => {\n if (!entry) return true;\n if (entry.disabled) return true;\n if (entry.enabled === false) return true;\n if (entry.id === \"save\" && !saveLoadCanSave()) return true;\n return false;\n };\n\n const selectedMenu = signal(0);\n const view = signal(\"menu\");\n const saveOverlay = signal(false);\n\n const selectableIndexes = computed(() => {\n const entries = menuEntries();\n return entries\n .map((entry, index) => (isMenuDisabled(entry) ? null : index))\n .filter((value) => value !== null);\n });\n\n effect(() => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedMenu();\n if (!available.includes(current)) {\n selectedMenu.set(available[0]);\n }\n });\n\n const moveMenu = (delta) => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedMenu();\n const currentIndex = Math.max(0, available.indexOf(current));\n const nextIndex = (currentIndex + delta + available.length) % available.length;\n selectedMenu.set(available[nextIndex]);\n };\n\n function selectMenu(index) {\n return function() {\n selectedMenu.set(index);\n openMenu();\n }\n }\n\n const openMenu = () => {\n const entry = menuEntries()[selectedMenu()];\n if (!entry || isMenuDisabled(entry)) return;\n if (entry.id === \"save\") {\n saveOverlay.set(true);\n return;\n }\n if (entry.id === \"exit\") {\n view.set(\"exit\");\n return;\n }\n view.set(entry.id);\n };\n\n const goBack = () => {\n delay(() => {\n view.set(\"menu\");\n });\n };\n\n const closeSaveOverlay = () => {\n delay(() => {\n saveOverlay.set(false);\n view.set(\"menu\");\n });\n };\n\n const confirmExit = () => {\n if (onInteraction) onInteraction(\"exit\");\n };\n\n const hp = getEntityProp(currentPlayer, \"hp\");\n const hpMax = getEntityProp(currentPlayer, \"params.maxHp\");\n const sp = getEntityProp(currentPlayer, \"sp\");\n const spMax = getEntityProp(currentPlayer, \"params.maxSp\");\n const level = getEntityProp(currentPlayer, \"level\");\n const exp = getEntityProp(currentPlayer, \"exp\");\n const gold = getEntityProp(currentPlayer, \"gold\");\n const hpPercent = computed(() => {\n const max = hpMax() || 1;\n return `${Math.max(0, Math.min(100, (hp() / max) * 100))}%`;\n });\n const spPercent = computed(() => {\n const max = spMax() || 1;\n return `${Math.max(0, Math.min(100, (sp() / max) * 100))}%`;\n });\n const expPercent = computed(() => {\n const max = exp() || 1;\n return `${Math.max(0, Math.min(100, (exp() / max) * 100))}%`;\n });\n\n const paramsList = computed(() => {\n return [\n { label: \"ATK\", value: data().playerStats.atk },\n { label: \"PDEF\", value: data().playerStats.pdef },\n { label: \"SDEF\", value: data().playerStats.sdef },\n { label: \"STR\", value: data().playerStats.str },\n { label: \"DEX\", value: data().playerStats.dex },\n { label: \"INT\", value: data().playerStats.int },\n { label: \"AGI\", value: data().playerStats.agi }\n ]\n }\n\n const menuControls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n if (saveOverlay()) return;\n if (view() !== \"menu\") return;\n moveMenu(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n if (saveOverlay()) return;\n if (view() !== \"menu\") return;\n moveMenu(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (saveOverlay()) return;\n if (view() !== \"menu\") return;\n openMenu();\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (saveOverlay()) return;\n if (view() !== \"menu\") {\n goBack();\n return;\n }\n onFinish()\n }\n },\n gamepad: {\n enabled: true\n }\n });\n\n mount((element) => {\n return () => {\n delay(() => {\n engine.stopProcessingInput = false;\n });\n }\n });\n</script>\n"],"names":["ItemsMenu","SkillsMenu","EquipMenu","OptionsMenu","ExitMenu","SaveLoadComponent"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useProps, useDefineProps, signal, h, DOMContainer, DOMElement } from 'canvasengine';
|
|
2
|
+
import { inject } from '../../../core/inject.js';
|
|
3
|
+
import { RpgClientEngine } from '../../../RpgClientEngine.js';
|
|
4
|
+
|
|
5
|
+
function component($$props) {
|
|
6
|
+
useProps($$props);
|
|
7
|
+
const defineProps = useDefineProps($$props);
|
|
8
|
+
var engine = inject(RpgClientEngine);
|
|
9
|
+
var keyboardControls = engine.globalConfig.keyboardControls;
|
|
10
|
+
var onBack = defineProps().onBack;
|
|
11
|
+
var controls = signal({
|
|
12
|
+
escape: {
|
|
13
|
+
bind: keyboardControls.escape,
|
|
14
|
+
keyDown: function () {
|
|
15
|
+
if (onBack)
|
|
16
|
+
onBack();
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
gamepad: {
|
|
20
|
+
enabled: true
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
let $this = h(DOMContainer, { width: '100%', height: '100%', controls: controls }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel rpg-ui-panel' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-header' }, textContent: 'Options' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-body' } }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details-title' }, textContent: 'Options' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details-desc' }, textContent: 'Configure your preferences here.\n ' })]))]));
|
|
24
|
+
return $this
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { component as default };
|
|
28
|
+
//# sourceMappingURL=options-menu.ce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-menu.ce.js","sources":["../../../../src/components/gui/menu/options-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\">Options</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\">Options</div>\n <div class=\"rpg-ui-menu-panel-details-desc\">\n Configure your preferences here.\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 { onBack } = defineProps();\n\n const controls = signal({\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (onBack) onBack();\n }\n },\n gamepad: {\n enabled: true\n }\n });\n</script>\n"],"names":[],"mappings":";;;;AASqB,SAAS,SAAS,CAAC,OAAO,EAAE;AACjD,QAAuB,QAAQ,CAAC,OAAO;AACvC,QAAQ,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO;AAClD,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,IAAI,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB;AAC3D,IAAI,MAAM,GAAG,WAAW,EAAE,CAAC,MAAM;AACjC,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB,IAAI,MAAM,EAAE;AACZ,QAAQ,IAAI,EAAE,gBAAgB,CAAC,MAAM;AACrC,QAAQ,OAAO,EAAE,YAAY;AAC7B,YAAY,IAAI,MAAM;AACtB,gBAAgB,MAAM,EAAE;AACxB,QAAQ;AACR,KAAK;AACL,IAAI,OAAO,EAAE;AACb,QAAQ,OAAO,EAAE;AACjB;AACA,CAAC,CAAC;AACF,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,2BAA2B,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxsB,QAAQ,OAAO;AACf,MAAM;;;;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useProps, useDefineProps, signal, computed, createTabindexNavigator, h, DOMContainer, DOMElement, cond, Navigation, loop } from 'canvasengine';
|
|
2
|
+
import { inject } from '../../../core/inject.js';
|
|
3
|
+
import { RpgClientEngine } from '../../../RpgClientEngine.js';
|
|
4
|
+
|
|
5
|
+
function component($$props) {
|
|
6
|
+
useProps($$props);
|
|
7
|
+
const defineProps = useDefineProps($$props);
|
|
8
|
+
var engine = inject(RpgClientEngine);
|
|
9
|
+
var keyboardControls = engine.globalConfig.keyboardControls;
|
|
10
|
+
var selectedSkill = signal(0);
|
|
11
|
+
var _a = defineProps(), data = _a.data, onBack = _a.onBack;
|
|
12
|
+
var skills = computed(function () { return data().skills; });
|
|
13
|
+
var nav = createTabindexNavigator(selectedSkill, { count: function () { return skills().length; } }, "wrap");
|
|
14
|
+
var currentSkill = computed(function () { return skills()[selectedSkill()]; });
|
|
15
|
+
function selectSkill(index) {
|
|
16
|
+
return function () {
|
|
17
|
+
selectedSkill.set(index);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
var controls = signal({
|
|
21
|
+
up: {
|
|
22
|
+
repeat: true,
|
|
23
|
+
bind: keyboardControls.up,
|
|
24
|
+
throttle: 150,
|
|
25
|
+
keyDown: function () {
|
|
26
|
+
nav.next(-1);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
down: {
|
|
30
|
+
repeat: true,
|
|
31
|
+
bind: keyboardControls.down,
|
|
32
|
+
throttle: 150,
|
|
33
|
+
keyDown: function () {
|
|
34
|
+
nav.next(1);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
escape: {
|
|
38
|
+
bind: keyboardControls.escape,
|
|
39
|
+
keyDown: function () {
|
|
40
|
+
if (onBack)
|
|
41
|
+
onBack();
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
gamepad: {
|
|
45
|
+
enabled: true
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
let $this = h(DOMContainer, { width: '100%', height: '100%' }, h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel rpg-ui-panel' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-header' }, textContent: 'Skills' }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-body rpg-ui-menu-panel-body-stacked' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details rpg-ui-panel' } }, cond(currentSkill, () => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-hero' } }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-hero-icon' }, textContent: '✨' }), h(DOMElement, { element: "div" }, [h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details-title' }, textContent: computed(() => currentSkill()?.name) }), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-details-desc' }, textContent: computed(() => currentSkill()?.description || "") })])]))), h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-panel-list rpg-ui-menu rpg-ui-menu-panel-list-full' } }, h(Navigation, { tabindex: selectedSkill, controls: controls }, loop(skills, (skill, index) => h(DOMElement, { element: "div", attrs: { class: 'rpg-ui-menu-item rpg-ui-menu-row', 'data-selected': computed(() => selectedSkill() === index ? "true" : "false"), tabindex: index, click: selectSkill(index) } }, [h(DOMElement, { element: "span", textContent: skill.name }), h(DOMElement, { element: "span", attrs: { class: 'rpg-ui-menu-row-end' }, textContent: 'SP ' + skill.spCost ?? 0 })]))))])]));
|
|
49
|
+
return $this
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export { component as default };
|
|
53
|
+
//# sourceMappingURL=skills-menu.ce.js.map
|