@rpgjs/client 4.2.2 → 5.0.0-alpha.0

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 (321) hide show
  1. package/dist/Game/EffectManager.d.ts +5 -0
  2. package/dist/Game/Event.d.ts +4 -0
  3. package/dist/Game/Map.d.ts +7 -0
  4. package/dist/Game/Player.d.ts +4 -0
  5. package/dist/Gui/Gui.d.ts +23 -0
  6. package/{lib → dist}/RpgClient.d.ts +9 -6
  7. package/dist/RpgClientEngine.d.ts +43 -0
  8. package/dist/components/effects/index.d.ts +4 -0
  9. package/dist/components/gui/index.d.ts +3 -0
  10. package/dist/components/index.d.ts +2 -0
  11. package/dist/core/inject.d.ts +5 -0
  12. package/dist/core/setup.d.ts +6 -0
  13. package/dist/index.d.ts +13 -0
  14. package/dist/index.js +13 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/index10.js +8 -0
  17. package/dist/index10.js.map +1 -0
  18. package/dist/index11.js +10 -0
  19. package/dist/index11.js.map +1 -0
  20. package/dist/index12.js +8 -0
  21. package/dist/index12.js.map +1 -0
  22. package/dist/index13.js +17 -0
  23. package/dist/index13.js.map +1 -0
  24. package/dist/index14.js +50 -0
  25. package/dist/index14.js.map +1 -0
  26. package/dist/index15.js +191 -0
  27. package/dist/index15.js.map +1 -0
  28. package/dist/index16.js +9 -0
  29. package/dist/index16.js.map +1 -0
  30. package/dist/index17.js +387 -0
  31. package/dist/index17.js.map +1 -0
  32. package/dist/index18.js +31 -0
  33. package/dist/index18.js.map +1 -0
  34. package/dist/index19.js +24 -0
  35. package/dist/index19.js.map +1 -0
  36. package/dist/index2.js +112 -0
  37. package/dist/index2.js.map +1 -0
  38. package/dist/index20.js +2421 -0
  39. package/dist/index20.js.map +1 -0
  40. package/dist/index21.js +114 -0
  41. package/dist/index21.js.map +1 -0
  42. package/dist/index22.js +109 -0
  43. package/dist/index22.js.map +1 -0
  44. package/dist/index23.js +71 -0
  45. package/dist/index23.js.map +1 -0
  46. package/dist/index24.js +21 -0
  47. package/dist/index24.js.map +1 -0
  48. package/dist/index25.js +41 -0
  49. package/dist/index25.js.map +1 -0
  50. package/dist/index26.js +5 -0
  51. package/dist/index26.js.map +1 -0
  52. package/dist/index27.js +322 -0
  53. package/dist/index27.js.map +1 -0
  54. package/dist/index28.js +25 -0
  55. package/dist/index28.js.map +1 -0
  56. package/dist/index29.js +11 -0
  57. package/dist/index29.js.map +1 -0
  58. package/dist/index3.js +87 -0
  59. package/dist/index3.js.map +1 -0
  60. package/dist/index30.js +11 -0
  61. package/dist/index30.js.map +1 -0
  62. package/dist/index31.js +174 -0
  63. package/dist/index31.js.map +1 -0
  64. package/dist/index32.js +501 -0
  65. package/dist/index32.js.map +1 -0
  66. package/dist/index33.js +12 -0
  67. package/dist/index33.js.map +1 -0
  68. package/dist/index34.js +4403 -0
  69. package/dist/index34.js.map +1 -0
  70. package/dist/index35.js +91 -0
  71. package/dist/index35.js.map +1 -0
  72. package/dist/index36.js +61 -0
  73. package/dist/index36.js.map +1 -0
  74. package/dist/index37.js +20 -0
  75. package/dist/index37.js.map +1 -0
  76. package/dist/index38.js +20 -0
  77. package/dist/index38.js.map +1 -0
  78. package/dist/index4.js +54 -0
  79. package/dist/index4.js.map +1 -0
  80. package/dist/index5.js +15 -0
  81. package/dist/index5.js.map +1 -0
  82. package/dist/index6.js +17 -0
  83. package/dist/index6.js.map +1 -0
  84. package/dist/index7.js +31 -0
  85. package/dist/index7.js.map +1 -0
  86. package/dist/index8.js +90 -0
  87. package/dist/index8.js.map +1 -0
  88. package/dist/index9.js +76 -0
  89. package/dist/index9.js.map +1 -0
  90. package/dist/module.d.ts +14 -0
  91. package/dist/presets/index.d.ts +22 -0
  92. package/{lib/Presets/AnimationSpritesheet.d.ts → dist/presets/rmspritesheet.d.ts} +6 -2
  93. package/dist/services/AbstractSocket.d.ts +15 -0
  94. package/dist/services/loadMap.d.ts +14 -0
  95. package/dist/services/mmorpg.d.ts +32 -0
  96. package/dist/services/standalone.d.ts +34 -0
  97. package/package.json +25 -42
  98. package/src/Game/EffectManager.ts +20 -0
  99. package/src/Game/Event.ts +5 -0
  100. package/src/Game/Map.ts +10 -0
  101. package/src/Game/Object.ts +16 -0
  102. package/src/Game/Player.ts +5 -0
  103. package/src/Gui/Gui.ts +80 -534
  104. package/src/RpgClient.ts +9 -5
  105. package/src/RpgClientEngine.ts +135 -815
  106. package/src/components/character.ce +104 -0
  107. package/src/components/effects/animation.ce +19 -0
  108. package/src/components/effects/hit.ce +87 -0
  109. package/src/components/effects/index.ts +7 -0
  110. package/src/components/gui/dialogbox/index.ce +194 -0
  111. package/src/components/gui/dialogbox/itemMenu.ce +23 -0
  112. package/src/components/gui/dialogbox/selection.ce +67 -0
  113. package/src/components/gui/index.ts +5 -0
  114. package/src/components/index.ts +3 -0
  115. package/src/components/scenes/canvas.ce +51 -0
  116. package/src/components/scenes/draw-map.ce +56 -0
  117. package/src/components/scenes/element-map.ce +23 -0
  118. package/src/components/scenes/event-layer.ce +20 -0
  119. package/src/core/inject.ts +17 -0
  120. package/src/core/setup.ts +18 -0
  121. package/src/index.ts +13 -29
  122. package/src/module.ts +93 -0
  123. package/src/presets/index.ts +5 -0
  124. package/src/{Presets/AnimationSpritesheet.ts → presets/rmspritesheet.ts} +4 -5
  125. package/src/services/AbstractSocket.ts +14 -0
  126. package/src/services/loadMap.ts +33 -0
  127. package/src/services/mmorpg.ts +64 -0
  128. package/src/services/standalone.ts +101 -0
  129. package/src/types/canvas-engine.d.ts +26 -0
  130. package/tsconfig.json +8 -3
  131. package/vite.config.ts +34 -0
  132. package/CHANGELOG.md +0 -177
  133. package/LICENSE +0 -19
  134. package/browser/React-f6f9b1de.js +0 -157
  135. package/browser/index-e74a289f.js +0 -44225
  136. package/browser/manifest.json +0 -21
  137. package/browser/rpg.client.js +0 -40
  138. package/browser/rpg.client.umd.cjs +0 -44414
  139. package/lib/Components/AbstractComponent.d.ts +0 -32
  140. package/lib/Components/AbstractComponent.js +0 -93
  141. package/lib/Components/AbstractComponent.js.map +0 -1
  142. package/lib/Components/BarComponent.d.ts +0 -21
  143. package/lib/Components/BarComponent.js +0 -169
  144. package/lib/Components/BarComponent.js.map +0 -1
  145. package/lib/Components/Component.d.ts +0 -124
  146. package/lib/Components/Component.js +0 -425
  147. package/lib/Components/Component.js.map +0 -1
  148. package/lib/Components/DebugComponent.d.ts +0 -11
  149. package/lib/Components/DebugComponent.js +0 -32
  150. package/lib/Components/DebugComponent.js.map +0 -1
  151. package/lib/Components/ImageComponent.d.ts +0 -11
  152. package/lib/Components/ImageComponent.js +0 -30
  153. package/lib/Components/ImageComponent.js.map +0 -1
  154. package/lib/Components/ShapeComponent.d.ts +0 -11
  155. package/lib/Components/ShapeComponent.js +0 -57
  156. package/lib/Components/ShapeComponent.js.map +0 -1
  157. package/lib/Components/TextComponent.d.ts +0 -11
  158. package/lib/Components/TextComponent.js +0 -35
  159. package/lib/Components/TextComponent.js.map +0 -1
  160. package/lib/Components/TileComponent.d.ts +0 -10
  161. package/lib/Components/TileComponent.js +0 -40
  162. package/lib/Components/TileComponent.js.map +0 -1
  163. package/lib/Effects/Animation.d.ts +0 -55
  164. package/lib/Effects/Animation.js +0 -233
  165. package/lib/Effects/Animation.js.map +0 -1
  166. package/lib/Effects/AnimationCharacter.d.ts +0 -7
  167. package/lib/Effects/AnimationCharacter.js +0 -9
  168. package/lib/Effects/AnimationCharacter.js.map +0 -1
  169. package/lib/Effects/Spinner.d.ts +0 -7
  170. package/lib/Effects/Spinner.js +0 -18
  171. package/lib/Effects/Spinner.js.map +0 -1
  172. package/lib/Effects/Timeline.d.ts +0 -151
  173. package/lib/Effects/Timeline.js +0 -369
  174. package/lib/Effects/Timeline.js.map +0 -1
  175. package/lib/Effects/TransitionScene.d.ts +0 -18
  176. package/lib/Effects/TransitionScene.js +0 -50
  177. package/lib/Effects/TransitionScene.js.map +0 -1
  178. package/lib/GameEngine.d.ts +0 -68
  179. package/lib/GameEngine.js +0 -254
  180. package/lib/GameEngine.js.map +0 -1
  181. package/lib/Gui/Gui.d.ts +0 -110
  182. package/lib/Gui/Gui.js +0 -490
  183. package/lib/Gui/Gui.js.map +0 -1
  184. package/lib/Gui/React.d.ts +0 -15
  185. package/lib/Gui/React.js +0 -113
  186. package/lib/Gui/React.js.map +0 -1
  187. package/lib/Gui/Vue.d.ts +0 -13
  188. package/lib/Gui/Vue.js +0 -114
  189. package/lib/Gui/Vue.js.map +0 -1
  190. package/lib/Interfaces/Character.d.ts +0 -6
  191. package/lib/Interfaces/Character.js +0 -2
  192. package/lib/Interfaces/Character.js.map +0 -1
  193. package/lib/Interfaces/Scene.d.ts +0 -10
  194. package/lib/Interfaces/Scene.js +0 -2
  195. package/lib/Interfaces/Scene.js.map +0 -1
  196. package/lib/KeyboardControls.d.ts +0 -367
  197. package/lib/KeyboardControls.js +0 -714
  198. package/lib/KeyboardControls.js.map +0 -1
  199. package/lib/Logger.d.ts +0 -1
  200. package/lib/Logger.js +0 -4
  201. package/lib/Logger.js.map +0 -1
  202. package/lib/Presets/AnimationSpritesheet.js +0 -39
  203. package/lib/Presets/AnimationSpritesheet.js.map +0 -1
  204. package/lib/Presets/Scene.d.ts +0 -3
  205. package/lib/Presets/Scene.js +0 -5
  206. package/lib/Presets/Scene.js.map +0 -1
  207. package/lib/Renderer.d.ts +0 -62
  208. package/lib/Renderer.js +0 -300
  209. package/lib/Renderer.js.map +0 -1
  210. package/lib/Resources.d.ts +0 -22
  211. package/lib/Resources.js +0 -38
  212. package/lib/Resources.js.map +0 -1
  213. package/lib/RpgClient.js +0 -2
  214. package/lib/RpgClient.js.map +0 -1
  215. package/lib/RpgClientEngine.d.ts +0 -257
  216. package/lib/RpgClientEngine.js +0 -674
  217. package/lib/RpgClientEngine.js.map +0 -1
  218. package/lib/Scene/EventLayer.d.ts +0 -4
  219. package/lib/Scene/EventLayer.js +0 -8
  220. package/lib/Scene/EventLayer.js.map +0 -1
  221. package/lib/Scene/Map.d.ts +0 -109
  222. package/lib/Scene/Map.js +0 -319
  223. package/lib/Scene/Map.js.map +0 -1
  224. package/lib/Scene/Scene.d.ts +0 -184
  225. package/lib/Scene/Scene.js +0 -250
  226. package/lib/Scene/Scene.js.map +0 -1
  227. package/lib/Scene/SceneData.d.ts +0 -4
  228. package/lib/Scene/SceneData.js +0 -8
  229. package/lib/Scene/SceneData.js.map +0 -1
  230. package/lib/Sound/RpgSound.d.ts +0 -11
  231. package/lib/Sound/RpgSound.js +0 -46
  232. package/lib/Sound/RpgSound.js.map +0 -1
  233. package/lib/Sound/Sound.d.ts +0 -78
  234. package/lib/Sound/Sound.js +0 -12
  235. package/lib/Sound/Sound.js.map +0 -1
  236. package/lib/Sound/Sounds.d.ts +0 -2
  237. package/lib/Sound/Sounds.js +0 -6
  238. package/lib/Sound/Sounds.js.map +0 -1
  239. package/lib/Sprite/Character.d.ts +0 -18
  240. package/lib/Sprite/Character.js +0 -131
  241. package/lib/Sprite/Character.js.map +0 -1
  242. package/lib/Sprite/Player.d.ts +0 -3
  243. package/lib/Sprite/Player.js +0 -4
  244. package/lib/Sprite/Player.js.map +0 -1
  245. package/lib/Sprite/Spritesheet.d.ts +0 -365
  246. package/lib/Sprite/Spritesheet.js +0 -13
  247. package/lib/Sprite/Spritesheet.js.map +0 -1
  248. package/lib/Sprite/Spritesheets.d.ts +0 -3
  249. package/lib/Sprite/Spritesheets.js +0 -6
  250. package/lib/Sprite/Spritesheets.js.map +0 -1
  251. package/lib/Tilemap/CommonLayer.d.ts +0 -10
  252. package/lib/Tilemap/CommonLayer.js +0 -17
  253. package/lib/Tilemap/CommonLayer.js.map +0 -1
  254. package/lib/Tilemap/ImageLayer.d.ts +0 -4
  255. package/lib/Tilemap/ImageLayer.js +0 -16
  256. package/lib/Tilemap/ImageLayer.js.map +0 -1
  257. package/lib/Tilemap/Tile.d.ts +0 -21
  258. package/lib/Tilemap/Tile.js +0 -67
  259. package/lib/Tilemap/Tile.js.map +0 -1
  260. package/lib/Tilemap/TileLayer.d.ts +0 -13
  261. package/lib/Tilemap/TileLayer.js +0 -122
  262. package/lib/Tilemap/TileLayer.js.map +0 -1
  263. package/lib/Tilemap/TileSet.d.ts +0 -7
  264. package/lib/Tilemap/TileSet.js +0 -24
  265. package/lib/Tilemap/TileSet.js.map +0 -1
  266. package/lib/Tilemap/index.d.ts +0 -28
  267. package/lib/Tilemap/index.js +0 -151
  268. package/lib/Tilemap/index.js.map +0 -1
  269. package/lib/clientEntryPoint.d.ts +0 -89
  270. package/lib/clientEntryPoint.js +0 -48
  271. package/lib/clientEntryPoint.js.map +0 -1
  272. package/lib/index.d.ts +0 -26
  273. package/lib/index.js +0 -27
  274. package/lib/index.js.map +0 -1
  275. package/lib/inject.d.ts +0 -23
  276. package/lib/inject.js +0 -30
  277. package/lib/inject.js.map +0 -1
  278. package/rpg.toml +0 -14
  279. package/src/Components/AbstractComponent.ts +0 -120
  280. package/src/Components/BarComponent.ts +0 -181
  281. package/src/Components/Component.ts +0 -515
  282. package/src/Components/DebugComponent.ts +0 -36
  283. package/src/Components/ImageComponent.ts +0 -30
  284. package/src/Components/ShapeComponent.ts +0 -64
  285. package/src/Components/TextComponent.ts +0 -33
  286. package/src/Components/TileComponent.ts +0 -43
  287. package/src/Effects/Animation.ts +0 -310
  288. package/src/Effects/AnimationCharacter.ts +0 -7
  289. package/src/Effects/Spinner.ts +0 -19
  290. package/src/Effects/Timeline.ts +0 -378
  291. package/src/Effects/TransitionScene.ts +0 -59
  292. package/src/GameEngine.ts +0 -289
  293. package/src/Gui/React.ts +0 -145
  294. package/src/Gui/Vue.ts +0 -154
  295. package/src/Interfaces/Character.ts +0 -7
  296. package/src/Interfaces/Scene.ts +0 -9
  297. package/src/KeyboardControls.ts +0 -748
  298. package/src/Logger.ts +0 -3
  299. package/src/Presets/Scene.ts +0 -3
  300. package/src/Renderer.ts +0 -334
  301. package/src/Resources.ts +0 -39
  302. package/src/Scene/EventLayer.ts +0 -9
  303. package/src/Scene/Map.ts +0 -402
  304. package/src/Scene/Scene.ts +0 -305
  305. package/src/Scene/SceneData.ts +0 -13
  306. package/src/Sound/RpgSound.ts +0 -50
  307. package/src/Sound/Sound.ts +0 -91
  308. package/src/Sound/Sounds.ts +0 -7
  309. package/src/Sprite/Character.ts +0 -157
  310. package/src/Sprite/Player.ts +0 -3
  311. package/src/Sprite/Spritesheet.ts +0 -392
  312. package/src/Sprite/Spritesheets.ts +0 -8
  313. package/src/Tilemap/CommonLayer.ts +0 -20
  314. package/src/Tilemap/ImageLayer.ts +0 -20
  315. package/src/Tilemap/Tile.ts +0 -80
  316. package/src/Tilemap/TileLayer.ts +0 -142
  317. package/src/Tilemap/TileSet.ts +0 -40
  318. package/src/Tilemap/index.ts +0 -175
  319. package/src/clientEntryPoint.ts +0 -150
  320. package/src/inject.ts +0 -34
  321. package/src/types/howler.d.ts +0 -73
