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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +19 -0
  3. package/dist/Game/AnimationManager.d.ts +1 -1
  4. package/dist/Game/AnimationManager.js +18 -9
  5. package/dist/Game/AnimationManager.js.map +1 -1
  6. package/dist/Game/AnimationManager.spec.d.ts +1 -0
  7. package/dist/Game/Event.js.map +1 -1
  8. package/dist/Game/Map.d.ts +9 -1
  9. package/dist/Game/Map.js +63 -5
  10. package/dist/Game/Map.js.map +1 -1
  11. package/dist/Game/Object.d.ts +47 -15
  12. package/dist/Game/Object.js +82 -38
  13. package/dist/Game/Object.js.map +1 -1
  14. package/dist/Game/Player.js.map +1 -1
  15. package/dist/Gui/Gui.d.ts +17 -4
  16. package/dist/Gui/Gui.js +78 -48
  17. package/dist/Gui/Gui.js.map +1 -1
  18. package/dist/Gui/Gui.spec.d.ts +1 -0
  19. package/dist/Gui/NotificationManager.js.map +1 -1
  20. package/dist/Resource.js +1 -1
  21. package/dist/Resource.js.map +1 -1
  22. package/dist/RpgClient.d.ts +57 -2
  23. package/dist/RpgClientEngine.d.ts +61 -6
  24. package/dist/RpgClientEngine.js +122 -14
  25. package/dist/RpgClientEngine.js.map +1 -1
  26. package/dist/Sound.js.map +1 -1
  27. package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.130.0}/helpers/decorate.js +1 -1
  28. package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.130.0}/helpers/decorateMetadata.js +1 -1
  29. package/dist/components/animations/animation.ce.js +4 -5
  30. package/dist/components/animations/animation.ce.js.map +1 -1
  31. package/dist/components/animations/hit.ce.js +19 -25
  32. package/dist/components/animations/hit.ce.js.map +1 -1
  33. package/dist/components/animations/index.js +4 -4
  34. package/dist/components/animations/index.js.map +1 -1
  35. package/dist/components/character.ce.js +406 -226
  36. package/dist/components/character.ce.js.map +1 -1
  37. package/dist/components/dynamics/bar.ce.js +96 -0
  38. package/dist/components/dynamics/bar.ce.js.map +1 -0
  39. package/dist/components/dynamics/image.ce.js +23 -0
  40. package/dist/components/dynamics/image.ce.js.map +1 -0
  41. package/dist/components/dynamics/parse-value.d.ts +3 -0
  42. package/dist/components/dynamics/parse-value.js +54 -35
  43. package/dist/components/dynamics/parse-value.js.map +1 -1
  44. package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
  45. package/dist/components/dynamics/shape-utils.d.ts +16 -0
  46. package/dist/components/dynamics/shape-utils.js +73 -0
  47. package/dist/components/dynamics/shape-utils.js.map +1 -0
  48. package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
  49. package/dist/components/dynamics/shape.ce.js +83 -0
  50. package/dist/components/dynamics/shape.ce.js.map +1 -0
  51. package/dist/components/dynamics/text.ce.js +33 -56
  52. package/dist/components/dynamics/text.ce.js.map +1 -1
  53. package/dist/components/gui/box.ce.js +6 -8
  54. package/dist/components/gui/box.ce.js.map +1 -1
  55. package/dist/components/gui/dialogbox/index.ce.js +53 -60
  56. package/dist/components/gui/dialogbox/index.ce.js.map +1 -1
  57. package/dist/components/gui/gameover.ce.js +39 -63
  58. package/dist/components/gui/gameover.ce.js.map +1 -1
  59. package/dist/components/gui/hud/hud.ce.js +21 -30
  60. package/dist/components/gui/hud/hud.ce.js.map +1 -1
  61. package/dist/components/gui/menu/equip-menu.ce.js +110 -164
  62. package/dist/components/gui/menu/equip-menu.ce.js.map +1 -1
  63. package/dist/components/gui/menu/exit-menu.ce.js +6 -5
  64. package/dist/components/gui/menu/exit-menu.ce.js.map +1 -1
  65. package/dist/components/gui/menu/items-menu.ce.js +49 -67
  66. package/dist/components/gui/menu/items-menu.ce.js.map +1 -1
  67. package/dist/components/gui/menu/main-menu.ce.js +72 -90
  68. package/dist/components/gui/menu/main-menu.ce.js.map +1 -1
  69. package/dist/components/gui/menu/options-menu.ce.js +5 -4
  70. package/dist/components/gui/menu/options-menu.ce.js.map +1 -1
  71. package/dist/components/gui/menu/skills-menu.ce.js +12 -17
  72. package/dist/components/gui/menu/skills-menu.ce.js.map +1 -1
  73. package/dist/components/gui/mobile/index.js +2 -2
  74. package/dist/components/gui/mobile/index.js.map +1 -1
  75. package/dist/components/gui/mobile/mobile.ce.js +5 -4
  76. package/dist/components/gui/mobile/mobile.ce.js.map +1 -1
  77. package/dist/components/gui/notification/notification.ce.js +22 -24
  78. package/dist/components/gui/notification/notification.ce.js.map +1 -1
  79. package/dist/components/gui/save-load.ce.js +70 -248
  80. package/dist/components/gui/save-load.ce.js.map +1 -1
  81. package/dist/components/gui/shop/shop.ce.js +87 -125
  82. package/dist/components/gui/shop/shop.ce.js.map +1 -1
  83. package/dist/components/gui/title-screen.ce.js +42 -68
  84. package/dist/components/gui/title-screen.ce.js.map +1 -1
  85. package/dist/components/player-components-utils.d.ts +67 -0
  86. package/dist/components/player-components-utils.js +162 -0
  87. package/dist/components/player-components-utils.js.map +1 -0
  88. package/dist/components/player-components-utils.spec.d.ts +1 -0
  89. package/dist/components/player-components.ce.js +188 -0
  90. package/dist/components/player-components.ce.js.map +1 -0
  91. package/dist/components/prebuilt/hp-bar.ce.js +41 -44
  92. package/dist/components/prebuilt/hp-bar.ce.js.map +1 -1
  93. package/dist/components/prebuilt/light-halo.ce.js +35 -59
  94. package/dist/components/prebuilt/light-halo.ce.js.map +1 -1
  95. package/dist/components/scenes/canvas.ce.js +157 -21
  96. package/dist/components/scenes/canvas.ce.js.map +1 -1
  97. package/dist/components/scenes/draw-map.ce.js +19 -29
  98. package/dist/components/scenes/draw-map.ce.js.map +1 -1
  99. package/dist/components/scenes/event-layer.ce.js +9 -8
  100. package/dist/components/scenes/event-layer.ce.js.map +1 -1
  101. package/dist/core/inject.js +1 -1
  102. package/dist/core/inject.js.map +1 -1
  103. package/dist/core/setup.js +1 -1
  104. package/dist/core/setup.js.map +1 -1
  105. package/dist/decorators/spritesheet.d.ts +1 -0
  106. package/dist/decorators/spritesheet.js +11 -0
  107. package/dist/decorators/spritesheet.js.map +1 -0
  108. package/dist/index.d.ts +1 -0
  109. package/dist/index.js +21 -20
  110. package/dist/module.js +4 -1
  111. package/dist/module.js.map +1 -1
  112. package/dist/node_modules/.pnpm/{@signe_di@2.9.0 → @signe_di@3.0.1}/node_modules/@signe/di/dist/index.js +7 -117
  113. package/dist/node_modules/.pnpm/@signe_di@3.0.1/node_modules/@signe/di/dist/index.js.map +1 -0
  114. package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js +239 -0
  115. package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js.map +1 -0
  116. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
  117. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
  118. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js +696 -0
  119. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js.map +1 -0
  120. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js +44 -0
  121. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js.map +1 -0
  122. package/dist/node_modules/.pnpm/{@signe_sync@2.9.0 → @signe_sync@3.0.1}/node_modules/@signe/sync/dist/index.js +57 -141
  123. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/index.js.map +1 -0
  124. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -1
  125. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -1
  126. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js +27 -27
  127. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -1
  128. package/dist/presets/animation.js.map +1 -1
  129. package/dist/presets/faceset.js.map +1 -1
  130. package/dist/presets/icon.js.map +1 -1
  131. package/dist/presets/index.js.map +1 -1
  132. package/dist/presets/lpc.js.map +1 -1
  133. package/dist/presets/rmspritesheet.js.map +1 -1
  134. package/dist/services/AbstractSocket.js.map +1 -1
  135. package/dist/services/keyboardControls.js.map +1 -1
  136. package/dist/services/loadMap.d.ts +6 -0
  137. package/dist/services/loadMap.js +1 -1
  138. package/dist/services/loadMap.js.map +1 -1
  139. package/dist/services/mmorpg.js +9 -4
  140. package/dist/services/mmorpg.js.map +1 -1
  141. package/dist/services/save.js.map +1 -1
  142. package/dist/services/save.spec.d.ts +1 -0
  143. package/dist/services/standalone.js +1 -1
  144. package/dist/services/standalone.js.map +1 -1
  145. package/dist/utils/getEntityProp.js +4 -3
  146. package/dist/utils/getEntityProp.js.map +1 -1
  147. package/dist/utils/getEntityProp.spec.d.ts +1 -0
  148. package/dist/utils/readPropValue.d.ts +2 -0
  149. package/dist/utils/readPropValue.js +13 -0
  150. package/dist/utils/readPropValue.js.map +1 -0
  151. package/package.json +13 -14
  152. package/src/Game/AnimationManager.spec.ts +30 -0
  153. package/src/Game/AnimationManager.ts +22 -10
  154. package/src/Game/Map.ts +91 -2
  155. package/src/Game/Object.ts +148 -69
  156. package/src/Gui/Gui.spec.ts +273 -0
  157. package/src/Gui/Gui.ts +105 -50
  158. package/src/Resource.ts +1 -2
  159. package/src/RpgClient.ts +63 -2
  160. package/src/RpgClientEngine.ts +173 -25
  161. package/src/components/character.ce +422 -15
  162. package/src/components/dynamics/bar.ce +87 -0
  163. package/src/components/dynamics/image.ce +20 -0
  164. package/src/components/dynamics/parse-value.spec.ts +83 -0
  165. package/src/components/dynamics/parse-value.ts +111 -37
  166. package/src/components/dynamics/shape-utils.spec.ts +46 -0
  167. package/src/components/dynamics/shape-utils.ts +61 -0
  168. package/src/components/dynamics/shape.ce +89 -0
  169. package/src/components/dynamics/text.ce +34 -149
  170. package/src/components/gui/dialogbox/index.ce +15 -6
  171. package/src/components/player-components-utils.spec.ts +109 -0
  172. package/src/components/player-components-utils.ts +205 -0
  173. package/src/components/player-components.ce +221 -0
  174. package/src/components/scenes/canvas.ce +165 -6
  175. package/src/components/scenes/draw-map.ce +2 -15
  176. package/src/components/scenes/event-layer.ce +1 -2
  177. package/src/core/setup.ts +2 -2
  178. package/src/decorators/spritesheet.ts +8 -0
  179. package/src/index.ts +1 -0
  180. package/src/module.ts +5 -1
  181. package/src/services/loadMap.ts +2 -0
  182. package/src/services/mmorpg.ts +8 -2
  183. package/src/services/save.spec.ts +127 -0
  184. package/src/utils/getEntityProp.spec.ts +96 -0
  185. package/src/utils/getEntityProp.ts +4 -3
  186. package/src/utils/readPropValue.ts +16 -0
  187. package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +0 -1
  188. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +0 -457
  189. package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +0 -1
  190. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +0 -463
  191. package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +0 -1
  192. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +0 -2191
  193. package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +0 -1
  194. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +0 -10
  195. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +0 -1
  196. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +0 -91
  197. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +0 -1
  198. package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +0 -1
  199. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +0 -14
  200. package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +0 -1
