@rpgjs/client 5.0.0-alpha.9 → 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 (347) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/LICENSE +19 -0
  3. package/dist/Game/AnimationManager.d.ts +8 -0
  4. package/dist/Game/AnimationManager.js +35 -0
  5. package/dist/Game/AnimationManager.js.map +1 -0
  6. package/dist/Game/AnimationManager.spec.d.ts +1 -0
  7. package/dist/Game/Event.d.ts +1 -1
  8. package/dist/Game/Event.js +12 -0
  9. package/dist/Game/Event.js.map +1 -0
  10. package/dist/Game/Map.d.ts +31 -2
  11. package/dist/Game/Map.js +138 -0
  12. package/dist/Game/Map.js.map +1 -0
  13. package/dist/Game/Object.d.ts +189 -0
  14. package/dist/Game/Object.js +255 -0
  15. package/dist/Game/Object.js.map +1 -0
  16. package/dist/Game/Player.d.ts +1 -1
  17. package/dist/Game/Player.js +12 -0
  18. package/dist/Game/Player.js.map +1 -0
  19. package/dist/Gui/Gui.d.ts +192 -7
  20. package/dist/Gui/Gui.js +475 -0
  21. package/dist/Gui/Gui.js.map +1 -0
  22. package/dist/Gui/Gui.spec.d.ts +1 -0
  23. package/dist/Gui/NotificationManager.d.ts +23 -0
  24. package/dist/Gui/NotificationManager.js +49 -0
  25. package/dist/Gui/NotificationManager.js.map +1 -0
  26. package/dist/Resource.d.ts +97 -0
  27. package/dist/Resource.js +133 -0
  28. package/dist/Resource.js.map +1 -0
  29. package/dist/RpgClient.d.ts +295 -13
  30. package/dist/RpgClientEngine.d.ts +671 -15
  31. package/dist/RpgClientEngine.js +1442 -0
  32. package/dist/RpgClientEngine.js.map +1 -0
  33. package/dist/Sound.d.ts +199 -0
  34. package/dist/Sound.js +167 -0
  35. package/dist/Sound.js.map +1 -0
  36. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/decorate.js +9 -0
  37. package/dist/_virtual/_@oxc-project_runtime@0.130.0/helpers/decorateMetadata.js +6 -0
  38. package/dist/components/animations/animation.ce.js +23 -0
  39. package/dist/components/animations/animation.ce.js.map +1 -0
  40. package/dist/components/animations/hit.ce.js +64 -0
  41. package/dist/components/animations/hit.ce.js.map +1 -0
  42. package/dist/components/animations/index.d.ts +4 -0
  43. package/dist/components/animations/index.js +11 -0
  44. package/dist/components/animations/index.js.map +1 -0
  45. package/dist/components/character.ce.js +572 -0
  46. package/dist/components/character.ce.js.map +1 -0
  47. package/dist/components/dynamics/bar.ce.js +96 -0
  48. package/dist/components/dynamics/bar.ce.js.map +1 -0
  49. package/dist/components/dynamics/image.ce.js +23 -0
  50. package/dist/components/dynamics/image.ce.js.map +1 -0
  51. package/dist/components/dynamics/parse-value.d.ts +4 -0
  52. package/dist/components/dynamics/parse-value.js +63 -0
  53. package/dist/components/dynamics/parse-value.js.map +1 -0
  54. package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
  55. package/dist/components/dynamics/shape-utils.d.ts +16 -0
  56. package/dist/components/dynamics/shape-utils.js +73 -0
  57. package/dist/components/dynamics/shape-utils.js.map +1 -0
  58. package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
  59. package/dist/components/dynamics/shape.ce.js +83 -0
  60. package/dist/components/dynamics/shape.ce.js.map +1 -0
  61. package/dist/components/dynamics/text.ce.js +50 -0
  62. package/dist/components/dynamics/text.ce.js.map +1 -0
  63. package/dist/components/gui/box.ce.js +26 -0
  64. package/dist/components/gui/box.ce.js.map +1 -0
  65. package/dist/components/gui/dialogbox/index.ce.js +198 -0
  66. package/dist/components/gui/dialogbox/index.ce.js.map +1 -0
  67. package/dist/components/gui/gameover.ce.js +169 -0
  68. package/dist/components/gui/gameover.ce.js.map +1 -0
  69. package/dist/components/gui/hud/hud.ce.js +83 -0
  70. package/dist/components/gui/hud/hud.ce.js.map +1 -0
  71. package/dist/components/gui/index.d.ts +15 -3
  72. package/dist/components/gui/index.js +14 -0
  73. package/dist/components/gui/menu/equip-menu.ce.js +427 -0
  74. package/dist/components/gui/menu/equip-menu.ce.js.map +1 -0
  75. package/dist/components/gui/menu/exit-menu.ce.js +55 -0
  76. package/dist/components/gui/menu/exit-menu.ce.js.map +1 -0
  77. package/dist/components/gui/menu/items-menu.ce.js +326 -0
  78. package/dist/components/gui/menu/items-menu.ce.js.map +1 -0
  79. package/dist/components/gui/menu/main-menu.ce.js +399 -0
  80. package/dist/components/gui/menu/main-menu.ce.js.map +1 -0
  81. package/dist/components/gui/menu/options-menu.ce.js +49 -0
  82. package/dist/components/gui/menu/options-menu.ce.js.map +1 -0
  83. package/dist/components/gui/menu/skills-menu.ce.js +102 -0
  84. package/dist/components/gui/menu/skills-menu.ce.js.map +1 -0
  85. package/dist/components/gui/mobile/index.d.ts +8 -0
  86. package/dist/components/gui/mobile/index.js +21 -0
  87. package/dist/components/gui/mobile/index.js.map +1 -0
  88. package/dist/components/gui/mobile/mobile.ce.js +79 -0
  89. package/dist/components/gui/mobile/mobile.ce.js.map +1 -0
  90. package/dist/components/gui/notification/notification.ce.js +62 -0
  91. package/dist/components/gui/notification/notification.ce.js.map +1 -0
  92. package/dist/components/gui/save-load.ce.js +211 -0
  93. package/dist/components/gui/save-load.ce.js.map +1 -0
  94. package/dist/components/gui/shop/shop.ce.js +614 -0
  95. package/dist/components/gui/shop/shop.ce.js.map +1 -0
  96. package/dist/components/gui/title-screen.ce.js +164 -0
  97. package/dist/components/gui/title-screen.ce.js.map +1 -0
  98. package/dist/components/index.d.ts +1 -0
  99. package/dist/components/index.js +4 -0
  100. package/dist/components/player-components-utils.d.ts +67 -0
  101. package/dist/components/player-components-utils.js +162 -0
  102. package/dist/components/player-components-utils.js.map +1 -0
  103. package/dist/components/player-components-utils.spec.d.ts +1 -0
  104. package/dist/components/player-components.ce.js +188 -0
  105. package/dist/components/player-components.ce.js.map +1 -0
  106. package/dist/components/prebuilt/hp-bar.ce.js +113 -0
  107. package/dist/components/prebuilt/hp-bar.ce.js.map +1 -0
  108. package/dist/components/prebuilt/index.d.ts +19 -0
  109. package/dist/components/prebuilt/index.js +2 -0
  110. package/dist/components/prebuilt/light-halo.ce.js +70 -0
  111. package/dist/components/prebuilt/light-halo.ce.js.map +1 -0
  112. package/dist/components/scenes/canvas.ce.js +196 -0
  113. package/dist/components/scenes/canvas.ce.js.map +1 -0
  114. package/dist/components/scenes/draw-map.ce.js +79 -0
  115. package/dist/components/scenes/draw-map.ce.js.map +1 -0
  116. package/dist/components/scenes/event-layer.ce.js +29 -0
  117. package/dist/components/scenes/event-layer.ce.js.map +1 -0
  118. package/dist/core/inject.js +18 -0
  119. package/dist/core/inject.js.map +1 -0
  120. package/dist/core/setup.js +16 -0
  121. package/dist/core/setup.js.map +1 -0
  122. package/dist/decorators/spritesheet.d.ts +1 -0
  123. package/dist/decorators/spritesheet.js +11 -0
  124. package/dist/decorators/spritesheet.js.map +1 -0
  125. package/dist/index.d.ts +16 -1
  126. package/dist/index.js +45 -14
  127. package/dist/module.d.ts +43 -4
  128. package/dist/module.js +179 -0
  129. package/dist/module.js.map +1 -0
  130. package/dist/node_modules/.pnpm/@signe_di@3.0.1/node_modules/@signe/di/dist/index.js +167 -0
  131. package/dist/node_modules/.pnpm/@signe_di@3.0.1/node_modules/@signe/di/dist/index.js.map +1 -0
  132. package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js +239 -0
  133. package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js.map +1 -0
  134. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
  135. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
  136. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js +696 -0
  137. package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js.map +1 -0
  138. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js +44 -0
  139. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js.map +1 -0
  140. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/index.js +241 -0
  141. package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/index.js.map +1 -0
  142. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js +115 -0
  143. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -0
  144. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js +401 -0
  145. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -0
  146. package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/index.js +2 -0
  147. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js +3756 -0
  148. package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -0
  149. package/dist/presets/animation.d.ts +31 -0
  150. package/dist/presets/animation.js +39 -0
  151. package/dist/presets/animation.js.map +1 -0
  152. package/dist/presets/faceset.d.ts +30 -0
  153. package/dist/presets/faceset.js +51 -0
  154. package/dist/presets/faceset.js.map +1 -0
  155. package/dist/presets/icon.d.ts +20 -0
  156. package/dist/presets/icon.js +15 -0
  157. package/dist/presets/icon.js.map +1 -0
  158. package/dist/presets/index.d.ts +123 -0
  159. package/dist/presets/index.js +17 -0
  160. package/dist/presets/index.js.map +1 -0
  161. package/dist/presets/lpc.d.ts +89 -0
  162. package/dist/presets/lpc.js +98 -0
  163. package/dist/presets/lpc.js.map +1 -0
  164. package/dist/presets/rmspritesheet.js +42 -0
  165. package/dist/presets/rmspritesheet.js.map +1 -0
  166. package/dist/services/AbstractSocket.d.ts +9 -5
  167. package/dist/services/AbstractSocket.js +11 -0
  168. package/dist/services/AbstractSocket.js.map +1 -0
  169. package/dist/services/keyboardControls.d.ts +15 -0
  170. package/dist/services/keyboardControls.js +23 -0
  171. package/dist/services/keyboardControls.js.map +1 -0
  172. package/dist/services/loadMap.d.ts +6 -0
  173. package/dist/services/loadMap.js +123 -0
  174. package/dist/services/loadMap.js.map +1 -0
  175. package/dist/services/mmorpg.d.ts +21 -9
  176. package/dist/services/mmorpg.js +136 -0
  177. package/dist/services/mmorpg.js.map +1 -0
  178. package/dist/services/save.d.ts +19 -0
  179. package/dist/services/save.js +77 -0
  180. package/dist/services/save.js.map +1 -0
  181. package/dist/services/save.spec.d.ts +1 -0
  182. package/dist/services/standalone.d.ts +67 -7
  183. package/dist/services/standalone.js +168 -0
  184. package/dist/services/standalone.js.map +1 -0
  185. package/dist/utils/getEntityProp.d.ts +39 -0
  186. package/dist/utils/getEntityProp.js +53 -0
  187. package/dist/utils/getEntityProp.js.map +1 -0
  188. package/dist/utils/getEntityProp.spec.d.ts +1 -0
  189. package/dist/utils/readPropValue.d.ts +2 -0
  190. package/dist/utils/readPropValue.js +13 -0
  191. package/dist/utils/readPropValue.js.map +1 -0
  192. package/package.json +14 -11
  193. package/src/Game/AnimationManager.spec.ts +30 -0
  194. package/src/Game/AnimationManager.ts +33 -0
  195. package/src/Game/Event.ts +1 -1
  196. package/src/Game/Map.ts +184 -3
  197. package/src/Game/Object.ts +409 -14
  198. package/src/Game/Player.ts +1 -1
  199. package/src/Gui/Gui.spec.ts +273 -0
  200. package/src/Gui/Gui.ts +566 -23
  201. package/src/Gui/NotificationManager.ts +69 -0
  202. package/src/Resource.ts +149 -0
  203. package/src/RpgClient.ts +309 -14
  204. package/src/RpgClientEngine.ts +1790 -63
  205. package/src/Sound.ts +253 -0
  206. package/src/components/{effects → animations}/animation.ce +3 -6
  207. package/src/components/{effects → animations}/index.ts +1 -1
  208. package/src/components/character.ce +801 -59
  209. package/src/components/dynamics/bar.ce +87 -0
  210. package/src/components/dynamics/image.ce +20 -0
  211. package/src/components/dynamics/parse-value.spec.ts +83 -0
  212. package/src/components/dynamics/parse-value.ts +154 -0
  213. package/src/components/dynamics/shape-utils.spec.ts +46 -0
  214. package/src/components/dynamics/shape-utils.ts +61 -0
  215. package/src/components/dynamics/shape.ce +89 -0
  216. package/src/components/dynamics/text.ce +68 -0
  217. package/src/components/gui/box.ce +17 -0
  218. package/src/components/gui/dialogbox/index.ce +213 -187
  219. package/src/components/gui/gameover.ce +158 -0
  220. package/src/components/gui/hud/hud.ce +61 -0
  221. package/src/components/gui/index.ts +30 -4
  222. package/src/components/gui/menu/equip-menu.ce +410 -0
  223. package/src/components/gui/menu/exit-menu.ce +41 -0
  224. package/src/components/gui/menu/items-menu.ce +317 -0
  225. package/src/components/gui/menu/main-menu.ce +294 -0
  226. package/src/components/gui/menu/options-menu.ce +35 -0
  227. package/src/components/gui/menu/skills-menu.ce +83 -0
  228. package/src/components/gui/mobile/index.ts +24 -0
  229. package/src/components/gui/mobile/mobile.ce +80 -0
  230. package/src/components/gui/notification/notification.ce +51 -0
  231. package/src/components/gui/save-load.ce +208 -0
  232. package/src/components/gui/shop/shop.ce +493 -0
  233. package/src/components/gui/title-screen.ce +163 -0
  234. package/src/components/index.ts +3 -0
  235. package/src/components/player-components-utils.spec.ts +109 -0
  236. package/src/components/player-components-utils.ts +205 -0
  237. package/src/components/player-components.ce +221 -0
  238. package/src/components/prebuilt/hp-bar.ce +255 -0
  239. package/src/components/prebuilt/index.ts +24 -0
  240. package/src/components/prebuilt/light-halo.ce +148 -0
  241. package/src/components/scenes/canvas.ce +185 -21
  242. package/src/components/scenes/draw-map.ce +55 -21
  243. package/src/components/scenes/event-layer.ce +8 -2
  244. package/src/components/scenes/transition.ce +60 -0
  245. package/src/core/setup.ts +2 -2
  246. package/src/decorators/spritesheet.ts +8 -0
  247. package/src/index.ts +17 -2
  248. package/src/module.ts +132 -10
  249. package/src/presets/animation.ts +46 -0
  250. package/src/presets/faceset.ts +60 -0
  251. package/src/presets/icon.ts +17 -0
  252. package/src/presets/index.ts +9 -1
  253. package/src/presets/lpc.ts +108 -0
  254. package/src/services/AbstractSocket.ts +10 -2
  255. package/src/services/keyboardControls.ts +20 -0
  256. package/src/services/loadMap.ts +3 -1
  257. package/src/services/mmorpg.ts +106 -12
  258. package/src/services/save.spec.ts +127 -0
  259. package/src/services/save.ts +103 -0
  260. package/src/services/standalone.ts +110 -18
  261. package/src/utils/getEntityProp.spec.ts +96 -0
  262. package/src/utils/getEntityProp.ts +88 -0
  263. package/src/utils/readPropValue.ts +16 -0
  264. package/vite.config.ts +4 -2
  265. package/dist/Game/EffectManager.d.ts +0 -5
  266. package/dist/components/effects/index.d.ts +0 -4
  267. package/dist/index.js.map +0 -1
  268. package/dist/index10.js +0 -8
  269. package/dist/index10.js.map +0 -1
  270. package/dist/index11.js +0 -10
  271. package/dist/index11.js.map +0 -1
  272. package/dist/index12.js +0 -8
  273. package/dist/index12.js.map +0 -1
  274. package/dist/index13.js +0 -17
  275. package/dist/index13.js.map +0 -1
  276. package/dist/index14.js +0 -107
  277. package/dist/index14.js.map +0 -1
  278. package/dist/index15.js +0 -50
  279. package/dist/index15.js.map +0 -1
  280. package/dist/index16.js +0 -191
  281. package/dist/index16.js.map +0 -1
  282. package/dist/index17.js +0 -9
  283. package/dist/index17.js.map +0 -1
  284. package/dist/index18.js +0 -387
  285. package/dist/index18.js.map +0 -1
  286. package/dist/index19.js +0 -31
  287. package/dist/index19.js.map +0 -1
  288. package/dist/index2.js +0 -181
  289. package/dist/index2.js.map +0 -1
  290. package/dist/index20.js +0 -24
  291. package/dist/index20.js.map +0 -1
  292. package/dist/index21.js +0 -2421
  293. package/dist/index21.js.map +0 -1
  294. package/dist/index22.js +0 -114
  295. package/dist/index22.js.map +0 -1
  296. package/dist/index23.js +0 -109
  297. package/dist/index23.js.map +0 -1
  298. package/dist/index24.js +0 -71
  299. package/dist/index24.js.map +0 -1
  300. package/dist/index25.js +0 -21
  301. package/dist/index25.js.map +0 -1
  302. package/dist/index26.js +0 -41
  303. package/dist/index26.js.map +0 -1
  304. package/dist/index27.js +0 -5
  305. package/dist/index27.js.map +0 -1
  306. package/dist/index28.js +0 -322
  307. package/dist/index28.js.map +0 -1
  308. package/dist/index29.js +0 -27
  309. package/dist/index29.js.map +0 -1
  310. package/dist/index3.js +0 -87
  311. package/dist/index3.js.map +0 -1
  312. package/dist/index30.js +0 -11
  313. package/dist/index30.js.map +0 -1
  314. package/dist/index31.js +0 -11
  315. package/dist/index31.js.map +0 -1
  316. package/dist/index32.js +0 -174
  317. package/dist/index32.js.map +0 -1
  318. package/dist/index33.js +0 -501
  319. package/dist/index33.js.map +0 -1
  320. package/dist/index34.js +0 -12
  321. package/dist/index34.js.map +0 -1
  322. package/dist/index35.js +0 -4403
  323. package/dist/index35.js.map +0 -1
  324. package/dist/index36.js +0 -316
  325. package/dist/index36.js.map +0 -1
  326. package/dist/index37.js +0 -61
  327. package/dist/index37.js.map +0 -1
  328. package/dist/index38.js +0 -20
  329. package/dist/index38.js.map +0 -1
  330. package/dist/index39.js +0 -20
  331. package/dist/index39.js.map +0 -1
  332. package/dist/index4.js +0 -67
  333. package/dist/index4.js.map +0 -1
  334. package/dist/index5.js +0 -16
  335. package/dist/index5.js.map +0 -1
  336. package/dist/index6.js +0 -17
  337. package/dist/index6.js.map +0 -1
  338. package/dist/index7.js +0 -39
  339. package/dist/index7.js.map +0 -1
  340. package/dist/index8.js +0 -108
  341. package/dist/index8.js.map +0 -1
  342. package/dist/index9.js +0 -76
  343. package/dist/index9.js.map +0 -1
  344. package/src/Game/EffectManager.ts +0 -20
  345. package/src/components/gui/dialogbox/itemMenu.ce +0 -23
  346. package/src/components/gui/dialogbox/selection.ce +0 -67
  347. /package/src/components/{effects → animations}/hit.ce +0 -0
