@rpgjs/client 5.0.0-beta.2 → 5.0.0-beta.20
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/CHANGELOG.md +123 -0
- package/dist/Game/AnimationManager.d.ts +2 -1
- package/dist/Game/AnimationManager.js +21 -9
- package/dist/Game/AnimationManager.js.map +1 -1
- package/dist/Game/AnimationManager.spec.d.ts +1 -0
- package/dist/Game/ClientVisuals.d.ts +61 -0
- package/dist/Game/ClientVisuals.js +96 -0
- package/dist/Game/ClientVisuals.js.map +1 -0
- package/dist/Game/ClientVisuals.spec.d.ts +1 -0
- package/dist/Game/Event.js.map +1 -1
- package/dist/Game/EventComponentResolver.d.ts +16 -0
- package/dist/Game/EventComponentResolver.js +52 -0
- package/dist/Game/EventComponentResolver.js.map +1 -0
- package/dist/Game/EventComponentResolver.spec.d.ts +1 -0
- package/dist/Game/Map.d.ts +9 -1
- package/dist/Game/Map.js +83 -5
- package/dist/Game/Map.js.map +1 -1
- package/dist/Game/Object.d.ts +49 -15
- package/dist/Game/Object.js +101 -42
- package/dist/Game/Object.js.map +1 -1
- package/dist/Game/Object.spec.d.ts +1 -0
- package/dist/Game/Player.js.map +1 -1
- package/dist/Game/ProjectileManager.d.ts +98 -0
- package/dist/Game/ProjectileManager.js +196 -0
- package/dist/Game/ProjectileManager.js.map +1 -0
- package/dist/Game/ProjectileManager.spec.d.ts +1 -0
- package/dist/Gui/Gui.d.ts +20 -6
- package/dist/Gui/Gui.js +96 -54
- package/dist/Gui/Gui.js.map +1 -1
- package/dist/Gui/Gui.spec.d.ts +1 -0
- package/dist/Gui/NotificationManager.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/RpgClient.d.ts +194 -15
- package/dist/RpgClientEngine.d.ts +176 -11
- package/dist/RpgClientEngine.js +669 -68
- package/dist/RpgClientEngine.js.map +1 -1
- package/dist/Sound.js.map +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorate.js +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0/helpers → _@oxc-project_runtime@0.133.0/helpers/esm}/decorateMetadata.js +1 -1
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/components/animations/animation.ce.js +6 -5
- package/dist/components/animations/animation.ce.js.map +1 -1
- package/dist/components/animations/fx.ce.js +60 -0
- package/dist/components/animations/fx.ce.js.map +1 -0
- package/dist/components/animations/hit.ce.js +24 -28
- package/dist/components/animations/hit.ce.js.map +1 -1
- package/dist/components/animations/index.d.ts +1 -0
- package/dist/components/animations/index.js +6 -4
- package/dist/components/animations/index.js.map +1 -1
- package/dist/components/character.ce.js +606 -248
- package/dist/components/character.ce.js.map +1 -1
- package/dist/components/dynamics/bar.ce.js +99 -0
- package/dist/components/dynamics/bar.ce.js.map +1 -0
- package/dist/components/dynamics/image.ce.js +26 -0
- package/dist/components/dynamics/image.ce.js.map +1 -0
- package/dist/components/dynamics/parse-value.d.ts +3 -0
- package/dist/components/dynamics/parse-value.js +54 -35
- package/dist/components/dynamics/parse-value.js.map +1 -1
- package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
- package/dist/components/dynamics/shape-utils.d.ts +16 -0
- package/dist/components/dynamics/shape-utils.js +73 -0
- package/dist/components/dynamics/shape-utils.js.map +1 -0
- package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
- package/dist/components/dynamics/shape.ce.js +86 -0
- package/dist/components/dynamics/shape.ce.js.map +1 -0
- package/dist/components/dynamics/text.ce.js +36 -56
- package/dist/components/dynamics/text.ce.js.map +1 -1
- package/dist/components/gui/box.ce.js +9 -9
- package/dist/components/gui/box.ce.js.map +1 -1
- package/dist/components/gui/dialogbox/index.ce.js +75 -65
- package/dist/components/gui/dialogbox/index.ce.js.map +1 -1
- package/dist/components/gui/gameover.ce.js +47 -68
- package/dist/components/gui/gameover.ce.js.map +1 -1
- package/dist/components/gui/hud/hud.ce.js +23 -31
- package/dist/components/gui/hud/hud.ce.js.map +1 -1
- package/dist/components/gui/menu/equip-menu.ce.js +121 -172
- package/dist/components/gui/menu/equip-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/exit-menu.ce.js +15 -10
- package/dist/components/gui/menu/exit-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/items-menu.ce.js +62 -77
- package/dist/components/gui/menu/items-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/main-menu.ce.js +89 -104
- package/dist/components/gui/menu/main-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/options-menu.ce.js +12 -8
- package/dist/components/gui/menu/options-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/skills-menu.ce.js +17 -19
- package/dist/components/gui/menu/skills-menu.ce.js.map +1 -1
- package/dist/components/gui/mobile/index.js +2 -2
- package/dist/components/gui/mobile/index.js.map +1 -1
- package/dist/components/gui/mobile/mobile.ce.js +7 -5
- package/dist/components/gui/mobile/mobile.ce.js.map +1 -1
- package/dist/components/gui/notification/notification.ce.js +28 -26
- package/dist/components/gui/notification/notification.ce.js.map +1 -1
- package/dist/components/gui/save-load.ce.js +81 -256
- package/dist/components/gui/save-load.ce.js.map +1 -1
- package/dist/components/gui/shop/shop.ce.js +107 -142
- package/dist/components/gui/shop/shop.ce.js.map +1 -1
- package/dist/components/gui/title-screen.ce.js +50 -73
- package/dist/components/gui/title-screen.ce.js.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -0
- package/dist/components/interaction-components.ce.js +22 -0
- package/dist/components/interaction-components.ce.js.map +1 -0
- package/dist/components/player-components-utils.d.ts +67 -0
- package/dist/components/player-components-utils.js +162 -0
- package/dist/components/player-components-utils.js.map +1 -0
- package/dist/components/player-components-utils.spec.d.ts +1 -0
- package/dist/components/player-components.ce.js +191 -0
- package/dist/components/player-components.ce.js.map +1 -0
- package/dist/components/prebuilt/hp-bar.ce.js +45 -45
- package/dist/components/prebuilt/hp-bar.ce.js.map +1 -1
- package/dist/components/prebuilt/light-halo.ce.js +39 -60
- package/dist/components/prebuilt/light-halo.ce.js.map +1 -1
- package/dist/components/scenes/canvas.ce.js +205 -27
- package/dist/components/scenes/canvas.ce.js.map +1 -1
- package/dist/components/scenes/draw-map.ce.js +39 -39
- package/dist/components/scenes/draw-map.ce.js.map +1 -1
- package/dist/components/scenes/event-layer.ce.js +51 -10
- package/dist/components/scenes/event-layer.ce.js.map +1 -1
- package/dist/core/inject.js +1 -1
- package/dist/core/inject.js.map +1 -1
- package/dist/core/setup.js +1 -1
- package/dist/core/setup.js.map +1 -1
- package/dist/decorators/spritesheet.d.ts +1 -0
- package/dist/decorators/spritesheet.js +11 -0
- package/dist/decorators/spritesheet.js.map +1 -0
- package/dist/i18n.d.ts +55 -0
- package/dist/i18n.js +60 -0
- package/dist/i18n.js.map +1 -0
- package/dist/i18n.spec.d.ts +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +29 -21
- package/dist/module.js +45 -4
- package/dist/module.js.map +1 -1
- package/dist/node_modules/.pnpm/{@signe_di@2.9.0 → @signe_di@3.1.0}/node_modules/@signe/di/dist/index.js +7 -117
- package/dist/node_modules/.pnpm/@signe_di@3.1.0/node_modules/@signe/di/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js +239 -0
- package/dist/node_modules/.pnpm/@signe_reactive@3.1.0/node_modules/@signe/reactive/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/index.js +698 -0
- package/dist/node_modules/.pnpm/@signe_room@3.1.0_react@19.2.7/node_modules/@signe/room/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/client/index.js +43 -0
- package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/client/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{@signe_sync@2.9.0 → @signe_sync@3.1.0_react@19.2.7}/node_modules/@signe/sync/dist/index.js +57 -141
- package/dist/node_modules/.pnpm/@signe_sync@3.1.0_react@19.2.7/node_modules/@signe/sync/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js → partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js} +30 -17
- package/dist/node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js → partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/ws.js} +65 -34
- package/dist/node_modules/.pnpm/partysocket@1.2.0_react@19.2.7/node_modules/partysocket/dist/ws.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js +13 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/index.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +106 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +13 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js +121 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +10 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +110 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +99 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +82 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js.map +1 -0
- package/dist/node_modules/.pnpm/{zod@3.24.2/node_modules/zod/lib/index.js → zod@3.25.76/node_modules/zod/v3/types.js} +74 -611
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js.map +1 -0
- package/dist/presets/animation.js.map +1 -1
- package/dist/presets/faceset.js.map +1 -1
- package/dist/presets/icon.js.map +1 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/lpc.js.map +1 -1
- package/dist/presets/rmspritesheet.js.map +1 -1
- package/dist/services/AbstractSocket.d.ts +2 -0
- package/dist/services/AbstractSocket.js.map +1 -1
- package/dist/services/actionInput.d.ts +14 -0
- package/dist/services/actionInput.js +59 -0
- package/dist/services/actionInput.js.map +1 -0
- package/dist/services/actionInput.spec.d.ts +1 -0
- package/dist/services/interactions.d.ts +159 -0
- package/dist/services/interactions.js +460 -0
- package/dist/services/interactions.js.map +1 -0
- package/dist/services/interactions.spec.d.ts +1 -0
- package/dist/services/keyboardControls.d.ts +1 -0
- package/dist/services/keyboardControls.js +1 -0
- package/dist/services/keyboardControls.js.map +1 -1
- package/dist/services/loadMap.d.ts +9 -0
- package/dist/services/loadMap.js +1 -1
- package/dist/services/loadMap.js.map +1 -1
- package/dist/services/mmorpg-connection.d.ts +5 -0
- package/dist/services/mmorpg-connection.js +50 -0
- package/dist/services/mmorpg-connection.js.map +1 -0
- package/dist/services/mmorpg-connection.spec.d.ts +1 -0
- package/dist/services/mmorpg.d.ts +11 -4
- package/dist/services/mmorpg.js +57 -33
- package/dist/services/mmorpg.js.map +1 -1
- package/dist/services/pointerContext.d.ts +11 -0
- package/dist/services/pointerContext.js +48 -0
- package/dist/services/pointerContext.js.map +1 -0
- package/dist/services/pointerContext.spec.d.ts +1 -0
- package/dist/services/save.js.map +1 -1
- package/dist/services/save.spec.d.ts +1 -0
- package/dist/services/standalone-message.d.ts +1 -0
- package/dist/services/standalone-message.js +9 -0
- package/dist/services/standalone-message.js.map +1 -0
- package/dist/services/standalone.d.ts +4 -1
- package/dist/services/standalone.js +36 -16
- package/dist/services/standalone.js.map +1 -1
- package/dist/services/standalone.spec.d.ts +1 -0
- package/dist/utils/getEntityProp.js +4 -3
- package/dist/utils/getEntityProp.js.map +1 -1
- package/dist/utils/getEntityProp.spec.d.ts +1 -0
- package/dist/utils/mapId.d.ts +1 -0
- package/dist/utils/mapId.js +6 -0
- package/dist/utils/mapId.js.map +1 -0
- package/dist/utils/readPropValue.d.ts +2 -0
- package/dist/utils/readPropValue.js +13 -0
- package/dist/utils/readPropValue.js.map +1 -0
- package/package.json +13 -13
- package/src/Game/AnimationManager.spec.ts +30 -0
- package/src/Game/AnimationManager.ts +26 -10
- package/src/Game/ClientVisuals.spec.ts +56 -0
- package/src/Game/ClientVisuals.ts +184 -0
- package/src/Game/EventComponentResolver.spec.ts +84 -0
- package/src/Game/EventComponentResolver.ts +74 -0
- package/src/Game/Map.ts +134 -2
- package/src/Game/Object.spec.ts +59 -0
- package/src/Game/Object.ts +181 -77
- package/src/Game/ProjectileManager.spec.ts +449 -0
- package/src/Game/ProjectileManager.ts +346 -0
- package/src/Gui/Gui.spec.ts +340 -0
- package/src/Gui/Gui.ts +129 -57
- package/src/Resource.ts +1 -2
- package/src/RpgClient.ts +220 -17
- package/src/RpgClientEngine.ts +959 -116
- package/src/components/animations/fx.ce +101 -0
- package/src/components/animations/index.ts +4 -2
- package/src/components/character.ce +681 -45
- package/src/components/dynamics/bar.ce +88 -0
- package/src/components/dynamics/image.ce +21 -0
- package/src/components/dynamics/parse-value.spec.ts +83 -0
- package/src/components/dynamics/parse-value.ts +111 -37
- package/src/components/dynamics/shape-utils.spec.ts +46 -0
- package/src/components/dynamics/shape-utils.ts +61 -0
- package/src/components/dynamics/shape.ce +90 -0
- package/src/components/dynamics/text.ce +35 -149
- package/src/components/gui/dialogbox/index.ce +52 -21
- package/src/components/gui/gameover.ce +6 -4
- package/src/components/gui/menu/equip-menu.ce +11 -9
- package/src/components/gui/menu/exit-menu.ce +6 -4
- package/src/components/gui/menu/items-menu.ce +11 -9
- package/src/components/gui/menu/main-menu.ce +14 -12
- package/src/components/gui/menu/options-menu.ce +4 -3
- package/src/components/gui/menu/skills-menu.ce +2 -1
- package/src/components/gui/notification/notification.ce +7 -1
- package/src/components/gui/save-load.ce +13 -11
- package/src/components/gui/shop/shop.ce +20 -18
- package/src/components/gui/title-screen.ce +6 -4
- package/src/components/index.ts +2 -1
- package/src/components/interaction-components.ce +23 -0
- package/src/components/player-components-utils.spec.ts +109 -0
- package/src/components/player-components-utils.ts +205 -0
- package/src/components/player-components.ce +222 -0
- package/src/components/prebuilt/hp-bar.ce +4 -3
- package/src/components/prebuilt/light-halo.ce +2 -2
- package/src/components/scenes/canvas.ce +219 -15
- package/src/components/scenes/draw-map.ce +34 -22
- package/src/components/scenes/event-layer.ce +55 -4
- package/src/core/setup.ts +2 -2
- package/src/decorators/spritesheet.ts +8 -0
- package/src/i18n.spec.ts +39 -0
- package/src/i18n.ts +59 -0
- package/src/index.ts +7 -0
- package/src/module.ts +61 -11
- package/src/services/AbstractSocket.ts +3 -0
- package/src/services/actionInput.spec.ts +155 -0
- package/src/services/actionInput.ts +120 -0
- package/src/services/interactions.spec.ts +175 -0
- package/src/services/interactions.ts +722 -0
- package/src/services/keyboardControls.ts +2 -1
- package/src/services/loadMap.ts +5 -1
- package/src/services/mmorpg-connection.spec.ts +99 -0
- package/src/services/mmorpg-connection.ts +69 -0
- package/src/services/mmorpg.ts +70 -36
- package/src/services/pointerContext.spec.ts +36 -0
- package/src/services/pointerContext.ts +84 -0
- package/src/services/save.spec.ts +127 -0
- package/src/services/standalone-message.ts +7 -0
- package/src/services/standalone.spec.ts +54 -0
- package/src/services/standalone.ts +44 -12
- package/src/utils/getEntityProp.spec.ts +96 -0
- package/src/utils/getEntityProp.ts +4 -3
- package/src/utils/mapId.ts +2 -0
- package/src/utils/readPropValue.ts +16 -0
- package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +0 -457
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +0 -463
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +0 -2191
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +0 -10
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +0 -91
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +0 -14
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +0 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +0 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/index.js +0 -2
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-load.ce.js","names":[],"sources":["../../../src/components/gui/save-load.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-save-load rpg-anim-fade-in\">\n <div class=\"rpg-ui-save-load-header\">\n <div class=\"rpg-ui-save-load-title\">{title()}</div>\n <div class=\"rpg-ui-save-load-subtitle\">{subtitle()}</div>\n </div>\n <Navigation tabindex={selectedSlot} controls={controls}>\n <div class=\"rpg-ui-save-load-list\">\n @for ((item,displayIndex) of displaySlots) {\n <div\n class=\"rpg-ui-save-load-slot\"\n class={{active: selectedSlot() === displayIndex}}\n tabindex={displayIndex}\n data-slot-index={displayIndex}\n click={selectSlot(displayIndex)}\n >\n <div class=\"rpg-ui-save-load-slot-index\">{item.label}</div>\n @if (item.slot) {\n <div class=\"rpg-ui-save-load-slot-meta\">\n <div class=\"rpg-ui-save-load-slot-line\">Level: {item.slot.level ?? \"-\"}</div>\n <div class=\"rpg-ui-save-load-slot-line\">Exp: {item.slot.exp ?? \"-\"}</div>\n <div class=\"rpg-ui-save-load-slot-line\">Map: {item.slot.map ?? \"-\"}</div>\n <div class=\"rpg-ui-save-load-slot-line\">Date: {item.slot.date ?? \"-\"}</div>\n </div>\n }\n @else {\n <div class=\"rpg-ui-save-load-slot-empty\">Empty Slot</div>\n }\n </div>\n }\n </div>\n </Navigation>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect, createTabindexNavigator, mount } from \"canvasengine\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import { SaveClientService } from \"../../services/save\";\n import { PrebuiltGui } from \"@rpgjs/common\";\n import { RpgGui } from \"../../Gui/Gui\";\n\n const engine = inject(RpgClientEngine);\n const saveClient = inject(SaveClientService);\n const gui = inject(RpgGui);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const selectedSlot = signal(0);\n const DEFAULT_SLOTS = 4;\n const defaultSlots = () => Array.from({ length: DEFAULT_SLOTS }, () => null);\n const localSlots = signal(defaultSlots());\n\n const { data, onFinish } = defineProps();\n\n const title = computed(() => data().mode === \"save\" ? \"Save Game\" : \"Load Game\");\n const subtitle = computed(() => data().mode === \"save\"\n ? \"Choose a slot to overwrite or create.\"\n : \"Select a slot to load your progress.\"\n );\n\n const slotsValue = computed(() => localSlots());\n const displaySlots = computed(() => {\n const slots = slotsValue();\n const items = slots.map((slot, index) => ({\n kind: \"slot\",\n slot,\n slotIndex: index,\n label: `Slot ${index + 1}`,\n readonly: false\n }));\n if (!data().showAutoSlot) return items;\n const index = typeof data().autoSlotIndex === \"number\" ? data().autoSlotIndex : 0;\n const autoSlot = slots[index] ?? null;\n const readonly = data().mode === \"save\";\n return [\n {\n kind: \"auto\",\n slot: autoSlot,\n slotIndex: index,\n label: data().autoSlotLabel || \"Auto Save\",\n readonly\n },\n ...items\n ];\n });\n const nav = createTabindexNavigator(selectedSlot, { count: () => displaySlots().length }, \"wrap\");\n\n const canSelect = (item) => {\n if (item.readonly) return false;\n if (data().mode === \"load\" && !item.slot) return false;\n return true;\n };\n\n const normalizeSlotValue = (value) => {\n if (!value) return null;\n if (typeof value === \"string\") {\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n }\n return value;\n };\n\n const normalizeSlots = (list) => {\n if (Array.isArray(list)) {\n const length = Math.max(list.length, DEFAULT_SLOTS);\n return Array.from({ length }, (_, index) => normalizeSlotValue(list[index]));\n }\n if (!list || typeof list !== \"object\") {\n return defaultSlots();\n }\n const keys = Object.keys(list).filter((key) => /^\\d+$/.test(key));\n const indices = keys.map((key) => Number(key)).filter((index) => index >= 0);\n const maxIndex = indices.length ? Math.max(...indices) : -1;\n const length = Math.max(maxIndex + 1, DEFAULT_SLOTS);\n const slots = Array.from({ length }, () => null);\n keys.forEach((key) => {\n const index = Number(key);\n if (index < 0 || index >= length) return;\n slots[index] = normalizeSlotValue(list[key]);\n });\n return slots;\n };\n\n const hasProvidedSlots = (list) => {\n if (Array.isArray(list)) return list.length > 0;\n return !!(list && typeof list === \"object\" && Object.keys(list).length > 0);\n };\n\n const refreshSlots = async () => {\n try {\n const list = await saveClient.listSlots();\n localSlots.set(normalizeSlots(list));\n } catch (err) {\n localSlots.set(defaultSlots());\n }\n };\n\n const triggerSelect = async (displayIndex) => {\n const list = displaySlots();\n const item = list[displayIndex];\n if (!item) return;\n if (!canSelect(item)) return;\n const action = data().mode === \"save\" ? \"save\" : \"load\";\n if (action === \"save\") {\n await saveClient.saveSlot(item.slotIndex);\n await refreshSlots();\n }\n if (action === \"load\") {\n await saveClient.loadSlot(item.slotIndex);\n }\n setTimeout(() => {\n if (onFinish) onFinish();\n gui.hide(PrebuiltGui.Save);\n gui.hide(PrebuiltGui.TitleScreen);\n }, 50);\n\n };\n\n function selectSlot(index) {\n return function() {\n selectedSlot.set(index);\n triggerSelect(index);\n }\n }\n\n const controls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n nav.next(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n nav.next(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n triggerSelect(selectedSlot());\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (onFinish) onFinish();\n gui.hide(PrebuiltGui.Save);\n }\n },\n gamepad: {\n enabled: true\n }\n });\n\n mount((element) => {\n refreshSlots();\n });\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"save-load.ce.js","names":[],"sources":["../../../src/components/gui/save-load.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-save-load rpg-anim-fade-in\">\n <div class=\"rpg-ui-save-load-header\">\n <div class=\"rpg-ui-save-load-title\">{title()}</div>\n <div class=\"rpg-ui-save-load-subtitle\">{subtitle()}</div>\n </div>\n <Navigation tabindex={selectedSlot} controls={controls}>\n <div class=\"rpg-ui-save-load-list\">\n @for ((item,displayIndex) of displaySlots) {\n <div\n class=\"rpg-ui-save-load-slot\"\n class={{active: selectedSlot() === displayIndex}}\n tabindex={displayIndex}\n data-slot-index={displayIndex}\n click={selectSlot(displayIndex)}\n >\n <div class=\"rpg-ui-save-load-slot-index\">{item.label}</div>\n @if (item.slot) {\n <div class=\"rpg-ui-save-load-slot-meta\">\n <div class=\"rpg-ui-save-load-slot-line\">{t(\"rpg.save.level\")}: {item.slot.level ?? \"-\"}</div>\n <div class=\"rpg-ui-save-load-slot-line\">{t(\"rpg.save.exp\")}: {item.slot.exp ?? \"-\"}</div>\n <div class=\"rpg-ui-save-load-slot-line\">{t(\"rpg.save.map\")}: {item.slot.map ?? \"-\"}</div>\n <div class=\"rpg-ui-save-load-slot-line\">{t(\"rpg.save.date\")}: {item.slot.date ?? \"-\"}</div>\n </div>\n }\n @else {\n <div class=\"rpg-ui-save-load-slot-empty\">{t(\"rpg.save.empty-slot\")}</div>\n }\n </div>\n }\n </div>\n </Navigation>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect, createTabindexNavigator, mount } from \"canvasengine\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import { SaveClientService } from \"../../services/save\";\n import { PrebuiltGui } from \"@rpgjs/common\";\n import { RpgGui } from \"../../Gui/Gui\";\n import { getKeyboardControlBind } from \"../../services/actionInput\";\n\n const engine = inject(RpgClientEngine);\n const { t } = engine.i18n();\n const saveClient = inject(SaveClientService);\n const gui = inject(RpgGui);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const selectedSlot = signal(0);\n const DEFAULT_SLOTS = 4;\n const defaultSlots = () => Array.from({ length: DEFAULT_SLOTS }, () => null);\n const localSlots = signal(defaultSlots());\n\n const { data, onFinish } = defineProps();\n\n const title = computed(() => data().mode === \"save\" ? t(\"rpg.save.title\") : t(\"rpg.load.title\"));\n const subtitle = computed(() => data().mode === \"save\"\n ? t(\"rpg.save.subtitle\")\n : t(\"rpg.load.subtitle\")\n );\n\n const slotsValue = computed(() => localSlots());\n const displaySlots = computed(() => {\n const slots = slotsValue();\n const items = slots.map((slot, index) => ({\n kind: \"slot\",\n slot,\n slotIndex: index,\n label: t(\"rpg.save.slot\", { index: index + 1 }),\n readonly: false\n }));\n if (!data().showAutoSlot) return items;\n const index = typeof data().autoSlotIndex === \"number\" ? data().autoSlotIndex : 0;\n const autoSlot = slots[index] ?? null;\n const readonly = data().mode === \"save\";\n return [\n {\n kind: \"auto\",\n slot: autoSlot,\n slotIndex: index,\n label: data().autoSlotLabel || t(\"rpg.save.auto\"),\n readonly\n },\n ...items\n ];\n });\n const nav = createTabindexNavigator(selectedSlot, { count: () => displaySlots().length }, \"wrap\");\n\n const canSelect = (item) => {\n if (item.readonly) return false;\n if (data().mode === \"load\" && !item.slot) return false;\n return true;\n };\n\n const normalizeSlotValue = (value) => {\n if (!value) return null;\n if (typeof value === \"string\") {\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n }\n return value;\n };\n\n const normalizeSlots = (list) => {\n if (Array.isArray(list)) {\n const length = Math.max(list.length, DEFAULT_SLOTS);\n return Array.from({ length }, (_, index) => normalizeSlotValue(list[index]));\n }\n if (!list || typeof list !== \"object\") {\n return defaultSlots();\n }\n const keys = Object.keys(list).filter((key) => /^\\d+$/.test(key));\n const indices = keys.map((key) => Number(key)).filter((index) => index >= 0);\n const maxIndex = indices.length ? Math.max(...indices) : -1;\n const length = Math.max(maxIndex + 1, DEFAULT_SLOTS);\n const slots = Array.from({ length }, () => null);\n keys.forEach((key) => {\n const index = Number(key);\n if (index < 0 || index >= length) return;\n slots[index] = normalizeSlotValue(list[key]);\n });\n return slots;\n };\n\n const hasProvidedSlots = (list) => {\n if (Array.isArray(list)) return list.length > 0;\n return !!(list && typeof list === \"object\" && Object.keys(list).length > 0);\n };\n\n const refreshSlots = async () => {\n try {\n const list = await saveClient.listSlots();\n localSlots.set(normalizeSlots(list));\n } catch (err) {\n localSlots.set(defaultSlots());\n }\n };\n\n const triggerSelect = async (displayIndex) => {\n const list = displaySlots();\n const item = list[displayIndex];\n if (!item) return;\n if (!canSelect(item)) return;\n const action = data().mode === \"save\" ? \"save\" : \"load\";\n if (action === \"save\") {\n await saveClient.saveSlot(item.slotIndex);\n await refreshSlots();\n }\n if (action === \"load\") {\n await saveClient.loadSlot(item.slotIndex);\n }\n setTimeout(() => {\n if (onFinish) onFinish();\n gui.hide(PrebuiltGui.Save);\n gui.hide(PrebuiltGui.TitleScreen);\n }, 50);\n\n };\n\n function selectSlot(index) {\n return function() {\n selectedSlot.set(index);\n triggerSelect(index);\n }\n }\n\n const controls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n nav.next(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n nav.next(1);\n }\n },\n action: {\n bind: getKeyboardControlBind(keyboardControls.action),\n keyDown() {\n triggerSelect(selectedSlot());\n }\n },\n escape: {\n bind: keyboardControls.escape,\n keyDown() {\n if (onFinish) onFinish();\n gui.hide(PrebuiltGui.Save);\n }\n },\n gamepad: {\n enabled: true\n }\n });\n\n mount((element) => {\n refreshSlots();\n });\n</script>\n"],"mappings":"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"}
|
|
@@ -1,113 +1,89 @@
|
|
|
1
1
|
import { inject } from "../../../core/inject.js";
|
|
2
|
+
import { getKeyboardControlBind } from "../../../services/actionInput.js";
|
|
2
3
|
import { RpgClientEngine } from "../../../RpgClientEngine.js";
|
|
3
|
-
import { DOMContainer, DOMElement, DOMSprite, Navigation, computed, cond, createTabindexNavigator, effect, h, loop, signal, useDefineProps, useProps } from "canvasengine";
|
|
4
|
+
import { DOMContainer, DOMElement, DOMSprite, Navigation, computed, cond, createTabindexNavigator, effect, h, loop, signal, useDefineEmits, useDefineProps, useProps } from "canvasengine";
|
|
4
5
|
//#region src/components/gui/shop/shop.ce
|
|
5
6
|
function component($$props) {
|
|
6
7
|
useProps($$props);
|
|
7
8
|
const defineProps = useDefineProps($$props);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
9
|
+
useDefineEmits($$props);
|
|
10
|
+
const engine = inject(RpgClientEngine);
|
|
11
|
+
const { t } = engine.i18n();
|
|
12
|
+
const currentPlayer = engine.scene.currentPlayer;
|
|
13
|
+
const keyboardControls = engine.globalConfig.keyboardControls;
|
|
14
|
+
const iconSheet = (iconId) => ({
|
|
15
|
+
definition: engine.getSpriteSheet(iconId),
|
|
16
|
+
playing: "default"
|
|
17
|
+
});
|
|
18
|
+
const goldTerm = engine.globalConfig.goldTerm || "G";
|
|
19
|
+
const selectedItem = signal(0);
|
|
20
|
+
const selectedTab = signal(0);
|
|
21
|
+
const tradeMode = signal("buy");
|
|
22
|
+
const tradeView = signal("mode");
|
|
23
|
+
const selectedModeIndex = signal(0);
|
|
24
|
+
const quantity = signal(1);
|
|
25
|
+
const quantityDialogOpen = signal(false);
|
|
26
|
+
const defaultMessage = t("rpg.shop.default-message");
|
|
27
|
+
const tabs = [
|
|
27
28
|
{
|
|
28
29
|
id: "item",
|
|
29
|
-
label: "
|
|
30
|
+
label: t("rpg.menu.items")
|
|
30
31
|
},
|
|
31
32
|
{
|
|
32
33
|
id: "weapon",
|
|
33
|
-
label: "
|
|
34
|
+
label: t("rpg.menu.weapons")
|
|
34
35
|
},
|
|
35
36
|
{
|
|
36
37
|
id: "armor",
|
|
37
|
-
label: "
|
|
38
|
+
label: t("rpg.menu.armor")
|
|
38
39
|
}
|
|
39
40
|
];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return resolveProp(data) || {};
|
|
46
|
-
});
|
|
47
|
-
var shopMessage = computed(function() {
|
|
48
|
-
var message = resolveProp(guiData().message);
|
|
41
|
+
const { data, onInteraction, onFinish } = defineProps();
|
|
42
|
+
const resolveProp = (value) => typeof value === "function" ? value() : value;
|
|
43
|
+
const guiData = computed(() => resolveProp(data) || {});
|
|
44
|
+
const shopMessage = computed(() => {
|
|
45
|
+
const message = resolveProp(guiData().message);
|
|
49
46
|
return message ? String(message) : defaultMessage;
|
|
50
47
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
var hasFace = computed(function() {
|
|
55
|
-
var value = face();
|
|
48
|
+
const face = computed(() => resolveProp(guiData().face));
|
|
49
|
+
const hasFace = computed(() => {
|
|
50
|
+
const value = face();
|
|
56
51
|
return value && value.id;
|
|
57
52
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
var activeItems = computed(function() {
|
|
65
|
-
return tradeMode() === "buy" ? buyItems() : sellItems();
|
|
66
|
-
});
|
|
67
|
-
var filteredItems = computed(function() {
|
|
68
|
-
var tab = tabs[selectedTab()];
|
|
69
|
-
var items = activeItems();
|
|
53
|
+
const buyItems = computed(() => guiData().items || []);
|
|
54
|
+
const sellItems = computed(() => guiData().sellItems || []);
|
|
55
|
+
const activeItems = computed(() => tradeMode() === "buy" ? buyItems() : sellItems());
|
|
56
|
+
const filteredItems = computed(() => {
|
|
57
|
+
const tab = tabs[selectedTab()];
|
|
58
|
+
const items = activeItems();
|
|
70
59
|
if (!tab) return [];
|
|
71
|
-
return items.filter(
|
|
72
|
-
return (item === null || item === void 0 ? void 0 : item.type) === tab.id;
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
var currentItem = computed(function() {
|
|
76
|
-
return filteredItems()[selectedItem()];
|
|
60
|
+
return items.filter((item) => item?.type === tab.id);
|
|
77
61
|
});
|
|
78
|
-
|
|
79
|
-
|
|
62
|
+
const currentItem = computed(() => filteredItems()[selectedItem()]);
|
|
63
|
+
const gold = computed(() => currentPlayer()._gold());
|
|
64
|
+
const actionLabel = computed(() => tradeMode() === "buy" ? t("rpg.shop.buy") : t("rpg.shop.sell"));
|
|
65
|
+
const faceSheet = (graphicId, animationName) => ({
|
|
66
|
+
definition: engine.getSpriteSheet(graphicId),
|
|
67
|
+
playing: animationName || "default"
|
|
80
68
|
});
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
});
|
|
84
|
-
var faceSheet = function(graphicId, animationName) {
|
|
85
|
-
return {
|
|
86
|
-
definition: engine.getSpriteSheet(graphicId),
|
|
87
|
-
playing: animationName || "default"
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
var maxQuantity = computed(function() {
|
|
91
|
-
var _a;
|
|
92
|
-
var item = currentItem();
|
|
69
|
+
const maxQuantity = computed(() => {
|
|
70
|
+
const item = currentItem();
|
|
93
71
|
if (!item) return 0;
|
|
94
|
-
|
|
72
|
+
const price = item?.price || 0;
|
|
95
73
|
if (price <= 0) return 0;
|
|
96
74
|
if (tradeMode() === "sell") {
|
|
97
|
-
|
|
75
|
+
const qty = item?.quantity ?? 0;
|
|
98
76
|
return Math.max(0, qty);
|
|
99
77
|
}
|
|
100
78
|
return Math.max(1, Math.floor(gold() / price));
|
|
101
79
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return (((_a = currentItem()) === null || _a === void 0 ? void 0 : _a.price) || 0) * quantity();
|
|
80
|
+
const totalPrice = computed(() => {
|
|
81
|
+
return (currentItem()?.price || 0) * quantity();
|
|
105
82
|
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
var order = [
|
|
83
|
+
const displayStats = computed(() => {
|
|
84
|
+
const stats = currentItem()?.stats || {};
|
|
85
|
+
const params = guiData().playerParams || {};
|
|
86
|
+
const order = [
|
|
111
87
|
"atk",
|
|
112
88
|
"def",
|
|
113
89
|
"pdef",
|
|
@@ -119,7 +95,7 @@ function component($$props) {
|
|
|
119
95
|
"maxHp",
|
|
120
96
|
"maxSp"
|
|
121
97
|
];
|
|
122
|
-
|
|
98
|
+
const labels = {
|
|
123
99
|
atk: "ATK",
|
|
124
100
|
def: "DEF",
|
|
125
101
|
pdef: "PDEF",
|
|
@@ -131,21 +107,16 @@ function component($$props) {
|
|
|
131
107
|
maxHp: "MAX HP",
|
|
132
108
|
maxSp: "MAX SP"
|
|
133
109
|
};
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
var keys = orderedKeys.concat(extraKeys);
|
|
141
|
-
var list = [];
|
|
142
|
-
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
143
|
-
var key = keys_1[_i];
|
|
144
|
-
var delta = stats[key];
|
|
110
|
+
const orderedKeys = order.filter((key) => stats[key] !== void 0);
|
|
111
|
+
const extraKeys = Object.keys(stats).filter((key) => !order.includes(key));
|
|
112
|
+
const keys = orderedKeys.concat(extraKeys);
|
|
113
|
+
const list = [];
|
|
114
|
+
for (const key of keys) {
|
|
115
|
+
const delta = stats[key];
|
|
145
116
|
if (delta === void 0 || delta === 0) continue;
|
|
146
|
-
|
|
117
|
+
let current = params[key];
|
|
147
118
|
if (current === void 0 && key === "def") current = params.pdef;
|
|
148
|
-
|
|
119
|
+
const next = current !== void 0 ? current + delta : void 0;
|
|
149
120
|
list.push({
|
|
150
121
|
key,
|
|
151
122
|
label: labels[key] || key.toUpperCase(),
|
|
@@ -156,15 +127,9 @@ function component($$props) {
|
|
|
156
127
|
}
|
|
157
128
|
return list;
|
|
158
129
|
});
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
var navTab = createTabindexNavigator(selectedTab, { count: function() {
|
|
163
|
-
return tabs.length;
|
|
164
|
-
} }, "wrap");
|
|
165
|
-
var navMode = createTabindexNavigator(selectedModeIndex, { count: function() {
|
|
166
|
-
return 2;
|
|
167
|
-
} }, "wrap");
|
|
130
|
+
const nav = createTabindexNavigator(selectedItem, { count: () => filteredItems().length }, "wrap");
|
|
131
|
+
const navTab = createTabindexNavigator(selectedTab, { count: () => tabs.length }, "wrap");
|
|
132
|
+
const navMode = createTabindexNavigator(selectedModeIndex, { count: () => 2 }, "wrap");
|
|
168
133
|
function selectItem(index) {
|
|
169
134
|
return function() {
|
|
170
135
|
selectedItem.set(index);
|
|
@@ -188,11 +153,10 @@ function component($$props) {
|
|
|
188
153
|
};
|
|
189
154
|
}
|
|
190
155
|
function isItemDisabled(item) {
|
|
191
|
-
var _a;
|
|
192
156
|
if (!item) return true;
|
|
193
|
-
|
|
157
|
+
const price = item?.price || 0;
|
|
194
158
|
if (price <= 0) return true;
|
|
195
|
-
if (tradeMode() === "sell") return (
|
|
159
|
+
if (tradeMode() === "sell") return (item?.quantity ?? 0) <= 0;
|
|
196
160
|
return gold() < price;
|
|
197
161
|
}
|
|
198
162
|
function backToMode() {
|
|
@@ -202,9 +166,9 @@ function component($$props) {
|
|
|
202
166
|
}
|
|
203
167
|
function changeQuantity(delta) {
|
|
204
168
|
return function() {
|
|
205
|
-
|
|
169
|
+
const limit = maxQuantity();
|
|
206
170
|
if (limit <= 0) return;
|
|
207
|
-
|
|
171
|
+
const nextValue = Math.max(1, Math.min(limit, quantity() + delta));
|
|
208
172
|
if (nextValue !== quantity()) quantity.set(nextValue);
|
|
209
173
|
};
|
|
210
174
|
}
|
|
@@ -215,7 +179,7 @@ function component($$props) {
|
|
|
215
179
|
}
|
|
216
180
|
function confirmTrade() {
|
|
217
181
|
return function() {
|
|
218
|
-
|
|
182
|
+
const item = currentItem();
|
|
219
183
|
if (!item || isItemDisabled(item)) {
|
|
220
184
|
quantityDialogOpen.set(false);
|
|
221
185
|
return;
|
|
@@ -227,16 +191,16 @@ function component($$props) {
|
|
|
227
191
|
quantityDialogOpen.set(false);
|
|
228
192
|
};
|
|
229
193
|
}
|
|
230
|
-
effect(
|
|
231
|
-
|
|
194
|
+
effect(() => {
|
|
195
|
+
const count = filteredItems().length;
|
|
232
196
|
if (selectedItem() >= count) selectedItem.set(Math.max(0, count - 1));
|
|
233
197
|
});
|
|
234
|
-
|
|
198
|
+
const modeControls = signal({
|
|
235
199
|
left: {
|
|
236
200
|
repeat: true,
|
|
237
201
|
bind: keyboardControls.left,
|
|
238
202
|
throttle: 150,
|
|
239
|
-
keyDown
|
|
203
|
+
keyDown() {
|
|
240
204
|
navMode.next(-1);
|
|
241
205
|
}
|
|
242
206
|
},
|
|
@@ -244,14 +208,14 @@ function component($$props) {
|
|
|
244
208
|
repeat: true,
|
|
245
209
|
bind: keyboardControls.right,
|
|
246
210
|
throttle: 150,
|
|
247
|
-
keyDown
|
|
211
|
+
keyDown() {
|
|
248
212
|
navMode.next(1);
|
|
249
213
|
}
|
|
250
214
|
},
|
|
251
215
|
action: {
|
|
252
|
-
bind: keyboardControls.action,
|
|
253
|
-
keyDown
|
|
254
|
-
|
|
216
|
+
bind: getKeyboardControlBind(keyboardControls.action),
|
|
217
|
+
keyDown() {
|
|
218
|
+
const mode = selectedModeIndex() === 0 ? "buy" : "sell";
|
|
255
219
|
tradeMode.set(mode);
|
|
256
220
|
selectedItem.set(0);
|
|
257
221
|
quantity.set(1);
|
|
@@ -260,18 +224,18 @@ function component($$props) {
|
|
|
260
224
|
},
|
|
261
225
|
escape: {
|
|
262
226
|
bind: keyboardControls.escape,
|
|
263
|
-
keyDown
|
|
227
|
+
keyDown() {
|
|
264
228
|
onFinish();
|
|
265
229
|
}
|
|
266
230
|
},
|
|
267
231
|
gamepad: { enabled: true }
|
|
268
232
|
});
|
|
269
|
-
|
|
233
|
+
const itemControls = signal({
|
|
270
234
|
up: {
|
|
271
235
|
repeat: true,
|
|
272
236
|
bind: keyboardControls.up,
|
|
273
237
|
throttle: 150,
|
|
274
|
-
keyDown
|
|
238
|
+
keyDown() {
|
|
275
239
|
if (quantityDialogOpen()) {
|
|
276
240
|
changeQuantity(1)();
|
|
277
241
|
return;
|
|
@@ -283,7 +247,7 @@ function component($$props) {
|
|
|
283
247
|
repeat: true,
|
|
284
248
|
bind: keyboardControls.down,
|
|
285
249
|
throttle: 150,
|
|
286
|
-
keyDown
|
|
250
|
+
keyDown() {
|
|
287
251
|
if (quantityDialogOpen()) {
|
|
288
252
|
changeQuantity(-1)();
|
|
289
253
|
return;
|
|
@@ -292,16 +256,16 @@ function component($$props) {
|
|
|
292
256
|
}
|
|
293
257
|
},
|
|
294
258
|
action: {
|
|
295
|
-
bind: keyboardControls.action,
|
|
296
|
-
keyDown
|
|
259
|
+
bind: getKeyboardControlBind(keyboardControls.action),
|
|
260
|
+
keyDown() {
|
|
297
261
|
if (quantityDialogOpen()) {
|
|
298
|
-
|
|
299
|
-
if (!
|
|
262
|
+
const item = currentItem();
|
|
263
|
+
if (!item || isItemDisabled(item)) {
|
|
300
264
|
quantityDialogOpen.set(false);
|
|
301
265
|
return;
|
|
302
266
|
}
|
|
303
267
|
onInteraction(tradeMode() === "buy" ? "buyItem" : "sellItem", {
|
|
304
|
-
id:
|
|
268
|
+
id: item.id,
|
|
305
269
|
nb: quantity()
|
|
306
270
|
});
|
|
307
271
|
quantityDialogOpen.set(false);
|
|
@@ -312,7 +276,7 @@ function component($$props) {
|
|
|
312
276
|
},
|
|
313
277
|
escape: {
|
|
314
278
|
bind: keyboardControls.escape,
|
|
315
|
-
keyDown
|
|
279
|
+
keyDown() {
|
|
316
280
|
if (quantityDialogOpen()) {
|
|
317
281
|
quantityDialogOpen.set(false);
|
|
318
282
|
return;
|
|
@@ -322,12 +286,12 @@ function component($$props) {
|
|
|
322
286
|
},
|
|
323
287
|
gamepad: { enabled: true }
|
|
324
288
|
});
|
|
325
|
-
|
|
289
|
+
const tabControls = signal({
|
|
326
290
|
left: {
|
|
327
291
|
repeat: true,
|
|
328
292
|
bind: keyboardControls.left,
|
|
329
293
|
throttle: 150,
|
|
330
|
-
keyDown
|
|
294
|
+
keyDown() {
|
|
331
295
|
if (quantityDialogOpen()) return;
|
|
332
296
|
navTab.next(-1);
|
|
333
297
|
}
|
|
@@ -336,7 +300,7 @@ function component($$props) {
|
|
|
336
300
|
repeat: true,
|
|
337
301
|
bind: keyboardControls.right,
|
|
338
302
|
throttle: 150,
|
|
339
|
-
keyDown
|
|
303
|
+
keyDown() {
|
|
340
304
|
if (quantityDialogOpen()) return;
|
|
341
305
|
navTab.next(1);
|
|
342
306
|
}
|
|
@@ -395,7 +359,7 @@ function component($$props) {
|
|
|
395
359
|
}), h(DOMElement, {
|
|
396
360
|
element: "h2",
|
|
397
361
|
attrs: { style: "margin: 0;" },
|
|
398
|
-
textContent:
|
|
362
|
+
textContent: computed(() => t("rpg.shop.choose-action"))
|
|
399
363
|
})]), h(DOMElement, {
|
|
400
364
|
element: "div",
|
|
401
365
|
attrs: { class: "rpg-shop-trade" }
|
|
@@ -411,14 +375,14 @@ function component($$props) {
|
|
|
411
375
|
class: ["rpg-shop-tab", computed(() => ({ active: selectedModeIndex() === 0 }))],
|
|
412
376
|
click: selectMode("buy")
|
|
413
377
|
},
|
|
414
|
-
textContent: "
|
|
378
|
+
textContent: computed(() => t("rpg.shop.buy"))
|
|
415
379
|
}), h(DOMElement, {
|
|
416
380
|
element: "div",
|
|
417
381
|
attrs: {
|
|
418
382
|
class: ["rpg-shop-tab", computed(() => ({ active: selectedModeIndex() === 1 }))],
|
|
419
383
|
click: selectMode("sell")
|
|
420
384
|
},
|
|
421
|
-
textContent: "
|
|
385
|
+
textContent: computed(() => t("rpg.shop.sell"))
|
|
422
386
|
})])))])), () => h(DOMElement, { element: "div" }, [h(Navigation, {
|
|
423
387
|
tabindex: selectedTab,
|
|
424
388
|
controls: tabControls
|
|
@@ -481,7 +445,7 @@ function component($$props) {
|
|
|
481
445
|
cond(item.equipped, () => h(DOMElement, {
|
|
482
446
|
element: "div",
|
|
483
447
|
attrs: { class: "rpg-shop-card-tag" },
|
|
484
|
-
textContent: "
|
|
448
|
+
textContent: computed(() => t("rpg.shop.equipped"))
|
|
485
449
|
}))
|
|
486
450
|
])))), h(DOMElement, {
|
|
487
451
|
element: "div",
|
|
@@ -514,13 +478,13 @@ function component($$props) {
|
|
|
514
478
|
cond(computed(() => currentItem()?.quantity !== void 0), () => h(DOMElement, {
|
|
515
479
|
element: "div",
|
|
516
480
|
attrs: { class: "rpg-shop-details-qty" },
|
|
517
|
-
textContent: computed(() => "
|
|
481
|
+
textContent: computed(() => t("rpg.shop.qty") + ": x" + currentItem()?.quantity)
|
|
518
482
|
}))
|
|
519
483
|
]),
|
|
520
|
-
h(DOMElement, { element: "div" }, cond(currentItem()?.equipped, () => h(DOMElement, {
|
|
484
|
+
h(DOMElement, { element: "div" }, cond(computed(() => currentItem()?.equipped), () => h(DOMElement, {
|
|
521
485
|
element: "div",
|
|
522
486
|
attrs: { class: "rpg-shop-equipped" },
|
|
523
|
-
textContent: "
|
|
487
|
+
textContent: computed(() => t("rpg.shop.already-equipped"))
|
|
524
488
|
}))),
|
|
525
489
|
h(DOMElement, {
|
|
526
490
|
element: "div",
|
|
@@ -559,7 +523,7 @@ function component($$props) {
|
|
|
559
523
|
class: "rpg-shop-btn",
|
|
560
524
|
click: backToMode()
|
|
561
525
|
},
|
|
562
|
-
textContent: "
|
|
526
|
+
textContent: computed(() => t("rpg.shop.back"))
|
|
563
527
|
})
|
|
564
528
|
])])])), cond(quantityDialogOpen, () => h(DOMElement, {
|
|
565
529
|
element: "div",
|
|
@@ -581,7 +545,7 @@ function component($$props) {
|
|
|
581
545
|
cond(computed(() => currentItem()?.quantity !== void 0), () => h(DOMElement, {
|
|
582
546
|
element: "div",
|
|
583
547
|
attrs: { class: "rpg-shop-modal-qty" },
|
|
584
|
-
textContent: computed(() => "
|
|
548
|
+
textContent: computed(() => t("rpg.shop.available") + ": x" + currentItem()?.quantity)
|
|
585
549
|
})),
|
|
586
550
|
h(DOMElement, {
|
|
587
551
|
element: "div",
|
|
@@ -589,7 +553,7 @@ function component($$props) {
|
|
|
589
553
|
}, [h(DOMElement, {
|
|
590
554
|
element: "div",
|
|
591
555
|
attrs: { class: "rpg-shop-quantity-label" },
|
|
592
|
-
textContent: "
|
|
556
|
+
textContent: computed(() => t("rpg.shop.quantity"))
|
|
593
557
|
}), h(DOMElement, {
|
|
594
558
|
element: "div",
|
|
595
559
|
attrs: { class: "rpg-shop-quantity-controls" }
|
|
@@ -621,7 +585,7 @@ function component($$props) {
|
|
|
621
585
|
attrs: { class: "rpg-shop-modal-total" }
|
|
622
586
|
}, [h(DOMElement, {
|
|
623
587
|
element: "span",
|
|
624
|
-
textContent: "
|
|
588
|
+
textContent: computed(() => t("rpg.shop.total"))
|
|
625
589
|
}), h(DOMElement, {
|
|
626
590
|
element: "span",
|
|
627
591
|
textContent: computed(() => totalPrice() + goldTerm)
|
|
@@ -635,7 +599,7 @@ function component($$props) {
|
|
|
635
599
|
class: "rpg-shop-btn rpg-shop-btn-secondary",
|
|
636
600
|
click: closeQuantityDialog()
|
|
637
601
|
},
|
|
638
|
-
textContent: "
|
|
602
|
+
textContent: computed(() => t("rpg.menu.cancel"))
|
|
639
603
|
}), h(DOMElement, {
|
|
640
604
|
element: "button",
|
|
641
605
|
attrs: {
|
|
@@ -646,7 +610,8 @@ function component($$props) {
|
|
|
646
610
|
})])
|
|
647
611
|
])))]))]));
|
|
648
612
|
}
|
|
613
|
+
var __ce_component = component;
|
|
649
614
|
//#endregion
|
|
650
|
-
export {
|
|
615
|
+
export { __ce_component as default };
|
|
651
616
|
|
|
652
617
|
//# sourceMappingURL=shop.ce.js.map
|