package/lib/Gui/Gui.js DELETED
@@ -1,490 +0,0 @@
1
- import { Utils } from '@rpgjs/common';
2
- import { RpgSound } from '../Sound/RpgSound.js';
3
- import { RpgClientEngine, RpgResource } from '../index.js';
4
- import { RpgRenderer } from '../Renderer.js';
5
- import { GameEngineClient } from '../GameEngine.js';
6
- import { VueGui } from './Vue.js';
7
- import { map, combineLatest, filter } from 'rxjs';
8
- const { elementToPositionAbsolute } = Utils;
9
- const COMPONENT_LIBRARIES = [
10
- VueGui
11
- ];
12
- export class Gui {
13
- constructor() {
14
- this.gui = {};
15
- this.currentScene = null;
16
- this.librariesInstances = [];
17
- }
18
- async _initialize(context, guiEl) {
19
- this.clientEngine = context.inject(RpgClientEngine);
20
- this.renderer = context.inject(RpgRenderer);
21
- this.gameEngine = context.inject(GameEngineClient);
22
- const { gui } = this.renderer.options;
23
- for (let ui of gui) {
24
- let name = ui.name;
25
- if (Utils.isFunction(ui)) {
26
- name = Utils.camelToKebab(name);
27
- }
28
- this.gui[name] = {
29
- data: ui.data,
30
- attachToSprite: ui.rpgAttachToSprite,
31
- display: false,
32
- name: name,
33
- isFunction: Utils.isFunction(ui),
34
- gui: ui
35
- };
36
- }
37
- if (this.clientEngine.envs?.['VITE_REACT']) {
38
- console.warn('[RPGJS] React GUI is experimental feature. So, its use may change over time. Not yet in production');
39
- COMPONENT_LIBRARIES.push(await import('./React.js').then(m => m.ReactGui));
40
- }
41
- for (let componentClass of COMPONENT_LIBRARIES) {
42
- const el = document.createElement('div');
43
- elementToPositionAbsolute(el);
44
- el.style['pointer-events'] = 'none';
45
- guiEl.appendChild(el);
46
- this.librariesInstances.push(new componentClass(el, this));
47
- }
48
- guiEl.style['pointer-events'] = 'none';
49
- }
50
- _setSceneReady(scene) {
51
- this.currentScene = scene;
52
- this.librariesInstances.forEach(instance => {
53
- if (instance._setSceneReady)
54
- instance._setSceneReady(scene);
55
- });
56
- }
57
- getInjectObject() {
58
- const self = this;
59
- return {
60
- /**
61
- * Recovery of the current scene
62
- *
63
- * ```js
64
- * export default {
65
- * inject: ['rpgScene'],
66
- * mounted() {
67
- * const scene = this.rpgScene()
68
- * scene.stopInputs()
69
- * }
70
- * }
71
- * ```
72
- *
73
- * @prop {Function returns RpgScene} [rpgScene]
74
- * @memberof VueInject
75
- * */
76
- rpgScene: this.renderer.getScene.bind(this.renderer),
77
- /**
78
- * Retrieve the main container of the game
79
- *
80
- * ```js
81
- * export default {
82
- * inject: ['rpgStage'],
83
- * mounted() {
84
- * const blur = new PIXI.BlurFilter()
85
- this.rpgStage.filters = [blur]
86
- * }
87
- * }
88
- * ```
89
- *
90
- * @prop {PIXI.Container} [rpgStage]
91
- * @memberof VueInject
92
- * */
93
- rpgStage: this.renderer.stage,
94
- /**
95
- * Listen to all the objects present in the room (events and players)
96
- *
97
- * ```js
98
- * export default {
99
- * inject: ['rpgObjects'],
100
- * mounted() {
101
- * this.obs = this.rpgObjects.subscribe((objects) => {
102
- * for (let id in objects) {
103
- * const obj = objects[id]
104
- * console.log(obj.object, obj.paramsChanged)
105
- * }
106
- * })
107
- * },
108
- * unmounted() {
109
- * this.obs.unsubscribe()
110
- * }
111
- * }
112
- * ```
113
- *
114
- * > remember to unsubscribe for memory leaks
115
- *
116
- * It is an observable that returns an object:
117
- *
118
- * * the key is the object identifier
119
- * * The value is an object comprising:
120
- * * `object`: The entire object
121
- * * `paramsChanged`: Only the representation of the properties that have been changed on this object
122
- *
123
- * @prop {Observable<{ [objectId]: { object: object, paramsChanged: object } }>} [rpgObjects]
124
- * @memberof VueInject
125
- * */
126
- rpgObjects: this.clientEngine.objects,
127
- /**
128
- * Recovers and listens to the current player
129
- *
130
- * ```js
131
- * export default {
132
- * inject: ['rpgCurrentPlayer'],
133
- * mounted() {
134
- * this.obs = this.rpgCurrentPlayer.subscribe((obj) => {
135
- * console.log(obj.object, obj.paramsChanged)
136
- * })
137
- * },
138
- * unmounted() {
139
- * this.obs.unsubscribe()
140
- * }
141
- * }
142
- * ```
143
- *
144
- * * `object`: The whole player
145
- * * `paramsChanged`: Only the representation of the properties that have been changed on this player
146
- *
147
- * @prop {Observable<{ object: object, paramsChanged: object }>} [rpgCurrentPlayer]
148
- * @memberof VueInject
149
- * */
150
- rpgCurrentPlayer: this.clientEngine.objects
151
- .pipe(map((objects) => objects[this.gameEngine.playerId]), filter(player => !!player)),
152
- rpgGameEngine: this.gameEngine,
153
- /**
154
- * Tell the server to close the GUI.
155
- *
156
- * It is a function with 2 parameters:
157
- * * `name`: The name of the component
158
- * * `data`: The data you want to pass to the server
159
- *
160
- * ```js
161
- * export default {
162
- * inject: ['rpgGuiClose'],
163
- * methods: {
164
- * close() {
165
- * this.rpgGuiClose('gui-name', {
166
- * amount: 1000
167
- * })
168
- * }
169
- * }
170
- * }
171
- * ```
172
- *
173
- * @prop {Function(name, data)} [rpgGuiClose]
174
- * @memberof VueInject
175
- * */
176
- rpgGuiClose(name, data) {
177
- const guiId = name || this.$options?.name;
178
- self.socket.emit('gui.exit', {
179
- guiId,
180
- data
181
- });
182
- },
183
- /**
184
- * Perform an interaction with the open GUI
185
- *
186
- * It is a function with 2 parameters:
187
- * * `guiId`: The name of the component/Gui
188
- * * `name`: The name of the interaction (defined on the server side)
189
- * * `data`: Data to be sent
190
- *
191
- * ```js
192
- * export default {
193
- * inject: ['rpgGuiInteraction'],
194
- * methods: {
195
- * changeGold() {
196
- * this.rpgGuiInteraction('gui-name', 'change-gold', {
197
- * amount: 100
198
- * })
199
- * }
200
- * }
201
- * }
202
- * ```
203
- *
204
- * @prop {Function(guiId, name, data = {})} [rpgGuiInteraction]
205
- * @memberof VueInject
206
- * */
207
- rpgGuiInteraction: (guiId, name, data = {}) => {
208
- this.socket.emit('gui.interaction', {
209
- guiId,
210
- name,
211
- data
212
- });
213
- },
214
- /**
215
- * Listen to the keys that are pressed on the keyboard
216
- *
217
- * ```js
218
- * export default {
219
- * inject: ['rpgKeypress'],
220
- * mounted() {
221
- * this.obs = this.rpgKeypress.subscribe(({ inputName, control }) => {
222
- * console.log(inputName) // "escape"
223
- * console.log(control.actionName) // "back"
224
- * })
225
- * },
226
- * unmounted() {
227
- * this.obs.unsubscribe()
228
- * }
229
- * }
230
- * ```
231
- *
232
- * @prop {Observable<{ inputName: string, control: { actionName: string, options: any } }>} [rpgKeypress]
233
- * @memberof VueInject
234
- * */
235
- rpgKeypress: this.clientEngine.keyChange
236
- .pipe(map(name => {
237
- const control = this.clientEngine.controls.getControl(name);
238
- return {
239
- inputName: name,
240
- control
241
- };
242
- })),
243
- /**
244
- * Recovers the socket.
245
- *
246
- * ```js
247
- * export default {
248
- * inject: ['rpgSocket'],
249
- * mounted() {
250
- * const socket = this.rpgSocket()
251
- * socket.emit('foo', 'bar')
252
- * }
253
- * }
254
- * ```
255
- *
256
- * @prop {Function returns RpgScene} [rpgSocket]
257
- * @memberof VueInject
258
- * */
259
- rpgSocket: () => this.socket,
260
- /**
261
- * The RpgGui object to control GUIs
262
- *
263
- * ```js
264
- * export default {
265
- * inject: ['rpgGui'],
266
- * mounted() {
267
- * const guis = this.rpgGui.getAll()
268
- * }
269
- * }
270
- * ```
271
- *
272
- * @prop {RpgGui} [rpgGui]
273
- * @memberof VueInject
274
- * */
275
- rpgGui: this,
276
- /**
277
- * Equivalent to RpgSound
278
- *
279
- * ```js
280
- * export default {
281
- * inject: ['rpgSound'],
282
- * mounted() {
283
- * this.rpgSound.get('my-sound-id').play()
284
- * }
285
- * }
286
- * ```
287
- *
288
- * @prop {RpgSound} [rpgSound]
289
- * @memberof VueInject
290
- * */
291
- rpgSound: RpgSound,
292
- /**
293
- * Find the game's image and sound library
294
- *
295
- * ```js
296
- * export default {
297
- * inject: ['rpgResource'],
298
- * mounted() {
299
- * const resourceImage = this.rpgResource.spritesheets.get('image_id')
300
- * const resourceSound = this.rpgResource.sounds.get('sound_id')
301
- * }
302
- * }
303
- * ```
304
- *
305
- * @prop { { spritesheets: Map, sounds: Map } } [rpgResource]
306
- * @memberof VueInject
307
- * */
308
- rpgResource: RpgResource,
309
- /**
310
- * Get RpgClientEngine instance
311
- *
312
- * ```js
313
- * export default {
314
- * inject: ['rpgEngine'],
315
- * mounted() {
316
- * const vueInstance = this.rpgEngine.vueInstance
317
- * }
318
- * }
319
- * ```
320
- *
321
- * @prop {RpgClientEngine} [rpgEngine]
322
- * @memberof VueInject
323
- * */
324
- rpgEngine: this.clientEngine
325
- };
326
- }
327
- /** @internal */
328
- _setSocket(socket) {
329
- this.socket = socket;
330
- this.socket.on('gui.open', ({ guiId, data }) => {
331
- this.display(guiId, data);
332
- });
333
- this.socket.on('gui.tooltip', ({ players, display }) => {
334
- for (let playerId of players) {
335
- const sprite = this.renderer.getScene()?.getSprite(playerId);
336
- if (sprite)
337
- sprite.guiDisplay = display;
338
- }
339
- });
340
- this.socket.on('gui.exit', (guiId) => {
341
- this.hide(guiId);
342
- });
343
- }
344
- /** @internal */
345
- _setGui(id, obj) {
346
- const guiObj = this.get(id);
347
- if (!guiObj) {
348
- throw `The GUI named ${id} is non-existent. Please add the component in the gui property of the decorator @RpgClient`;
349
- }
350
- for (let key in obj) {
351
- guiObj[key] = obj[key];
352
- }
353
- this.librariesInstances.forEach(instance => {
354
- instance.gui = Object.assign({}, this.gui);
355
- });
356
- }
357
- /**
358
- * Get a GUI. You retrieve GUI data and information whether it is displayed or not
359
- *
360
- * ```ts
361
- * import { RpgGui } from '@rpgjs/client'
362
- *
363
- * const gui = RpgGui.get('my-gui')
364
- * console.log(gui.display) // false
365
- * ```
366
- *
367
- * @title Get a GUI
368
- * @method RpgGui.get(id)
369
- * @param {string} id
370
- * @returns { { data: any, display: boolean } }
371
- * @memberof RpgGui
372
- */
373
- get(id) {
374
- if (typeof id != 'string') {
375
- id = id.name;
376
- }
377
- return this.gui[id];
378
- }
379
- /**
380
- * Get all GUI. You retrieve GUI data and information whether it is displayed or not
381
- *
382
- * ```ts
383
- * import { RpgGui } from '@rpgjs/client'
384
- *
385
- * const gui = RpgGui.getAll()
386
- * console.log(gui) // { 'rpg-dialog': { data: {}, display: true } }
387
- * ```
388
- *
389
- * @title Get all GUI
390
- * @method RpgGui.getAll()
391
- * @returns { { [guiName]: { data: any, display: boolean } }}
392
- * @memberof RpgGui
393
- */
394
- getAll() {
395
- return this.gui;
396
- }
397
- /**
398
- * Checks if the GUI exists RpgClient's gui array
399
- *
400
- * ```ts
401
- * import { RpgGui } from '@rpgjs/client'
402
- *
403
- * RpgGui.exists('my-gui') // true
404
- * ```
405
- *
406
- * @title GUI Exists ?
407
- * @method RpgGui.exists(id)
408
- * @param {string} id
409
- * @returns {boolean}
410
- * @memberof RpgGui
411
- */
412
- exists(id) {
413
- return !!this.get(id);
414
- }
415
- /**
416
- * Calls a GUI according to identifier. You can send retrievable data in the component
417
- *
418
- * ```ts
419
- * import { RpgGui } from '@rpgjs/client'
420
- *
421
- * RpgGui.display('my-gui')
422
- * ```
423
- *
424
- * @title Display GUI
425
- * @method RpgGui.display(id,data)
426
- * @param {string} id
427
- * @param {object} [data]
428
- * @returns {void}
429
- * @memberof RpgGui
430
- */
431
- display(id, data = {}) {
432
- this._setGui(id, {
433
- display: true,
434
- data
435
- });
436
- }
437
- /**
438
- * Hide a GUI according to its identifier
439
- *
440
- * ```ts
441
- * import { RpgGui } from '@rpgjs/client'
442
- *
443
- * RpgGui.hide('my-gui')
444
- * ```
445
- *
446
- * @title Hide GUI
447
- * @method RpgGui.hide(id)
448
- * @param {string} id
449
- * @returns {void}
450
- * @memberof RpgGui
451
- */
452
- hide(id) {
453
- this._setGui(id, {
454
- display: false
455
- });
456
- }
457
- /** @internal */
458
- clear() {
459
- this.gui = {};
460
- }
461
- /** @internal */
462
- tooltipPosition(position) {
463
- const scene = this.renderer.getScene();
464
- const viewport = scene?.viewport;
465
- if (viewport) {
466
- const currentZoom = viewport.scale.x;
467
- const left = (position.x - viewport.left) * currentZoom;
468
- const top = (position.y - viewport.top) * currentZoom;
469
- return {
470
- transform: `translate(${left}px,${top}px)`
471
- };
472
- }
473
- return {};
474
- }
475
- /** @internal */
476
- tooltipFilter(sprites) {
477
- return sprites.filter(tooltip => tooltip.guiDisplay);
478
- }
479
- /** @internal */
480
- get listenTooltipObjects() {
481
- return combineLatest([
482
- this.clientEngine.gameEngine.all,
483
- this.currentScene?.objectsMoving
484
- ]).pipe(map(([objects]) => {
485
- return Object.values(objects).map((obj) => obj.object);
486
- }));
487
- }
488
- }
489
- export const RpgGui = new Gui();
490
- //# sourceMappingURL=Gui.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Gui.js","sourceRoot":"","sources":["../../src/Gui/Gui.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /// <reference types="react" />
2
- import type { Gui } from './Gui.js';
3
- export { useStore } from '@nanostores/react';
4
- export declare const RpgReactContext: import("react").Context<any>;
5
- export declare const useObjects: () => any[];
6
- export declare const useCurrentPlayer: () => {};
7
- export declare const useEventPropagator: () => import("react").MutableRefObject<null>;
8
- export declare class ReactGui {
9
- private app;
10
- private clientEngine;
11
- private renderer;
12
- private _gui;
13
- constructor(rootEl: HTMLDivElement, parentGui: Gui);
14
- set gui(val: any);
15
- }
package/lib/Gui/React.js DELETED
@@ -1,113 +0,0 @@
1
- import { createRoot } from 'react-dom/client';
2
- import { createElement, useState, createContext, useEffect, useContext, useSyncExternalStore, useRef } from 'react';
3
- import { EVENTS_MAP, RpgRenderer } from '../Renderer.js';
4
- import { BehaviorSubject, map, tap } from 'rxjs';
5
- import { inject } from '../inject.js';
6
- export { useStore } from '@nanostores/react';
7
- export const RpgReactContext = createContext({});
8
- // TODO
9
- export const useObjects = () => {
10
- const [objects, setObjects] = useState([]);
11
- const { rpgObjects } = useContext(RpgReactContext);
12
- useEffect(() => {
13
- rpgObjects
14
- .pipe(map((objects) => Object.values(objects).map((obj) => obj.object)))
15
- .subscribe(setObjects);
16
- }, []);
17
- return objects;
18
- };
19
- // TODO
20
- export const useCurrentPlayer = () => {
21
- const { rpgCurrentPlayer } = useContext(RpgReactContext);
22
- const currentPlayerRef = useRef({});
23
- let _onChanges;
24
- const subscribe = (onChanges) => {
25
- _onChanges = onChanges;
26
- return () => {
27
- _onChanges = null;
28
- };
29
- };
30
- useEffect(() => {
31
- const ob$ = rpgCurrentPlayer
32
- .pipe(map((player) => player.object), tap((player) => currentPlayerRef.current = player));
33
- const subscription = ob$.subscribe(() => {
34
- _onChanges?.();
35
- });
36
- return () => subscription.unsubscribe();
37
- }, []);
38
- return useSyncExternalStore(subscribe, () => currentPlayerRef.current);
39
- };
40
- export const useEventPropagator = () => {
41
- const ref = useRef(null);
42
- useEffect(() => {
43
- if (ref.current) {
44
- const element = ref.current;
45
- const eventListeners = {};
46
- const renderer = inject(RpgRenderer);
47
- EVENTS_MAP.MouseEvent.forEach(eventType => {
48
- const listener = event => renderer.propagateEvent(event);
49
- element.addEventListener(eventType, listener);
50
- eventListeners[eventType] = listener;
51
- });
52
- return () => {
53
- EVENTS_MAP.MouseEvent.forEach(eventType => {
54
- element.removeEventListener(eventType, eventListeners[eventType]);
55
- });
56
- };
57
- }
58
- }, [ref]);
59
- return ref;
60
- };
61
- export class ReactGui {
62
- //private _tooltips: BehaviorSubject<any[]> = new BehaviorSubject([] as any)
63
- constructor(rootEl, parentGui) {
64
- this._gui = new BehaviorSubject([]);
65
- this.app = createRoot(rootEl);
66
- this.clientEngine = parentGui.clientEngine;
67
- this.renderer = this.clientEngine.renderer;
68
- const GuiTooltip = (ui) => {
69
- return () => {
70
- const [_tooltip, setTooltip] = useState([]);
71
- useEffect(() => {
72
- parentGui.listenTooltipObjects.subscribe(setTooltip);
73
- // force combineLatest to emit first value
74
- parentGui.currentScene?.objectsMoving.next({});
75
- }, [parentGui.currentScene]);
76
- return parentGui.tooltipFilter(_tooltip).map(sprite => createElement('div', {
77
- style: parentGui.tooltipPosition({ x: sprite.position.x, y: sprite.position.y }),
78
- key: sprite.id,
79
- }, createElement(ui.gui, {
80
- spriteData: sprite,
81
- ...(ui.data || {}),
82
- })));
83
- };
84
- };
85
- const GuiWrapper = () => {
86
- const [_gui, setGui] = useState([]);
87
- useEffect(() => {
88
- this._gui.subscribe(gui => setGui(gui));
89
- }, []);
90
- return createElement(RpgReactContext.Provider, {
91
- value: parentGui.getInjectObject()
92
- }, ..._gui.filter(ui => ui.display && !ui.attachToSprite).map(ui => createElement('div', {
93
- key: ui.name,
94
- style: { 'pointerEvents': 'auto' },
95
- }, createElement(ui.gui, ui.data || {}))), ..._gui.filter(ui => ui.display && ui.attachToSprite).map(ui => createElement('div', {
96
- key: ui.name,
97
- style: { 'pointerEvents': 'auto' },
98
- }, createElement(GuiTooltip(ui)))));
99
- };
100
- this.app.render(createElement(GuiWrapper));
101
- }
102
- set gui(val) {
103
- let array = [];
104
- for (let key in val) {
105
- // ignore vuejs component
106
- if (!val[key].isFunction)
107
- continue;
108
- array.push(val[key]);
109
- }
110
- this._gui.next(array);
111
- }
112
- }
113
- //# sourceMappingURL=React.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"React.js","sourceRoot":"","sources":["../../src/Gui/React.ts"],"names":[],"mappings":"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"}
package/lib/Gui/Vue.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import type { Gui } from './Gui.js';
2
- export declare class VueGui {
3
- private parentGui;
4
- private renderer;
5
- private gameEngine;
6
- private clientEngine;
7
- private app;
8
- private vm;
9
- private socket;
10
- constructor(rootEl: HTMLDivElement, parentGui: Gui);
11
- _setSceneReady(): void;
12
- set gui(val: any);
13
- }