@@ -0,0 +1,96 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { signal } from "canvasengine";
3
+ import { getEntityProp } from "./getEntityProp";
4
+
5
+ const createEntity = () => {
6
+ const name = signal("Alex");
7
+
8
+ return {
9
+ _level: signal(5),
10
+ _exp: signal(120),
11
+ _gold: signal(30),
12
+ hpSignal: signal(80),
13
+ spSignal: signal(12),
14
+ type: signal("player"),
15
+ x: signal(10),
16
+ y: signal(20),
17
+ z: signal(0),
18
+ tint: signal(0xffffff),
19
+ direction: signal(2),
20
+ hitbox: signal({ w: 32, h: 48 }),
21
+ animationName: signal("idle"),
22
+ graphics: signal(["hero"]),
23
+ items: signal([{ id: "potion" }]),
24
+ equipments: signal([]),
25
+ states: signal([]),
26
+ skills: signal([]),
27
+ _effects: signal([]),
28
+ componentsTop: signal(["nameplate"]),
29
+ componentsBottom: signal([]),
30
+ componentsCenter: signal([]),
31
+ componentsLeft: signal([]),
32
+ componentsRight: signal([]),
33
+ _param: signal({ maxHp: 100, custom: 7 }),
34
+ _canMove: signal(true),
35
+ get name() {
36
+ return name();
37
+ },
38
+ set name(value: string) {
39
+ name.set(value);
40
+ },
41
+ get speed() {
42
+ return 4;
43
+ },
44
+ get canMove() {
45
+ return true;
46
+ },
47
+ } as any;
48
+ };
49
+
50
+ describe("getEntityProp", () => {
51
+ test("returns undefined until a reactive entity becomes available", () => {
52
+ const entity = signal<any>(undefined);
53
+ const hp = getEntityProp(entity, "hp");
54
+ const maxHp = getEntityProp(entity, "params.maxHp");
55
+
56
+ expect(hp()).toBeUndefined();
57
+ expect(maxHp()).toBeUndefined();
58
+
59
+ const current = createEntity();
60
+ entity.set(current);
61
+
62
+ expect(hp()).toBe(80);
63
+ expect(maxHp()).toBe(100);
64
+
65
+ const next = createEntity();
66
+ next.hpSignal.set(42);
67
+ next._param.set({ maxHp: 90 });
68
+ entity.set(next);
69
+
70
+ expect(hp()).toBe(42);
71
+ expect(maxHp()).toBe(90);
72
+ });
73
+
74
+ test("reads built-in, param and unknown keys without throwing", () => {
75
+ const entity = createEntity();
76
+
77
+ expect(getEntityProp(entity, "name")()).toBe("Alex");
78
+ expect(getEntityProp(entity, "componentsTop")()).toEqual(["nameplate"]);
79
+ expect(getEntityProp(entity, "params.custom")()).toBe(7);
80
+ expect(getEntityProp(entity, "params.missing")()).toBeUndefined();
81
+ expect(getEntityProp(entity, "unknown" as any)()).toBeUndefined();
82
+ });
83
+
84
+ test("reads canMove from the synced value when available", () => {
85
+ const entity = createEntity();
86
+ const canMove = getEntityProp(entity, "canMove");
87
+
88
+ expect(canMove()).toBe(true);
89
+
90
+ entity._canMove.set(false);
91
+ expect(canMove()).toBe(false);
92
+
93
+ entity._canMove.set({ value: true } as any);
94
+ expect(canMove()).toBe(true);
95
+ });
96
+ });
@@ -0,0 +1,88 @@
1
+ import { computed, Signal } from "canvasengine";
2
+ import { RpgClientObject } from "../Game/Object";
3
+ import { readPropValue } from "./readPropValue";
4
+
5
+ const BUILTIN_PARAM_KEYS = [
6
+ "maxHp",
7
+ "maxSp",
8
+ "atk",
9
+ "pdef",
10
+ "sdef",
11
+ "str",
12
+ "agi",
13
+ "int",
14
+ "dex",
15
+ ] as const;
16
+
17
+ type BuiltInParamKey = typeof BUILTIN_PARAM_KEYS[number];
18
+ type ParamPropKey = `params.${BuiltInParamKey}` | `params.${string}`;
19
+
20
+ const entityPropMap = {
21
+ level: (entity: RpgClientObject) => entity._level(),
22
+ exp: (entity: RpgClientObject) => entity._exp(),
23
+ gold: (entity: RpgClientObject) => entity._gold(),
24
+ hp: (entity: RpgClientObject) => entity.hpSignal(),
25
+ sp: (entity: RpgClientObject) => entity.spSignal(),
26
+ name: (entity: RpgClientObject) => entity.name,
27
+ type: (entity: RpgClientObject) => entity.type(),
28
+ x: (entity: RpgClientObject) => entity.x(),
29
+ y: (entity: RpgClientObject) => entity.y(),
30
+ z: (entity: RpgClientObject) => entity.z(),
31
+ tint: (entity: RpgClientObject) => entity.tint(),
32
+ direction: (entity: RpgClientObject) => entity.direction(),
33
+ speed: (entity: RpgClientObject) => entity.speed,
34
+ hitbox: (entity: RpgClientObject) => entity.hitbox(),
35
+ animation: (entity: RpgClientObject) => entity.animationName(),
36
+ canMove: (entity: RpgClientObject) => readPropValue<boolean>((entity as any)._canMove ?? entity.canMove),
37
+ graphics: (entity: RpgClientObject) => entity.graphics(),
38
+ items: (entity: RpgClientObject) => entity.items(),
39
+ equipments: (entity: RpgClientObject) => entity.equipments(),
40
+ states: (entity: RpgClientObject) => entity.states(),
41
+ skills: (entity: RpgClientObject) => entity.skills(),
42
+ effects: (entity: RpgClientObject) => entity._effects(),
43
+ componentsTop: (entity: RpgClientObject) => entity.componentsTop(),
44
+ componentsBottom: (entity: RpgClientObject) => entity.componentsBottom(),
45
+ componentsCenter: (entity: RpgClientObject) => entity.componentsCenter(),
46
+ componentsLeft: (entity: RpgClientObject) => entity.componentsLeft(),
47
+ componentsRight: (entity: RpgClientObject) => entity.componentsRight(),
48
+ } as const;
49
+
50
+ type EntityPropMap = typeof entityPropMap;
51
+ type EntityPropKey = keyof EntityPropMap | ParamPropKey;
52
+ type EntityPropValue<K extends EntityPropKey> = K extends keyof EntityPropMap
53
+ ? ReturnType<EntityPropMap[K]>
54
+ : K extends `params.${string}`
55
+ ? number | undefined
56
+ : never;
57
+
58
+ const isSignal = <T>(value: unknown): value is Signal<T> =>
59
+ typeof value === "function";
60
+
61
+ const toSignal = <T>(value: Signal<T> | T): Signal<T> =>
62
+ isSignal<T>(value) ? value : computed(() => value);
63
+
64
+ export const getEntityProp = <K extends EntityPropKey>(
65
+ entity: Signal<RpgClientObject | undefined> | RpgClientObject | undefined,
66
+ key: K
67
+ ): Signal<EntityPropValue<K>> => {
68
+ const entitySignal = toSignal(entity);
69
+
70
+ return computed(() => {
71
+ const current = entitySignal();
72
+ if (!current) {
73
+ return undefined as EntityPropValue<K>;
74
+ }
75
+
76
+ if (Object.prototype.hasOwnProperty.call(entityPropMap, key)) {
77
+ const getter = entityPropMap[key as keyof EntityPropMap];
78
+ return getter(current) as EntityPropValue<K>;
79
+ }
80
+
81
+ if (key.startsWith("params.")) {
82
+ const paramKey = key.slice("params.".length);
83
+ return current._param?.()?.[paramKey] as EntityPropValue<K>;
84
+ }
85
+
86
+ return undefined as EntityPropValue<K>;
87
+ });
88
+ };
@@ -0,0 +1,16 @@
1
+ export const readPropValue = <T = unknown>(value: unknown): T => {
2
+ if (typeof value === "function") {
3
+ return readPropValue((value as () => unknown)());
4
+ }
5
+
6
+ if (value && typeof value === "object" && "value" in value) {
7
+ return readPropValue((value as { value: unknown }).value);
8
+ }
9
+
10
+ return value as T;
11
+ };
12
+
13
+ export const getCanMoveValue = (entity: any): boolean => {
14
+ const value = readPropValue(entity?._canMove ?? entity?.canMove);
15
+ return value !== false;
16
+ };
package/vite.config.ts CHANGED
@@ -19,9 +19,11 @@ export default defineConfig({
19
19
  sourcemap: true,
20
20
  minify: false,
21
21
  lib: {
22
- entry: 'src/index.ts',
22
+ entry: {
23
+ index: 'src/index.ts'
24
+ },
23
25
  formats: ['es'],
24
- fileName: 'index'
26
+ fileName: (format, entryName) => `${entryName}.js`
25
27
  },
26
28
  rollupOptions: {
27
29
  external: [/@rpgjs/, 'esbuild', 'canvasengine', '@canvasengine/presets', 'rxjs', 'pixi.js'],
@@ -1,5 +0,0 @@
1
- import { RpgCommonPlayer } from '@rpgjs/common';
2
- export declare class EffectManager {
3
- current: import('canvasengine').WritableArraySignal<any[]>;
4
- displayEffect(params: any, player: RpgCommonPlayer): void;
5
- }
@@ -1,4 +0,0 @@
1
- export declare const PrebuiltEffects: {
2
- Hit: any;
3
- Animation: any;
4
- };
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
package/dist/index10.js DELETED
@@ -1,8 +0,0 @@
1
- import component from './index23.js';
2
-
3
- const PrebuiltGui = {
4
- Dialogbox: component
5
- };
6
-
7
- export { PrebuiltGui };
8
- //# sourceMappingURL=index10.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index10.js","sources":["../src/components/gui/index.ts"],"sourcesContent":["import Dialogbox from \"./dialogbox/index.ce\";\n\nexport const PrebuiltGui = {\n Dialogbox\n}"],"names":["Dialogbox"],"mappings":";;AAEO,MAAM,WAAc,GAAA;AAAA,aACvBA;AACJ;;;;"}
package/dist/index11.js DELETED
@@ -1,10 +0,0 @@
1
- import component$1 from './index24.js';
2
- import component from './index25.js';
3
-
4
- const PrebuiltEffects = {
5
- Hit: component$1,
6
- Animation: component
7
- };
8
-
9
- export { PrebuiltEffects };
10
- //# sourceMappingURL=index11.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index11.js","sources":["../src/components/effects/index.ts"],"sourcesContent":["import Hit from \"./hit.ce\";\nimport Animation from \"./animation.ce\";\n\nexport const PrebuiltEffects = {\n Hit,\n Animation\n}"],"names":["Hit","Animation"],"mappings":";;;AAGO,MAAM,eAAkB,GAAA;AAAA,OAC3BA,WAAA;AAAA,aACAC;AACJ;;;;"}
package/dist/index12.js DELETED
@@ -1,8 +0,0 @@
1
- import { RMSpritesheet } from './index26.js';
2
-
3
- const Presets = {
4
- RMSpritesheet
5
- };
6
-
7
- export { Presets };
8
- //# sourceMappingURL=index12.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index12.js","sources":["../src/presets/index.ts"],"sourcesContent":["import { RMSpritesheet } from \"./rmspritesheet\";\n\nexport const Presets = {\n RMSpritesheet\n}"],"names":[],"mappings":";;AAEO,MAAM,OAAU,GAAA;AAAA,EACnB;AACJ;;;;"}
package/dist/index13.js DELETED
@@ -1,17 +0,0 @@
1
- import { useProps, useDefineProps, h, Container, loop } from 'canvasengine';
2
- import { inject } from './index6.js';
3
- import { RpgClientEngine } from './index2.js';
4
- import component$1 from './index14.js';
5
-
6
- function component($$props) {
7
- useProps($$props);
8
- useDefineProps($$props);
9
- var engine = inject(RpgClientEngine);
10
- var players = engine.sceneMap.players;
11
- var events = engine.sceneMap.events;
12
- let $this = h(Container, { sortableChildren: true }, [loop(events, (event, id) => h(component$1, { id: id, object: event })), loop(players, (player, id) => h(component$1, { id: id, object: player }))]);
13
- return $this
14
- }
15
-
16
- export { component as default };
17
- //# sourceMappingURL=index13.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index13.js","sources":["../src/components/scenes/event-layer.ce"],"sourcesContent":["<Container sortableChildren={true}>\n @for ((event,id) of events) {\n <Character id={id} object={event} />\n }\n\n @for ((player,id) of players) {\n <Character id={id} object={player} />\n }\n</Container>\n\n<script>\n import { effect, signal } from 'canvasengine'\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import Character from \"../character.ce\";\n \n const engine = inject(RpgClientEngine);\n const players = engine.sceneMap.players\n const events = engine.sceneMap.events\n</script>"],"names":["Character"],"mappings":";;;;;AAQqB,SAAS,SAAS,CAAC,OAAO,EAAE;AACjD,QAAuB,QAAQ,CAAC,OAAO;AACvC,QAA4B,cAAc,CAAC,OAAO;AAClD,QAAQ,IAAI,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;AAC5C,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO;AACrC,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC7B,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAACA,WAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAACA,WAAS,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5M,QAAQ,OAAO;AACf;;;;"}
package/dist/index14.js DELETED
@@ -1,107 +0,0 @@
1
- import { useProps, useDefineProps, computed, signal, mount, tick, h, Container, loop, Sprite } from 'canvasengine';
2
- import { Particle } from '@canvasengine/presets';
3
- import { Direction, ModulesToken } from '@rpgjs/common';
4
- import { RpgClientEngine } from './index2.js';
5
- import { inject } from './index6.js';
6
-
7
- function component($$props) {
8
- useProps($$props);
9
- const defineProps = useDefineProps($$props);
10
- var _a = defineProps(), object = _a.object, id = _a.id;
11
- var client = inject(RpgClientEngine);
12
- var hooks = inject(ModulesToken);
13
- var spritesheets = client.spritesheets;
14
- var playerId = client.playerId;
15
- var componentsBehind = client.spriteComponentsBehind;
16
- var componentsInFront = client.spriteComponentsInFront;
17
- var isMe = computed(function () { return id() === playerId; });
18
- var x = object.x;
19
- var y = object.y;
20
- var tint = object.tint;
21
- var direction = object.direction;
22
- var animationName = object.animationName;
23
- var emitParticleTrigger = object.emitParticleTrigger;
24
- var particleSettings = client.particleSettings;
25
- var particleName = object.particleName;
26
- var graphics = object.graphics;
27
- var hitbox = object.hitbox;
28
- var widthShadow = 10;
29
- computed(function () { return ({
30
- x: hitbox().w / 2,
31
- y: hitbox().h - (hitbox().h / 2),
32
- width: hitbox().w + widthShadow,
33
- height: hitbox().h,
34
- }); });
35
- var canControls = function () { return isMe() && object.canMove(); };
36
- var keyboardControls = client.globalConfig.keyboardControls;
37
- var controls = signal({
38
- down: {
39
- repeat: true,
40
- bind: keyboardControls.down,
41
- keyDown: function () {
42
- if (canControls())
43
- client.processInput({ input: Direction.Down });
44
- },
45
- },
46
- up: {
47
- repeat: true,
48
- bind: keyboardControls.up,
49
- keyDown: function () {
50
- if (canControls())
51
- client.processInput({ input: Direction.Up });
52
- },
53
- },
54
- left: {
55
- repeat: true,
56
- bind: keyboardControls.left,
57
- keyDown: function () {
58
- if (canControls())
59
- client.processInput({ input: Direction.Left });
60
- },
61
- },
62
- right: {
63
- repeat: true,
64
- bind: keyboardControls.right,
65
- keyDown: function () {
66
- if (canControls())
67
- client.processInput({ input: Direction.Right });
68
- },
69
- },
70
- action: {
71
- bind: keyboardControls.action,
72
- keyDown: function () {
73
- if (canControls()) {
74
- client.processAction({ action: 'action' });
75
- // particleName.set('hit')
76
- // emitParticleTrigger.start()
77
- // object.flash('red')
78
- }
79
- },
80
- },
81
- });
82
- var sheet = function (graphicId) {
83
- return {
84
- definition: spritesheets.get(graphicId),
85
- playing: animationName,
86
- params: {
87
- direction: direction
88
- },
89
- };
90
- };
91
- mount(function (element) {
92
- hooks.callHooks("client-sprite-onInit", element.componentInstance);
93
- hooks.callHooks("client-sceneMap-onAddSprite", client.sceneMap, element.componentInstance);
94
- return function () {
95
- hooks.callHooks("client-sprite-onDestroy", element.componentInstance);
96
- hooks.callHooks("client-sceneMap-onRemoveSprite", client.sceneMap, element.componentInstance);
97
- };
98
- });
99
- tick(function () {
100
- hooks.callHooks("client-sprite-onUpdate");
101
- });
102
- let $this = h(Container, { x, y, zIndex: y, viewportFollow: isMe, controls }, [loop(componentsBehind, component => h(Container, null, h(component, { object }))), h(Particle, { emit: emitParticleTrigger, settings: particleSettings, zIndex: 1000, name: particleName }), h(Container, null, loop(graphics, graphicId => h(Sprite, { sheet: sheet(graphicId), direction, tint }))), loop(componentsInFront, component => h(Container, null, h(component, { object })))]);
103
- return $this
104
- }
105
-
106
- export { component as default };
107
- //# sourceMappingURL=index14.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index14.js","sources":["../src/components/character.ce"],"sourcesContent":["<Container x y zIndex={y} viewportFollow={isMe} controls>\n @for (component of componentsBehind) {\n <Container>\n <component object />\n </Container>\n } \n <Particle emit={@emitParticleTrigger} settings={@particleSettings} zIndex={1000} name={particleName} />\n <Container>\n @for (graphicId of graphics) {\n <Sprite sheet={@sheet(@graphicId)} direction tint />\n }\n </Container>\n @for (component of componentsInFront) {\n <Container>\n <component object />\n </Container>\n } \n <!-- <Ellipse \n x={shadow.@x} \n y={shadow.@y} \n width={shadow.@width} \n height={shadow.@height} \n color=\"black\" \n blur={10} \n alpha={0.5}\n /> -->\n</Container>\n\n<script>\n import { signal, effect, mount, computed, tick } from \"canvasengine\";\n import { Particle } from \"@canvasengine/presets\";\n import { GameEngineToken, ModulesToken } from \"@rpgjs/common\";\n import { RpgClientEngine } from \"../RpgClientEngine\";\n import { inject } from \"../core/inject\"; \n import { Direction } from \"@rpgjs/common\";\n import Hit from \"./effects/hit.ce\";\n\n const { object, id } = defineProps();\n \n const client = inject(RpgClientEngine);\n const hooks = inject(ModulesToken);\n\n const spritesheets = client.spritesheets;\n const playerId = client.playerId;\n const componentsBehind = client.spriteComponentsBehind;\n const componentsInFront = client.spriteComponentsInFront;\n const isMe = computed(() => id() === playerId);\n\n const x = object.x;\n const y = object.y;\n const tint = object.tint;\n const direction = object.direction;\n const animationName = object.animationName;\n const emitParticleTrigger = object.emitParticleTrigger;\n const particleSettings = client.particleSettings;\n const particleName = object.particleName;\n const graphics = object.graphics;\n\n const hitbox = object.hitbox;\n const widthShadow = 10;\n const shadow = computed(() => ({\n x: hitbox().w / 2,\n y: hitbox().h - (hitbox().h / 2),\n width: hitbox().w + widthShadow,\n height: hitbox().h,\n }))\n const canControls = () => isMe() && object.canMove()\n const keyboardControls = client.globalConfig.keyboardControls;\n\n const controls = signal({\n down: {\n repeat: true,\n bind: keyboardControls.down,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Down })\n },\n },\n up: {\n repeat: true,\n bind: keyboardControls.up,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Up })\n },\n },\n left: {\n repeat: true,\n bind: keyboardControls.left,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Left })\n },\n },\n right: {\n repeat: true,\n bind: keyboardControls.right,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Right })\n },\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (canControls()) {\n client.processAction({ action: 'action' })\n // particleName.set('hit') \n // emitParticleTrigger.start()\n // object.flash('red')\n }\n },\n },\n });\n\n const sheet = (graphicId) => {\n return {\n definition: spritesheets.get(graphicId),\n playing: animationName,\n params: {\n direction\n },\n };\n }\n\n mount((element) => {\n hooks.callHooks(\"client-sprite-onInit\", element.componentInstance)\n hooks.callHooks(\"client-sceneMap-onAddSprite\", client.sceneMap, element.componentInstance)\n\n return () => {\n hooks.callHooks(\"client-sprite-onDestroy\", element.componentInstance)\n hooks.callHooks(\"client-sceneMap-onRemoveSprite\", client.sceneMap, element.componentInstance)\n }\n })\n\n tick(() => {\n hooks.callHooks(\"client-sprite-onUpdate\")\n })\n</script>"],"names":[],"mappings":"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"}
package/dist/index15.js DELETED
@@ -1,50 +0,0 @@
1
- import { useProps, useDefineProps, computed, effect, h, Canvas, loop, Viewport, cond, Container } from 'canvasengine';
2
- import { inject } from './index6.js';
3
- import { RpgClientEngine } from './index2.js';
4
- import component$1 from './index29.js';
5
- import { RpgGui } from './index9.js';
6
-
7
- function component($$props) {
8
- useProps($$props);
9
- 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))
15
- t[p] = s[p];
16
- }
17
- return t;
18
- };
19
- return __assign.apply(this, arguments);
20
- };
21
- var engine = inject(RpgClientEngine);
22
- var guiService = inject(RpgGui);
23
- var sceneData = engine.sceneMap.data;
24
- var gui = guiService.gui;
25
- var worldWidth = computed(function () { var _a; return (_a = sceneData()) === null || _a === void 0 ? void 0 : _a.width; });
26
- var worldHeight = computed(function () { var _a; return (_a = sceneData()) === null || _a === void 0 ? void 0 : _a.height; });
27
- effect(function () {
28
- if (sceneData() && !sceneData().component) {
29
- throw new Error("Warning ! You need to define a component for the scene. Use provideLoadMap() to define a component for the scene.");
30
- }
31
- });
32
- var onGuiFinish = function (gui, data) {
33
- guiService.guiClose(gui.name, data);
34
- };
35
- var onGuiInteraction = function (gui, name, data) {
36
- guiService.guiInteraction(gui.name, name, data);
37
- };
38
- var clamp = {
39
- direction: "all"
40
- };
41
- let $this = h(Canvas, { width: computed(() => engine.width()), height: computed(() => engine.height()) }, [h(Viewport, { worldWidth, worldHeight, clamp }, cond(sceneData, () => h(component$1))), loop(gui, gui => h(Container, { display: 'flex' }, cond(gui.display, () => h(gui.component, { ...gui.data(), onFinish: (data) => {
42
- onGuiFinish(gui, data);
43
- }, onInteraction: (name, data) => {
44
- onGuiInteraction(gui, name, data);
45
- } }))))]);
46
- return $this
47
- }
48
-
49
- export { component as default };
50
- //# sourceMappingURL=index15.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index15.js","sources":["../src/components/scenes/canvas.ce"],"sourcesContent":["<Canvas width={@engine.width} height={@engine.height}>\n <Viewport worldWidth worldHeight clamp>\n @if (sceneData) {\n <SceneMap />\n }\n </Viewport>\n @for (gui of gui) {\n <Container display=\"flex\">\n @if (gui.display) {\n <gui.component ...gui.data() onFinish={(data) => {\n onGuiFinish(gui, data)\n }} onInteraction={(name, data) => {\n onGuiInteraction(gui, name, data)\n }} /> \n }\n </Container>\n } \n</Canvas>\n\n<script>\n import { signal, computed, effect } from \"canvasengine\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import SceneMap from './draw-map.ce'\n import { RpgGui } from \"../../Gui/Gui\";\n\n const engine = inject(RpgClientEngine);\n const guiService = inject(RpgGui);\n const sceneData = engine.sceneMap.data\n const gui = guiService.gui\n const worldWidth = computed(() => sceneData()?.width)\n const worldHeight = computed(() => sceneData()?.height)\n\n effect(() => {\n if (sceneData() && !sceneData().component) {\n throw new Error(\"Warning ! You need to define a component for the scene. Use provideLoadMap() to define a component for the scene.\")\n }\n })\n\n const onGuiFinish = (gui, data) => {\n guiService.guiClose(gui.name, data)\n }\n\n const onGuiInteraction = (gui, name, data) => {\n guiService.guiInteraction(gui.name, name, data)\n }\n \n const clamp = {\n direction: \"all\"\n }\n</script>\n"],"names":["SceneMap"],"mappings":"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"}