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