@rpgjs/client 4.3.0 → 5.0.0-alpha.1

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 (323) 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 +316 -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 +91 -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/index39.js +20 -0
  79. package/dist/index39.js.map +1 -0
  80. package/dist/index4.js +54 -0
  81. package/dist/index4.js.map +1 -0
  82. package/dist/index5.js +15 -0
  83. package/dist/index5.js.map +1 -0
  84. package/dist/index6.js +17 -0
  85. package/dist/index6.js.map +1 -0
  86. package/dist/index7.js +31 -0
  87. package/dist/index7.js.map +1 -0
  88. package/dist/index8.js +90 -0
  89. package/dist/index8.js.map +1 -0
  90. package/dist/index9.js +76 -0
  91. package/dist/index9.js.map +1 -0
  92. package/dist/module.d.ts +14 -0
  93. package/dist/presets/index.d.ts +22 -0
  94. package/{lib/Presets/AnimationSpritesheet.d.ts → dist/presets/rmspritesheet.d.ts} +6 -2
  95. package/dist/services/AbstractSocket.d.ts +15 -0
  96. package/dist/services/loadMap.d.ts +14 -0
  97. package/dist/services/mmorpg.d.ts +32 -0
  98. package/dist/services/standalone.d.ts +34 -0
  99. package/package.json +25 -41
  100. package/src/Game/EffectManager.ts +20 -0
  101. package/src/Game/Event.ts +5 -0
  102. package/src/Game/Map.ts +10 -0
  103. package/src/Game/Object.ts +16 -0
  104. package/src/Game/Player.ts +5 -0
  105. package/src/Gui/Gui.ts +80 -533
  106. package/src/RpgClient.ts +9 -5
  107. package/src/RpgClientEngine.ts +135 -818
  108. package/src/components/character.ce +104 -0
  109. package/src/components/effects/animation.ce +19 -0
  110. package/src/components/effects/hit.ce +87 -0
  111. package/src/components/effects/index.ts +7 -0
  112. package/src/components/gui/dialogbox/index.ce +194 -0
  113. package/src/components/gui/dialogbox/itemMenu.ce +23 -0
  114. package/src/components/gui/dialogbox/selection.ce +67 -0
  115. package/src/components/gui/index.ts +5 -0
  116. package/src/components/index.ts +3 -0
  117. package/src/components/scenes/canvas.ce +51 -0
  118. package/src/components/scenes/draw-map.ce +56 -0
  119. package/src/components/scenes/element-map.ce +23 -0
  120. package/src/components/scenes/event-layer.ce +20 -0
  121. package/src/core/inject.ts +17 -0
  122. package/src/core/setup.ts +18 -0
  123. package/src/index.ts +13 -29
  124. package/src/module.ts +93 -0
  125. package/src/presets/index.ts +5 -0
  126. package/src/{Presets/AnimationSpritesheet.ts → presets/rmspritesheet.ts} +4 -5
  127. package/src/services/AbstractSocket.ts +14 -0
  128. package/src/services/loadMap.ts +33 -0
  129. package/src/services/mmorpg.ts +64 -0
  130. package/src/services/standalone.ts +101 -0
  131. package/src/types/canvas-engine.d.ts +26 -0
  132. package/tsconfig.json +8 -3
  133. package/vite.config.ts +34 -0
  134. package/CHANGELOG.md +0 -189
  135. package/LICENSE +0 -19
  136. package/browser/React-ece4b906.js +0 -195
  137. package/browser/index-ba657126.js +0 -44229
  138. package/browser/manifest.json +0 -21
  139. package/browser/rpg.client.js +0 -40
  140. package/browser/rpg.client.umd.cjs +0 -44456
  141. package/lib/Components/AbstractComponent.d.ts +0 -32
  142. package/lib/Components/AbstractComponent.js +0 -93
  143. package/lib/Components/AbstractComponent.js.map +0 -1
  144. package/lib/Components/BarComponent.d.ts +0 -21
  145. package/lib/Components/BarComponent.js +0 -169
  146. package/lib/Components/BarComponent.js.map +0 -1
  147. package/lib/Components/Component.d.ts +0 -124
  148. package/lib/Components/Component.js +0 -425
  149. package/lib/Components/Component.js.map +0 -1
  150. package/lib/Components/DebugComponent.d.ts +0 -11
  151. package/lib/Components/DebugComponent.js +0 -32
  152. package/lib/Components/DebugComponent.js.map +0 -1
  153. package/lib/Components/ImageComponent.d.ts +0 -11
  154. package/lib/Components/ImageComponent.js +0 -30
  155. package/lib/Components/ImageComponent.js.map +0 -1
  156. package/lib/Components/ShapeComponent.d.ts +0 -11
  157. package/lib/Components/ShapeComponent.js +0 -57
  158. package/lib/Components/ShapeComponent.js.map +0 -1
  159. package/lib/Components/TextComponent.d.ts +0 -11
  160. package/lib/Components/TextComponent.js +0 -35
  161. package/lib/Components/TextComponent.js.map +0 -1
  162. package/lib/Components/TileComponent.d.ts +0 -10
  163. package/lib/Components/TileComponent.js +0 -40
  164. package/lib/Components/TileComponent.js.map +0 -1
  165. package/lib/Effects/Animation.d.ts +0 -55
  166. package/lib/Effects/Animation.js +0 -233
  167. package/lib/Effects/Animation.js.map +0 -1
  168. package/lib/Effects/AnimationCharacter.d.ts +0 -7
  169. package/lib/Effects/AnimationCharacter.js +0 -9
  170. package/lib/Effects/AnimationCharacter.js.map +0 -1
  171. package/lib/Effects/Spinner.d.ts +0 -7
  172. package/lib/Effects/Spinner.js +0 -18
  173. package/lib/Effects/Spinner.js.map +0 -1
  174. package/lib/Effects/Timeline.d.ts +0 -151
  175. package/lib/Effects/Timeline.js +0 -369
  176. package/lib/Effects/Timeline.js.map +0 -1
  177. package/lib/Effects/TransitionScene.d.ts +0 -18
  178. package/lib/Effects/TransitionScene.js +0 -50
  179. package/lib/Effects/TransitionScene.js.map +0 -1
  180. package/lib/GameEngine.d.ts +0 -68
  181. package/lib/GameEngine.js +0 -254
  182. package/lib/GameEngine.js.map +0 -1
  183. package/lib/Gui/Gui.d.ts +0 -110
  184. package/lib/Gui/Gui.js +0 -489
  185. package/lib/Gui/Gui.js.map +0 -1
  186. package/lib/Gui/React.d.ts +0 -28
  187. package/lib/Gui/React.js +0 -147
  188. package/lib/Gui/React.js.map +0 -1
  189. package/lib/Gui/Vue.d.ts +0 -13
  190. package/lib/Gui/Vue.js +0 -114
  191. package/lib/Gui/Vue.js.map +0 -1
  192. package/lib/Interfaces/Character.d.ts +0 -6
  193. package/lib/Interfaces/Character.js +0 -2
  194. package/lib/Interfaces/Character.js.map +0 -1
  195. package/lib/Interfaces/Scene.d.ts +0 -10
  196. package/lib/Interfaces/Scene.js +0 -2
  197. package/lib/Interfaces/Scene.js.map +0 -1
  198. package/lib/KeyboardControls.d.ts +0 -367
  199. package/lib/KeyboardControls.js +0 -714
  200. package/lib/KeyboardControls.js.map +0 -1
  201. package/lib/Logger.d.ts +0 -1
  202. package/lib/Logger.js +0 -4
  203. package/lib/Logger.js.map +0 -1
  204. package/lib/Presets/AnimationSpritesheet.js +0 -39
  205. package/lib/Presets/AnimationSpritesheet.js.map +0 -1
  206. package/lib/Presets/Scene.d.ts +0 -3
  207. package/lib/Presets/Scene.js +0 -5
  208. package/lib/Presets/Scene.js.map +0 -1
  209. package/lib/Renderer.d.ts +0 -62
  210. package/lib/Renderer.js +0 -300
  211. package/lib/Renderer.js.map +0 -1
  212. package/lib/Resources.d.ts +0 -22
  213. package/lib/Resources.js +0 -38
  214. package/lib/Resources.js.map +0 -1
  215. package/lib/RpgClient.js +0 -2
  216. package/lib/RpgClient.js.map +0 -1
  217. package/lib/RpgClientEngine.d.ts +0 -257
  218. package/lib/RpgClientEngine.js +0 -677
  219. package/lib/RpgClientEngine.js.map +0 -1
  220. package/lib/Scene/EventLayer.d.ts +0 -4
  221. package/lib/Scene/EventLayer.js +0 -8
  222. package/lib/Scene/EventLayer.js.map +0 -1
  223. package/lib/Scene/Map.d.ts +0 -109
  224. package/lib/Scene/Map.js +0 -319
  225. package/lib/Scene/Map.js.map +0 -1
  226. package/lib/Scene/Scene.d.ts +0 -184
  227. package/lib/Scene/Scene.js +0 -250
  228. package/lib/Scene/Scene.js.map +0 -1
  229. package/lib/Scene/SceneData.d.ts +0 -4
  230. package/lib/Scene/SceneData.js +0 -8
  231. package/lib/Scene/SceneData.js.map +0 -1
  232. package/lib/Sound/RpgSound.d.ts +0 -11
  233. package/lib/Sound/RpgSound.js +0 -46
  234. package/lib/Sound/RpgSound.js.map +0 -1
  235. package/lib/Sound/Sound.d.ts +0 -78
  236. package/lib/Sound/Sound.js +0 -12
  237. package/lib/Sound/Sound.js.map +0 -1
  238. package/lib/Sound/Sounds.d.ts +0 -2
  239. package/lib/Sound/Sounds.js +0 -6
  240. package/lib/Sound/Sounds.js.map +0 -1
  241. package/lib/Sprite/Character.d.ts +0 -18
  242. package/lib/Sprite/Character.js +0 -131
  243. package/lib/Sprite/Character.js.map +0 -1
  244. package/lib/Sprite/Player.d.ts +0 -3
  245. package/lib/Sprite/Player.js +0 -4
  246. package/lib/Sprite/Player.js.map +0 -1
  247. package/lib/Sprite/Spritesheet.d.ts +0 -365
  248. package/lib/Sprite/Spritesheet.js +0 -13
  249. package/lib/Sprite/Spritesheet.js.map +0 -1
  250. package/lib/Sprite/Spritesheets.d.ts +0 -3
  251. package/lib/Sprite/Spritesheets.js +0 -6
  252. package/lib/Sprite/Spritesheets.js.map +0 -1
  253. package/lib/Tilemap/CommonLayer.d.ts +0 -10
  254. package/lib/Tilemap/CommonLayer.js +0 -17
  255. package/lib/Tilemap/CommonLayer.js.map +0 -1
  256. package/lib/Tilemap/ImageLayer.d.ts +0 -4
  257. package/lib/Tilemap/ImageLayer.js +0 -16
  258. package/lib/Tilemap/ImageLayer.js.map +0 -1
  259. package/lib/Tilemap/Tile.d.ts +0 -21
  260. package/lib/Tilemap/Tile.js +0 -67
  261. package/lib/Tilemap/Tile.js.map +0 -1
  262. package/lib/Tilemap/TileLayer.d.ts +0 -13
  263. package/lib/Tilemap/TileLayer.js +0 -122
  264. package/lib/Tilemap/TileLayer.js.map +0 -1
  265. package/lib/Tilemap/TileSet.d.ts +0 -7
  266. package/lib/Tilemap/TileSet.js +0 -24
  267. package/lib/Tilemap/TileSet.js.map +0 -1
  268. package/lib/Tilemap/index.d.ts +0 -28
  269. package/lib/Tilemap/index.js +0 -151
  270. package/lib/Tilemap/index.js.map +0 -1
  271. package/lib/clientEntryPoint.d.ts +0 -89
  272. package/lib/clientEntryPoint.js +0 -48
  273. package/lib/clientEntryPoint.js.map +0 -1
  274. package/lib/index.d.ts +0 -26
  275. package/lib/index.js +0 -27
  276. package/lib/index.js.map +0 -1
  277. package/lib/inject.d.ts +0 -23
  278. package/lib/inject.js +0 -30
  279. package/lib/inject.js.map +0 -1
  280. package/rpg.toml +0 -14
  281. package/src/Components/AbstractComponent.ts +0 -120
  282. package/src/Components/BarComponent.ts +0 -181
  283. package/src/Components/Component.ts +0 -515
  284. package/src/Components/DebugComponent.ts +0 -36
  285. package/src/Components/ImageComponent.ts +0 -30
  286. package/src/Components/ShapeComponent.ts +0 -64
  287. package/src/Components/TextComponent.ts +0 -33
  288. package/src/Components/TileComponent.ts +0 -43
  289. package/src/Effects/Animation.ts +0 -310
  290. package/src/Effects/AnimationCharacter.ts +0 -7
  291. package/src/Effects/Spinner.ts +0 -19
  292. package/src/Effects/Timeline.ts +0 -378
  293. package/src/Effects/TransitionScene.ts +0 -59
  294. package/src/GameEngine.ts +0 -289
  295. package/src/Gui/React.ts +0 -193
  296. package/src/Gui/Vue.ts +0 -154
  297. package/src/Interfaces/Character.ts +0 -7
  298. package/src/Interfaces/Scene.ts +0 -9
  299. package/src/KeyboardControls.ts +0 -748
  300. package/src/Logger.ts +0 -3
  301. package/src/Presets/Scene.ts +0 -3
  302. package/src/Renderer.ts +0 -334
  303. package/src/Resources.ts +0 -39
  304. package/src/Scene/EventLayer.ts +0 -9
  305. package/src/Scene/Map.ts +0 -402
  306. package/src/Scene/Scene.ts +0 -305
  307. package/src/Scene/SceneData.ts +0 -13
  308. package/src/Sound/RpgSound.ts +0 -50
  309. package/src/Sound/Sound.ts +0 -91
  310. package/src/Sound/Sounds.ts +0 -7
  311. package/src/Sprite/Character.ts +0 -157
  312. package/src/Sprite/Player.ts +0 -3
  313. package/src/Sprite/Spritesheet.ts +0 -392
  314. package/src/Sprite/Spritesheets.ts +0 -8
  315. package/src/Tilemap/CommonLayer.ts +0 -20
  316. package/src/Tilemap/ImageLayer.ts +0 -20
  317. package/src/Tilemap/Tile.ts +0 -80
  318. package/src/Tilemap/TileLayer.ts +0 -142
  319. package/src/Tilemap/TileSet.ts +0 -40
  320. package/src/Tilemap/index.ts +0 -175
  321. package/src/clientEntryPoint.ts +0 -150
  322. package/src/inject.ts +0 -34
  323. 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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"}