@@ -7,81 +7,55 @@ import { PrebuiltGui } from "@rpgjs/common";
7
7
  function component($$props) {
8
8
  useProps($$props);
9
9
  const defineProps = useDefineProps($$props);
10
- var __assign = this && this.__assign || function() {
11
- __assign = Object.assign || function(t) {
12
- for (var s, i = 1, n = arguments.length; i < n; i++) {
13
- s = arguments[i];
14
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
15
- }
16
- return t;
17
- };
18
- return __assign.apply(this, arguments);
19
- };
20
- var engine = inject(RpgClientEngine);
21
- var guiService = inject(RpgGui);
22
- var keyboardControls = engine.globalConfig.keyboardControls;
23
- var _a = defineProps({
24
- entries: { default: function() {
25
- return [];
26
- } },
27
- saveLoad: { default: function() {
28
- return {};
29
- } },
10
+ const engine = inject(RpgClientEngine);
11
+ const guiService = inject(RpgGui);
12
+ const keyboardControls = engine.globalConfig.keyboardControls;
13
+ const { entries, title, subtitle, saveLoad, localActions, onInteraction } = defineProps({
14
+ entries: { default: () => [] },
15
+ saveLoad: { default: () => ({}) },
30
16
  localActions: { default: false }
31
- }), entries = _a.entries, title = _a.title, subtitle = _a.subtitle, saveLoad = _a.saveLoad, localActions = _a.localActions, onInteraction = _a.onInteraction;
32
- var defaultEntries = [{
17
+ });
18
+ const defaultEntries = [{
33
19
  id: "title",
34
20
  label: "Title Screen"
35
21
  }, {
36
22
  id: "load",
37
23
  label: "Load Game"
38
24
  }];
39
- var resolveProp = function(value) {
40
- return typeof value === "function" ? value() : value;
41
- };
42
- var titleText = computed(function() {
43
- return resolveProp(title) || "Game Over";
44
- });
45
- var subtitleText = computed(function() {
46
- return resolveProp(subtitle) || "";
47
- });
48
- var localActionsEnabled = computed(function() {
49
- return resolveProp(localActions) === true;
50
- });
51
- var entryList = computed(function() {
52
- var list = resolveProp(entries);
25
+ const resolveProp = (value) => typeof value === "function" ? value() : value;
26
+ const titleText = computed(() => resolveProp(title) || "Game Over");
27
+ const subtitleText = computed(() => resolveProp(subtitle) || "");
28
+ const localActionsEnabled = computed(() => resolveProp(localActions) === true);
29
+ const entryList = computed(() => {
30
+ const list = resolveProp(entries);
53
31
  if (Array.isArray(list) && list.length) return list;
54
32
  return defaultEntries;
55
33
  });
56
- var isEntryDisabled = function(entry) {
34
+ const isEntryDisabled = (entry) => {
57
35
  if (!entry) return true;
58
36
  if (entry.disabled) return true;
59
37
  if (entry.enabled === false) return true;
60
38
  return false;
61
39
  };
62
- var selectedEntry = signal(0);
63
- var selectableIndexes = computed(function() {
64
- return entryList().map(function(entry, index) {
65
- return isEntryDisabled(entry) ? null : index;
66
- }).filter(function(value) {
67
- return value !== null;
68
- });
40
+ const selectedEntry = signal(0);
41
+ const selectableIndexes = computed(() => {
42
+ return entryList().map((entry, index) => isEntryDisabled(entry) ? null : index).filter((value) => value !== null);
69
43
  });
70
- effect(function() {
71
- var available = selectableIndexes();
44
+ effect(() => {
45
+ const available = selectableIndexes();
72
46
  if (!available.length) return;
73
- var current = selectedEntry();
47
+ const current = selectedEntry();
74
48
  if (!available.includes(current)) selectedEntry.set(available[0]);
75
49
  });
76
- var moveSelection = function(delta) {
77
- var available = selectableIndexes();
50
+ const moveSelection = (delta) => {
51
+ const available = selectableIndexes();
78
52
  if (!available.length) return;
79
- var current = selectedEntry();
80
- var nextIndex = (Math.max(0, available.indexOf(current)) + delta + available.length) % available.length;
53
+ const current = selectedEntry();
54
+ const nextIndex = (Math.max(0, available.indexOf(current)) + delta + available.length) % available.length;
81
55
  selectedEntry.set(available[nextIndex]);
82
56
  };
83
- var triggerSelect = function(index) {
84
- var entry = entryList()[index];
57
+ const triggerSelect = (index) => {
58
+ const entry = entryList()[index];
85
59
  if (!entry || isEntryDisabled(entry)) return;
86
60
  if (localActionsEnabled()) {
87
61
  if (entry.id === "title") {
@@ -89,16 +63,17 @@ function component($$props) {
89
63
  guiService.display(PrebuiltGui.TitleScreen);
90
64
  }
91
65
  if (entry.id === "load") {
92
- var config = resolveProp(saveLoad) || {};
93
- var slots = Array.isArray(config.slots) ? config.slots : [
66
+ const config = resolveProp(saveLoad) || {};
67
+ const slots = Array.isArray(config.slots) ? config.slots : [
94
68
  null,
95
69
  null,
96
70
  null
97
71
  ];
98
- guiService.display(PrebuiltGui.Save, __assign(__assign({}, config), {
72
+ guiService.display(PrebuiltGui.Save, {
73
+ ...config,
99
74
  mode: config.mode || "load",
100
75
  slots
101
- }));
76
+ });
102
77
  }
103
78
  }
104
79
  if (onInteraction) onInteraction("select", {
@@ -113,12 +88,12 @@ function component($$props) {
113
88
  triggerSelect(index);
114
89
  };
115
90
  }
116
- var controls = signal({
91
+ const controls = signal({
117
92
  up: {
118
93
  repeat: true,
119
94
  bind: keyboardControls.up,
120
95
  throttle: 150,
121
- keyDown: function() {
96
+ keyDown() {
122
97
  moveSelection(-1);
123
98
  }
124
99
  },
@@ -126,13 +101,13 @@ function component($$props) {
126
101
  repeat: true,
127
102
  bind: keyboardControls.down,
128
103
  throttle: 150,
129
- keyDown: function() {
104
+ keyDown() {
130
105
  moveSelection(1);
131
106
  }
132
107
  },
133
108
  action: {
134
109
  bind: keyboardControls.action,
135
- keyDown: function() {
110
+ keyDown() {
136
111
  triggerSelect(selectedEntry());
137
112
  }
138
113
  },
@@ -164,7 +139,7 @@ function component($$props) {
164
139
  element: "div",
165
140
  attrs: { class: "rpg-ui-gameover-title" },
166
141
  textContent: computed(() => titleText())
167
- }), cond(subtitleText(), () => h(DOMElement, {
142
+ }), cond(computed(() => subtitleText()), () => h(DOMElement, {
168
143
  element: "div",
169
144
  attrs: { class: "rpg-ui-gameover-subtitle" },
170
145
  textContent: computed(() => subtitleText())
@@ -187,7 +162,8 @@ function component($$props) {
187
162
  }))))
188
163
  ]));
189
164
  }
165
+ var __ce_component = component;
190
166
  //#endregion
191
- export { component as default };
167
+ export { __ce_component as default };
192
168
 
193
169
  //# sourceMappingURL=gameover.ce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gameover.ce.js","names":[],"sources":["../../../src/components/gui/gameover.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-gameover-screen rpg-anim-fade-in\">\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-left\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-right\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-center\"></div>\n <div class=\"rpg-ui-gameover-header rpg-anim-shake\">\n <div class=\"rpg-ui-gameover-title\">{titleText()}</div>\n @if (subtitleText()) {\n <div class=\"rpg-ui-gameover-subtitle\">{subtitleText()}</div>\n }\n </div>\n <Navigation tabindex={selectedEntry} controls={controls}>\n <div class=\"rpg-ui-menu rpg-ui-gameover-menu rpg-anim-slide-up\">\n @for ((entry,index) of entryList()) {\n <div\n class=\"rpg-ui-menu-item\"\n class={{disabled: isEntryDisabled(entry)}}\n data-selected={selectedEntry() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={selectEntry(index)}\n >{entry.label}</div>\n }\n </div>\n </Navigation>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect } from \"canvasengine\";\n import { PrebuiltGui } from \"@rpgjs/common\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import { RpgGui } from \"../../Gui/Gui\";\n\n const engine = inject(RpgClientEngine);\n const guiService = inject(RpgGui);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const { entries, title, subtitle, saveLoad, localActions, onInteraction } = defineProps({\n entries: {\n default: () => []\n },\n saveLoad: {\n default: () => ({})\n },\n localActions: {\n default: false\n }\n });\n\n const defaultEntries = [\n { id: \"title\", label: \"Title Screen\" },\n { id: \"load\", label: \"Load Game\" }\n ];\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const titleText = computed(() => resolveProp(title) || \"Game Over\");\n const subtitleText = computed(() => resolveProp(subtitle) || \"\");\n const localActionsEnabled = computed(() => resolveProp(localActions) === true);\n\n const entryList = computed(() => {\n const list = resolveProp(entries);\n if (Array.isArray(list) && list.length) return list;\n return defaultEntries;\n });\n\n const isEntryDisabled = (entry) => {\n if (!entry) return true;\n if (entry.disabled) return true;\n if (entry.enabled === false) return true;\n return false;\n };\n\n const selectedEntry = signal(0);\n const selectableIndexes = computed(() => {\n const list = entryList();\n return list\n .map((entry, index) => (isEntryDisabled(entry) ? null : index))\n .filter((value) => value !== null);\n });\n\n effect(() => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n if (!available.includes(current)) {\n selectedEntry.set(available[0]);\n }\n });\n\n const moveSelection = (delta) => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n const currentIndex = Math.max(0, available.indexOf(current));\n const nextIndex = (currentIndex + delta + available.length) % available.length;\n selectedEntry.set(available[nextIndex]);\n };\n\n const triggerSelect = (index) => {\n const list = entryList();\n const entry = list[index];\n if (!entry || isEntryDisabled(entry)) return;\n if (localActionsEnabled()) {\n if (entry.id === \"title\") {\n guiService.hide(PrebuiltGui.Gameover);\n guiService.display(PrebuiltGui.TitleScreen);\n }\n if (entry.id === \"load\") {\n const config = resolveProp(saveLoad) || {};\n const slots = Array.isArray(config.slots) ? config.slots : [null, null, null];\n guiService.display(PrebuiltGui.Save, {\n ...config,\n mode: config.mode || \"load\",\n slots\n });\n }\n }\n if (onInteraction) {\n onInteraction(\"select\", { id: entry.id, index, entry });\n }\n };\n\n function selectEntry(index) {\n return function() {\n selectedEntry.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 moveSelection(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n moveSelection(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n triggerSelect(selectedEntry());\n }\n },\n gamepad: {\n enabled: true\n }\n });\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"gameover.ce.js","names":[],"sources":["../../../src/components/gui/gameover.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-gameover-screen rpg-anim-fade-in\">\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-left\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-right\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-center\"></div>\n <div class=\"rpg-ui-gameover-header rpg-anim-shake\">\n <div class=\"rpg-ui-gameover-title\">{titleText()}</div>\n @if (subtitleText()) {\n <div class=\"rpg-ui-gameover-subtitle\">{subtitleText()}</div>\n }\n </div>\n <Navigation tabindex={selectedEntry} controls={controls}>\n <div class=\"rpg-ui-menu rpg-ui-gameover-menu rpg-anim-slide-up\">\n @for ((entry,index) of entryList()) {\n <div\n class=\"rpg-ui-menu-item\"\n class={{disabled: isEntryDisabled(entry)}}\n data-selected={selectedEntry() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={selectEntry(index)}\n >{entry.label}</div>\n }\n </div>\n </Navigation>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect } from \"canvasengine\";\n import { PrebuiltGui } from \"@rpgjs/common\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import { RpgGui } from \"../../Gui/Gui\";\n\n const engine = inject(RpgClientEngine);\n const guiService = inject(RpgGui);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const { entries, title, subtitle, saveLoad, localActions, onInteraction } = defineProps({\n entries: {\n default: () => []\n },\n saveLoad: {\n default: () => ({})\n },\n localActions: {\n default: false\n }\n });\n\n const defaultEntries = [\n { id: \"title\", label: \"Title Screen\" },\n { id: \"load\", label: \"Load Game\" }\n ];\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const titleText = computed(() => resolveProp(title) || \"Game Over\");\n const subtitleText = computed(() => resolveProp(subtitle) || \"\");\n const localActionsEnabled = computed(() => resolveProp(localActions) === true);\n\n const entryList = computed(() => {\n const list = resolveProp(entries);\n if (Array.isArray(list) && list.length) return list;\n return defaultEntries;\n });\n\n const isEntryDisabled = (entry) => {\n if (!entry) return true;\n if (entry.disabled) return true;\n if (entry.enabled === false) return true;\n return false;\n };\n\n const selectedEntry = signal(0);\n const selectableIndexes = computed(() => {\n const list = entryList();\n return list\n .map((entry, index) => (isEntryDisabled(entry) ? null : index))\n .filter((value) => value !== null);\n });\n\n effect(() => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n if (!available.includes(current)) {\n selectedEntry.set(available[0]);\n }\n });\n\n const moveSelection = (delta) => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n const currentIndex = Math.max(0, available.indexOf(current));\n const nextIndex = (currentIndex + delta + available.length) % available.length;\n selectedEntry.set(available[nextIndex]);\n };\n\n const triggerSelect = (index) => {\n const list = entryList();\n const entry = list[index];\n if (!entry || isEntryDisabled(entry)) return;\n if (localActionsEnabled()) {\n if (entry.id === \"title\") {\n guiService.hide(PrebuiltGui.Gameover);\n guiService.display(PrebuiltGui.TitleScreen);\n }\n if (entry.id === \"load\") {\n const config = resolveProp(saveLoad) || {};\n const slots = Array.isArray(config.slots) ? config.slots : [null, null, null];\n guiService.display(PrebuiltGui.Save, {\n ...config,\n mode: config.mode || \"load\",\n slots\n });\n }\n }\n if (onInteraction) {\n onInteraction(\"select\", { id: entry.id, index, entry });\n }\n };\n\n function selectEntry(index) {\n return function() {\n selectedEntry.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 moveSelection(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n moveSelection(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n triggerSelect(selectedEntry());\n }\n },\n gamepad: {\n enabled: true\n }\n });\n</script>\n"],"mappings":"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"}
@@ -6,44 +6,34 @@ import { DOMContainer, DOMElement, DOMSprite, computed, cond, h, useDefineProps,
6
6
  function component($$props) {
7
7
  useProps($$props);
8
8
  const defineProps = useDefineProps($$props);
9
- var engine = inject(RpgClientEngine);
10
- var currentPlayer = engine.scene.currentPlayer;
11
- var data = defineProps().data;
12
- data().faceset;
13
- var resolveProp = function(value) {
14
- return typeof value === "function" ? value() : value;
15
- };
16
- var face = computed(function() {
17
- return resolveProp(data().faceset);
18
- });
19
- var hasFace = computed(function() {
20
- var value = face();
9
+ const engine = inject(RpgClientEngine);
10
+ const currentPlayer = engine.scene.currentPlayer;
11
+ const { data } = defineProps();
12
+ const { faceset } = data();
13
+ const resolveProp = (value) => typeof value === "function" ? value() : value;
14
+ const face = computed(() => resolveProp(data().faceset));
15
+ const hasFace = computed(() => {
16
+ const value = face();
21
17
  return !!(value && value.id);
22
18
  });
23
- var faceSheet = function(faceValue) {
24
- return {
25
- definition: engine.getSpriteSheet(faceValue.id),
26
- playing: faceValue.expression || "default"
27
- };
28
- };
29
- var hp = getEntityProp(currentPlayer, "hp");
30
- var hpMax = getEntityProp(currentPlayer, "params.maxHp");
31
- var percentHp = computed(function() {
32
- return hp() / hpMax() * 100 + "%";
33
- });
34
- var sp = getEntityProp(currentPlayer, "sp");
35
- var spMax = getEntityProp(currentPlayer, "params.maxSp");
36
- var percentSp = computed(function() {
37
- return sp() / spMax() * 100 + "%";
19
+ const faceSheet = (faceValue) => ({
20
+ definition: engine.getSpriteSheet(faceValue.id),
21
+ playing: faceValue.expression || "default"
38
22
  });
39
- var level = getEntityProp(currentPlayer, "level");
23
+ const hp = getEntityProp(currentPlayer, "hp");
24
+ const hpMax = getEntityProp(currentPlayer, "params.maxHp");
25
+ const percentHp = computed(() => hp() / hpMax() * 100 + "%");
26
+ const sp = getEntityProp(currentPlayer, "sp");
27
+ const spMax = getEntityProp(currentPlayer, "params.maxSp");
28
+ const percentSp = computed(() => sp() / spMax() * 100 + "%");
29
+ const level = getEntityProp(currentPlayer, "level");
40
30
  return h(DOMContainer, null, h(DOMElement, {
41
31
  element: "div",
42
32
  attrs: { class: "rpg-hud" }
43
33
  }, [h(DOMElement, {
44
34
  element: "div",
45
35
  attrs: { class: "rpg-avatar" }
46
- }, [cond(hasFace(), () => h(DOMElement, {
36
+ }, [cond(computed(() => hasFace()), () => h(DOMElement, {
47
37
  element: "div",
48
38
  attrs: { class: "rpg-avatar-face" }
49
39
  }, h(DOMSprite, {
@@ -86,7 +76,8 @@ function component($$props) {
86
76
  }
87
77
  })])])]));
88
78
  }
79
+ var __ce_component = component;
89
80
  //#endregion
90
- export { component as default };
81
+ export { __ce_component as default };
91
82
 
92
83
  //# sourceMappingURL=hud.ce.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hud.ce.js","names":[],"sources":["../../../../src/components/gui/hud/hud.ce"],"sourcesContent":["<DOMContainer>\n <div class=\"rpg-hud\">\n <div class=\"rpg-avatar\">\n @if (hasFace()) {\n <div class=\"rpg-avatar-face\">\n <DOMSprite \n sheet={faceSheet(face())} \n width={64} \n height={64} \n objectFit=\"contain\" \n />\n </div>\n }\n <div class=\"rpg-avatar-level\">{{ level() }}</div>\n </div>\n <div class=\"rpg-status-bars\">\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">HP {{ hp() }}/{{ hpMax() }}</span>\n <div class=\"rpg-bar-fill health\" style={{width: percentHp}}></div>\n </div>\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">SP {{ sp() }}/{{ spMax() }}</span>\n <div class=\"rpg-bar-fill mana\" style={{width: percentSp}}></div>\n </div>\n </div>\n </div>\n</DOMContainer>\n\n<script>\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n import { computed } from \"canvasengine\";\n import { getEntityProp } from \"../../../utils/getEntityProp\";\n\n const engine = inject(RpgClientEngine)\n const currentPlayer = engine.scene.currentPlayer\n const { data } = defineProps();\n const { faceset } = data();\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const face = computed(() => resolveProp(data().faceset));\n\n const hasFace = computed(() => {\n const value = face();\n return !!(value && value.id);\n });\n const faceSheet = (faceValue) => ({\n definition: engine.getSpriteSheet(faceValue.id),\n playing: faceValue.expression || \"default\",\n });\n const hp = getEntityProp(currentPlayer, \"hp\")\n const hpMax = getEntityProp(currentPlayer, \"params.maxHp\")\n const percentHp = computed(() => (hp() / hpMax() * 100) + '%')\n\n const sp = getEntityProp(currentPlayer, \"sp\")\n const spMax = getEntityProp(currentPlayer, \"params.maxSp\")\n const percentSp = computed(() => (sp() / spMax() * 100) + '%')\n\n const level = getEntityProp(currentPlayer, \"level\")\n</script>\n \n"],"mappings":";;;;;AAWM,SAAe,UAAA,SAAA;AACT,UAAA,QAAA;CACJ,MAAK,cAAe,eAAe,QAAQ;CAC3C,IAAE,SAAG,OAAA,gBAAA;CACb,IAAI,gBAAgB,OAAI,MAAO;CAC/B,IAAI,OAAO,aAAa,CAAA;AACV,OAAG,CAAI;CACrB,IAAI,cAAa,SAAW,OAAO;AAAC,SAAK,OAAQ,UAAQ,aAAiB,OAAO,GAAA;;CACjF,IAAI,OAAO,SAAM,WAAA;AAAA,SAAA,YAAA,MAAA,CAAA,QAAA;GAAA;CACjB,IAAI,UAAS,SAAU,WAAS;EAC5B,IAAI,QAAQ,MAAM;AAClB,SAAO,CAAC,EAAE,SAAO,MAAO;GAC1B;CACF,IAAI,YAAS,SAAA,WAAA;AAAA,SAAA;GACT,YAAK,OAAA,eAAA,UAAA,GAAA;GACP,SAAA,UAAY,cAAA;;;CAEd,IAAC,KAAM,cAAA,eAAA,KAAA;CACP,IAAI,QAAQ,cAAc,eAAe,eAAQ;CACjD,IAAI,YAAS,SAAA,WAAwB;AAAE,SAAO,IAAA,GAAA,OAAe,GAAC,MAAA;GAAA;CAC9D,IAAI,KAAA,cAAmB,eAAO,KAAa;CAC3C,IAAI,QAAQ,cAAc,eAAe,eAAS;;;;CAElD,IAAI,QAAM,cAAgB,eAAe,QAAA;AAErC,QADM,EAAA,cAAuB,MAAM,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,WAAA;EAAA,EAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,cAAA;EAAA,EAAA,CAAA,KAAA,SAAA,QAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,mBAAA;EAAA,EAAA,EAAA,WAAA;EAAA,OAAA,eAAA,UAAA,MAAA,CAAA,CAAA;EAAA,OAAA;EAAA,QAAA;EAAA,WAAA;EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,oBAAA;EAAA,aAAA,eAAA,OAAA,CAAA;EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,mBAAA;EAAA,EAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,qBAAA;EAAA,EAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,gBAAA;EAAA,aAAA,eAAA,QAAA,IAAA,GAAA,MAAA,OAAA,CAAA;EAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,OAAA,EAAA,OAAA,WAAA;GAAA;EAAA,CAAA,CAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,qBAAA;EAAA,EAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,gBAAA;EAAA,aAAA,eAAA,QAAA,IAAA,GAAA,MAAA,OAAA,CAAA;EAAA,CAAA,EAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,OAAA,EAAA,OAAA,WAAA;GAAA;EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"hud.ce.js","names":[],"sources":["../../../../src/components/gui/hud/hud.ce"],"sourcesContent":["<DOMContainer>\n <div class=\"rpg-hud\">\n <div class=\"rpg-avatar\">\n @if (hasFace()) {\n <div class=\"rpg-avatar-face\">\n <DOMSprite \n sheet={faceSheet(face())} \n width={64} \n height={64} \n objectFit=\"contain\" \n />\n </div>\n }\n <div class=\"rpg-avatar-level\">{{ level() }}</div>\n </div>\n <div class=\"rpg-status-bars\">\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">HP {{ hp() }}/{{ hpMax() }}</span>\n <div class=\"rpg-bar-fill health\" style={{width: percentHp}}></div>\n </div>\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">SP {{ sp() }}/{{ spMax() }}</span>\n <div class=\"rpg-bar-fill mana\" style={{width: percentSp}}></div>\n </div>\n </div>\n </div>\n</DOMContainer>\n\n<script>\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n import { computed } from \"canvasengine\";\n import { getEntityProp } from \"../../../utils/getEntityProp\";\n\n const engine = inject(RpgClientEngine)\n const currentPlayer = engine.scene.currentPlayer\n const { data } = defineProps();\n const { faceset } = data();\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const face = computed(() => resolveProp(data().faceset));\n\n const hasFace = computed(() => {\n const value = face();\n return !!(value && value.id);\n });\n const faceSheet = (faceValue) => ({\n definition: engine.getSpriteSheet(faceValue.id),\n playing: faceValue.expression || \"default\",\n });\n const hp = getEntityProp(currentPlayer, \"hp\")\n const hpMax = getEntityProp(currentPlayer, \"params.maxHp\")\n const percentHp = computed(() => (hp() / hpMax() * 100) + '%')\n\n const sp = getEntityProp(currentPlayer, \"sp\")\n const spMax = getEntityProp(currentPlayer, \"params.maxSp\")\n const percentSp = computed(() => (sp() / spMax() * 100) + '%')\n\n const level = getEntityProp(currentPlayer, \"level\")\n</script>\n \n"],"mappings":";;;;;AAWM,SAAS,UAAM,SAAA;CACT,SAAA,OAAA;CACJ,MAAK,cAAe,eAAe,OAAO;CAC1C,MAAK,SAAA,OAAA,eAAA;CACb,MAAM,gBAAc,OAAI,MAAW;CACnC,MAAM,EAAE,SAAS,YAAW;CAC5B,MAAM,EAAE,YAAS,KAAK;CACtB,MAAM,eAAe,UAAU,OAAK,UAAY,aAAS,MAAO,IAAA;CAChE,MAAM,OAAO,eAAI,YAAA,KAAA,EAAA,OAAA,CAAA;CACjB,MAAM,UAAU,eAAe;EAC3B,MAAM,QAAO,KAAK;EAClB,OAAO,CAAC,EAAE,SAAO,MAAO;CAC5B,CAAC;CACD,MAAM,aAAO,eAAA;EACT,YAAK,OAAA,eAAA,UAAA,EAAA;EACP,SAAA,UAAY,cAAA;;CAEd,MAAC,KAAM,cAAA,eAAA,IAAA;CACP,MAAI,QAAS,cAAe,eAAc,cAAO;CACjD,MAAI,YAAS,eAAkB,GAAM,IAAI,MAAK,IAAA,MAAA,GAAe;CAC7D,MAAI,KAAO,cAAa,eAAM,IAAa;CAC3C,MAAI,QAAS,cAAe,eAAe,cAAO;;CAElD,MAAI,QAAM,cAAgB,eAAe,OAAA;CAErC,OADM,EAAA,cAAuB,MAAM,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,UAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,aAAA;CAAA,GAAA,CAAA,KAAA,eAAA,QAAA,CAAA,SAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kBAAA;CAAA,GAAA,EAAA,WAAA;EAAA,OAAA,eAAA,UAAA,KAAA,CAAA,CAAA;EAAA,OAAA;EAAA,QAAA;EAAA,WAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,mBAAA;EAAA,aAAA,eAAA,MAAA,CAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,oBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,eAAA;EAAA,aAAA,eAAA,QAAA,GAAA,IAAA,MAAA,MAAA,CAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,OAAA,EAAA,OAAA,UAAA;EAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,oBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,eAAA;EAAA,aAAA,eAAA,QAAA,GAAA,IAAA,MAAA,MAAA,CAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,OAAA,EAAA,OAAA,UAAA;EAAA;CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACpB;AACf;AAEA,IAAM,iBAAA"}