@rpgjs/client 4.1.2 → 4.2.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 (63) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/browser/{React-da18564b.js → React-c40e162b.js} +25 -0
  3. package/browser/index-9602bbc0.js +44217 -0
  4. package/browser/manifest.json +10 -1
  5. package/browser/rpg.client.js +33 -44122
  6. package/browser/rpg.client.umd.cjs +458 -337
  7. package/lib/Effects/TransitionScene.d.ts +4 -3
  8. package/lib/Effects/TransitionScene.js +4 -2
  9. package/lib/Effects/TransitionScene.js.map +1 -1
  10. package/lib/GameEngine.d.ts +1 -1
  11. package/lib/GameEngine.js +4 -1
  12. package/lib/GameEngine.js.map +1 -1
  13. package/lib/Gui/Gui.d.ts +2 -1
  14. package/lib/Gui/Gui.js +7 -5
  15. package/lib/Gui/Gui.js.map +1 -1
  16. package/lib/Gui/React.d.ts +1 -0
  17. package/lib/Gui/React.js +23 -0
  18. package/lib/Gui/React.js.map +1 -1
  19. package/lib/Gui/Vue.js +21 -2
  20. package/lib/Gui/Vue.js.map +1 -1
  21. package/lib/KeyboardControls.d.ts +40 -14
  22. package/lib/KeyboardControls.js +42 -15
  23. package/lib/KeyboardControls.js.map +1 -1
  24. package/lib/Renderer.d.ts +13 -5
  25. package/lib/Renderer.js +40 -16
  26. package/lib/Renderer.js.map +1 -1
  27. package/lib/Resources.js.map +1 -1
  28. package/lib/RpgClientEngine.d.ts +10 -4
  29. package/lib/RpgClientEngine.js +26 -17
  30. package/lib/RpgClientEngine.js.map +1 -1
  31. package/lib/Scene/Map.d.ts +4 -5
  32. package/lib/Scene/Map.js +6 -4
  33. package/lib/Scene/Map.js.map +1 -1
  34. package/lib/Scene/Scene.d.ts +7 -2
  35. package/lib/Scene/Scene.js +9 -3
  36. package/lib/Scene/Scene.js.map +1 -1
  37. package/lib/Tilemap/index.d.ts +4 -3
  38. package/lib/Tilemap/index.js +4 -2
  39. package/lib/Tilemap/index.js.map +1 -1
  40. package/lib/clientEntryPoint.js +5 -5
  41. package/lib/clientEntryPoint.js.map +1 -1
  42. package/lib/index.d.ts +3 -0
  43. package/lib/index.js +3 -0
  44. package/lib/index.js.map +1 -1
  45. package/lib/inject.d.ts +23 -0
  46. package/lib/inject.js +30 -0
  47. package/lib/inject.js.map +1 -0
  48. package/package.json +5 -5
  49. package/src/Effects/TransitionScene.ts +3 -1
  50. package/src/GameEngine.ts +2 -2
  51. package/src/Gui/Gui.ts +5 -5
  52. package/src/Gui/React.ts +26 -1
  53. package/src/Gui/Vue.ts +24 -6
  54. package/src/KeyboardControls.ts +43 -15
  55. package/src/Renderer.ts +44 -19
  56. package/src/Resources.ts +0 -1
  57. package/src/RpgClientEngine.ts +29 -18
  58. package/src/Scene/Map.ts +8 -7
  59. package/src/Scene/Scene.ts +8 -4
  60. package/src/Tilemap/index.ts +3 -3
  61. package/src/clientEntryPoint.ts +6 -4
  62. package/src/index.ts +4 -1
  63. package/src/inject.ts +34 -0
@@ -1,18 +1,25 @@
1
1
  import { RpgPlugin, HookClient, DefaultInput } from '@rpgjs/common';
2
+ import { KeyboardControls } from '../KeyboardControls.js';
2
3
  import { Animation } from '../Effects/Animation.js';
3
4
  import { BehaviorSubject, Subject } from 'rxjs';
5
+ import { GameEngineClient } from '../GameEngine.js';
4
6
  import { Container } from 'pixi.js';
5
7
  import { RpgGui } from '../Gui/Gui.js';
6
8
  export class Scene {
7
- constructor(game) {
8
- this.game = game;
9
+ constructor(context) {
10
+ this.context = context;
9
11
  this.objects = new Map();
10
12
  this.animationLayer = new Container();
13
+ this.controls = this.context.inject(KeyboardControls);
11
14
  this.animations = [];
12
15
  this._data = new BehaviorSubject({
13
16
  data: {},
14
17
  partial: {}
15
18
  });
19
+ /**
20
+ * @deprecated Use `inject(GameEngineClient)` instead. Will be removed in v5
21
+ */
22
+ this.game = this.context.inject(GameEngineClient);
16
23
  /**
17
24
  * Listen to the movement of objects on stage
18
25
  *
@@ -37,7 +44,6 @@ export class Scene {
37
44
  */
38
45
  this.objectsMoving = new Subject();
39
46
  const { globalConfig } = this.game.clientEngine;
40
- this.controls = this.game.clientEngine.controls;
41
47
  const mergeInputs = {
42
48
  ...DefaultInput,
43
49
  ...(globalConfig.inputs || {})
@@ -1 +1 @@
1
- {"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/Scene/Scene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/Scene/Scene.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
+ import { InjectContext } from '@rpgjs/common';
1
2
  import ImageLayer from './ImageLayer.js';
2
3
  import TileLayer from './TileLayer.js';
3
4
  import TileSet from './TileSet.js';
4
5
  import { TiledMap, Layer } from '@rpgjs/tiled';
5
- import { RpgRenderer } from '../Renderer.js';
6
6
  import { Container, Graphics } from 'pixi.js';
7
7
  export interface MapInfo extends TiledMap {
8
8
  layers: Layer[];
9
9
  }
10
10
  export default class TileMap extends Container {
11
+ private context;
11
12
  private data;
12
- private renderer;
13
13
  background: Graphics;
14
14
  tilewidth: number;
15
15
  tileheight: number;
@@ -20,7 +20,8 @@ export default class TileMap extends Container {
20
20
  };
21
21
  private tilesLayer;
22
22
  private frameTile;
23
- constructor(data: MapInfo, renderer: RpgRenderer);
23
+ private renderer;
24
+ constructor(context: InjectContext, data: MapInfo);
24
25
  getData(): MapInfo;
25
26
  setBackgroundColor(color: string): void;
26
27
  private create;
@@ -4,13 +4,14 @@ import TileLayer from './TileLayer.js';
4
4
  import TileSet from './TileSet.js';
5
5
  import { log } from '../Logger.js';
6
6
  import { TiledLayerType } from '@rpgjs/tiled';
7
+ import { RpgRenderer } from '../Renderer.js';
7
8
  import { Container, Graphics } from 'pixi.js';
8
9
  const { intersection } = Utils;
9
10
  export default class TileMap extends Container {
10
- constructor(data, renderer) {
11
+ constructor(context, data) {
11
12
  super();
13
+ this.context = context;
12
14
  this.data = data;
13
- this.renderer = renderer;
14
15
  this.background = new Graphics();
15
16
  this.tilewidth = 0;
16
17
  this.tileheight = 0;
@@ -19,6 +20,7 @@ export default class TileMap extends Container {
19
20
  this.layers = {};
20
21
  this.tilesLayer = new Container();
21
22
  this.frameTile = 0;
23
+ this.renderer = this.context.inject(RpgRenderer);
22
24
  this.x = 0;
23
25
  this.y = 0;
24
26
  this.create(data);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tilemap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,OAAO,MAAM,WAAW,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAY,cAAc,EAAS,MAAM,cAAc,CAAA;AAE9D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE7C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAA;AAM9B,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,SAAS;IAa1C,YAAoB,IAAa,EAAU,QAAqB;QAC5D,KAAK,EAAE,CAAA;QADS,SAAI,GAAJ,IAAI,CAAS;QAAU,aAAQ,GAAR,QAAQ,CAAa;QAZhE,eAAU,GAAa,IAAI,QAAQ,EAAE,CAAA;QACrC,cAAS,GAAW,CAAC,CAAA;QACrB,eAAU,GAAW,CAAC,CAAA;QACd,uBAAkB,GAAW,EAAE,CAAA;QACvC,aAAQ,GAAc,EAAE,CAAA;QACxB,WAAM,GAEF,EAAE,CAAA;QACE,eAAU,GAAc,IAAI,SAAS,EAAE,CAAA;QACvC,cAAS,GAAW,CAAC,CAAA;QAKzB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAED,gBAAgB;IAChB,eAAe,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAA;YACtE,IAAI,CAAC,SAAS,EAAE,CAAA;SAClB;IACL,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAED,kBAAkB,CAAC,KAAa;QAC5B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC9B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CACpB,CAAC,EACD,CAAC,EACD,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,EACzC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAC9C,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAA;IAC7B,CAAC;IAEO,MAAM,CAAC,IAAa;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACzB,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACN,CAAC;IAED,gBAAgB;IAChB,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,QAAQ;QAC7C,MAAM,UAAU,GAAQ,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACnC,QAAQ,SAAS,CAAC,IAAI,EAAE;gBACpB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;wBACpC,IAAI,EAAE,IAAI;wBACV,MAAM,EAAE,CAAC,IAAU,EAAE,EAAE;4BACnB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;4BACjD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;4BAChC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;4BAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,SAAS,CAAA;4BAChD,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAA;4BAE3B,IAAI,MAAM,KAAK,SAAS,EAAE;gCACtB,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;6BACzC;4BAED,IAAI,CAAC,IAAI,SAAS;gCAAE,OAAO,KAAK,CAAA;4BAEhC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;4BAE7B,IAAI,OAAO,GAAG,MAAM,GAAG,KAAK,EAAE;gCAC1B,OAAO,IAAI,CAAA;6BACd;4BAED,kDAAkD;4BAClD,IAAI,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;gCAC/B,OAAO,KAAK,CAAA;6BACf;4BAED,IAAI,CAAC,QAAQ;gCAAE,OAAO,KAAK,CAAA;4BAE3B,mBAAmB;4BACnB,IAAI,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;gCAC1C,oCAAoC;gCACpC,mBAAmB;gCACnB,IAAI;gCACJ,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;gCAC7F,IAAI,CAAC,aAAa,EAAE;oCAChB,OAAO,IAAI,CAAA;iCACd;gCACD,OAAO,KAAK,CAAA;6BACf;4BACD,OAAO,IAAI,CAAA;wBACf,CAAC;qBACJ,CAAC,CAAA;oBACF,IAAI,IAAI,EAAE;wBACN,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;wBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAA;wBACnC,IAAI,IAAI,GAAG,CAAC,EAAE;4BACV,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAA;4BACpB,IAAI,CAAC,cAAc,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAA;4BACzD,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;4BACvC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;yBAC/B;wBACD,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;qBAC7B;oBACD,MAAM;iBACT;aACJ;QACL,CAAC,CAAC,CAAA;QACF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,gBAAgB;IAChB,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,SAAiB;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK;YAAE,MAAM,GAAG,CAAC,GAAG,SAAS,aAAa,CAAC,CAAA;QAChD,IAAI,KAAK,YAAY,SAAS,EAAE;YAC5B,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SACzB;IACL,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,OAAgE;QACjE,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAA;QAEhC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAEhD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACnC,QAAQ,SAAS,CAAC,IAAI,EAAE;gBACpB,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;oBACtB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;oBAC/D,IAAI,OAAO,EAAE,SAAS;wBAAE,SAAS,CAAC,MAAM,EAAE,CAAA;oBAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;oBACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;oBACnC,MAAM;iBACT;gBACD,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC;oBACvB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;oBAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA;oBACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;oBACpC,MAAM;iBACT;aACJ;QACL,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tilemap/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { HookClient, loadModules } from '@rpgjs/common';
2
- import { GameEngineClient } from './GameEngine.js';
1
+ import { InjectContext, HookClient, loadModules } from '@rpgjs/common';
3
2
  import { RpgClientEngine } from './RpgClientEngine.js';
3
+ import { setInject } from './inject.js';
4
4
  export default (modules, options) => {
5
5
  if (!options.globalConfig)
6
6
  options.globalConfig = {};
@@ -41,8 +41,8 @@ export default (modules, options) => {
41
41
  engine: relationsEngine
42
42
  }
43
43
  });
44
- const gameEngine = new GameEngineClient();
45
- const clientEngine = new RpgClientEngine(gameEngine, options);
46
- return clientEngine;
44
+ const context = new InjectContext();
45
+ setInject(context);
46
+ return context.inject(RpgClientEngine, [options]);
47
47
  };
48
48
  //# sourceMappingURL=clientEntryPoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientEntryPoint.js","sourceRoot":"","sources":["../src/clientEntryPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAc,MAAM,eAAe,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAgGnD,eAAe,CAAC,OAAqB,EAAE,OAAmC,EAAmB,EAAE;IAE3F,IAAI,CAAC,OAAO,CAAC,YAAY;QAAE,OAAO,CAAC,YAAY,GAAG,EAAE,CAAA;IAEpD,OAAO,GAAG;QACN,GAAG,OAAO,CAAC,YAAY;QACvB,GAAG,OAAO;KACb,CAAA;IAED,MAAM,SAAS,GAAG;QACd,MAAM,EAAE,UAAU,CAAC,SAAS;QAC5B,SAAS,EAAE,UAAU,CAAC,YAAY;QAClC,QAAQ,EAAE,UAAU,CAAC,YAAY;QACjC,SAAS,EAAE,UAAU,CAAC,aAAa;QACnC,MAAM,EAAE,UAAU,CAAC,UAAU;KAChC,CAAA;IAED,MAAM,YAAY,GAAG;QACjB,WAAW,EAAE,UAAU,CAAC,cAAc;QACtC,cAAc,EAAE,UAAU,CAAC,iBAAiB;QAC5C,eAAe,EAAE,UAAU,CAAC,kBAAkB;QAC9C,cAAc,EAAE,UAAU,CAAC,iBAAiB;QAC5C,YAAY,EAAE,UAAU,CAAC,eAAe;QACxC,SAAS,EAAE,UAAU,CAAC,cAAc;QACpC,MAAM,EAAE,UAAU,CAAC,SAAS;KAC/B,CAAA;IAED,MAAM,eAAe,GAAG;QACpB,OAAO,EAAE,UAAU,CAAC,KAAK;QACzB,MAAM,EAAE,UAAU,CAAC,IAAI;QACvB,WAAW,EAAE,UAAU,CAAC,SAAS;QACjC,YAAY,EAAE,UAAU,CAAC,UAAU;QACnC,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,OAAO,EAAE,UAAU,CAAC,SAAS;QAC7B,cAAc,EAAE,UAAU,CAAC,YAAY;KAC1C,CAAA;IAED,WAAW,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACP,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,eAAe;SAC1B;KACJ,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAA;IACzC,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC7D,OAAO,YAAY,CAAA;AACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"clientEntryPoint.js","sourceRoot":"","sources":["../src/clientEntryPoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAc,MAAM,eAAe,CAAA;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAgGpC,eAAe,CAAC,OAAqB,EAAE,OAAmC,EAAmB,EAAE;IAE3F,IAAI,CAAC,OAAO,CAAC,YAAY;QAAE,OAAO,CAAC,YAAY,GAAG,EAAE,CAAA;IAEpD,OAAO,GAAG;QACN,GAAG,OAAO,CAAC,YAAY;QACvB,GAAG,OAAO;KACb,CAAA;IAED,MAAM,SAAS,GAAG;QACd,MAAM,EAAE,UAAU,CAAC,SAAS;QAC5B,SAAS,EAAE,UAAU,CAAC,YAAY;QAClC,QAAQ,EAAE,UAAU,CAAC,YAAY;QACjC,SAAS,EAAE,UAAU,CAAC,aAAa;QACnC,MAAM,EAAE,UAAU,CAAC,UAAU;KAChC,CAAA;IAED,MAAM,YAAY,GAAG;QACjB,WAAW,EAAE,UAAU,CAAC,cAAc;QACtC,cAAc,EAAE,UAAU,CAAC,iBAAiB;QAC5C,eAAe,EAAE,UAAU,CAAC,kBAAkB;QAC9C,cAAc,EAAE,UAAU,CAAC,iBAAiB;QAC5C,YAAY,EAAE,UAAU,CAAC,eAAe;QACxC,SAAS,EAAE,UAAU,CAAC,cAAc;QACpC,MAAM,EAAE,UAAU,CAAC,SAAS;KAC/B,CAAA;IAED,MAAM,eAAe,GAAG;QACpB,OAAO,EAAE,UAAU,CAAC,KAAK;QACzB,MAAM,EAAE,UAAU,CAAC,IAAI;QACvB,WAAW,EAAE,UAAU,CAAC,SAAS;QACjC,YAAY,EAAE,UAAU,CAAC,UAAU;QACnC,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,OAAO,EAAE,UAAU,CAAC,SAAS;QAC7B,cAAc,EAAE,UAAU,CAAC,YAAY;KAC1C,CAAA;IAED,WAAW,CAAC,OAAO,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACP,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,eAAe;SAC1B;KACJ,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAA;IACnC,SAAS,CAAC,OAAO,CAAC,CAAA;IAElB,OAAO,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA"}
package/lib/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { Direction, Control, Input, PrebuiltGui, HookServer, HookClient, RpgPlugin, RpgModule, RpgCommonPlayer as RpgSpriteLogic } from '@rpgjs/common';
2
2
  export { default as entryPoint } from './clientEntryPoint.js';
3
3
  export type { RpgClient, RpgSceneHooks, RpgSceneMapHooks, RpgSpriteHooks, RpgClientEngineHooks } from './RpgClient.js';
4
+ export { RpgRenderer } from './Renderer.js';
4
5
  export { Scene as RpgScene } from './Scene/Scene.js';
5
6
  export { RpgClientEngine } from './RpgClientEngine.js';
6
7
  export { Spritesheet } from './Sprite/Spritesheet.js';
@@ -16,8 +17,10 @@ export { SceneMap as RpgSceneMap } from './Scene/Map.js';
16
17
  export { RpgGui } from './Gui/Gui.js';
17
18
  export { Timeline, Ease } from './Effects/Timeline.js';
18
19
  export { RpgComponent, RpgComponent as RpgSprite } from './Components/Component.js';
20
+ export { KeyboardControls } from './KeyboardControls.js';
19
21
  export { World, room } from 'simple-room-client';
20
22
  export declare const RpgResource: {
21
23
  spritesheets: Map<string, any>;
22
24
  sounds: Map<any, any>;
23
25
  };
26
+ export { inject } from './inject.js';
package/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { Direction, Control, Input, PrebuiltGui, HookServer, HookClient, RpgPlugin, RpgModule, RpgCommonPlayer as RpgSpriteLogic } from '@rpgjs/common';
2
2
  export { default as entryPoint } from './clientEntryPoint.js';
3
+ export { RpgRenderer } from './Renderer.js';
3
4
  export { Scene as RpgScene } from './Scene/Scene.js';
4
5
  export { RpgClientEngine } from './RpgClientEngine.js';
5
6
  export { Spritesheet } from './Sprite/Spritesheet.js';
@@ -14,6 +15,7 @@ export { SceneMap as RpgSceneMap } from './Scene/Map.js';
14
15
  export { RpgGui } from './Gui/Gui.js';
15
16
  export { Timeline, Ease } from './Effects/Timeline.js';
16
17
  export { RpgComponent, RpgComponent as RpgSprite } from './Components/Component.js';
18
+ export { KeyboardControls } from './KeyboardControls.js';
17
19
  export { World, room } from 'simple-room-client';
18
20
  import { spritesheets } from './Sprite/Spritesheets.js';
19
21
  import { sounds } from './Sound/Sounds.js';
@@ -21,4 +23,5 @@ export const RpgResource = {
21
23
  spritesheets,
22
24
  sounds
23
25
  };
26
+ export { inject } from './inject.js';
24
27
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,eAAe,CAAA;AACvJ,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAO,QAAQ,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,YAAY;IACZ,MAAM;CACT,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,eAAe,CAAA;AACvJ,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAO,QAAQ,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,YAAY;IACZ,MAAM;CACT,CAAA;AACD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { InjectContext } from "@rpgjs/common";
2
+ /**
3
+ * Dependency injection function for RPGJS client side.
4
+ *
5
+ * This client-side `inject` function is used to retrieve instances of various classes within the RPGJS framework,
6
+ * specifically for client-side modules. It enables developers to access singleton instances of key classes such as
7
+ * `RpgClientEngine`, `KeyboardControls`, and `RpgRenderer`. Utilizing `inject` on the client side promotes modular
8
+ * and maintainable code by simplifying dependency management.
9
+ *
10
+ * @template T The class type that you want to retrieve an instance of, relevant to client-side modules.
11
+ * @returns {T} Returns the singleton instance of the specified class, ensuring only one instance is used client-side.
12
+ * @since 4.2.0
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Example of injecting the RpgClientEngine
17
+ * import { inject, RpgClientEngine } from '@rpgjs/client'
18
+ * const client = inject(RpgClientEngine)
19
+ * ```
20
+ */
21
+ export declare function inject<T>(service: new (...args: any[]) => T, args?: any[]): T;
22
+ export declare function setInject(context: InjectContext): void;
23
+ export declare function clearInject(): void;
package/lib/inject.js ADDED
@@ -0,0 +1,30 @@
1
+ let instanceContext = null;
2
+ /**
3
+ * Dependency injection function for RPGJS client side.
4
+ *
5
+ * This client-side `inject` function is used to retrieve instances of various classes within the RPGJS framework,
6
+ * specifically for client-side modules. It enables developers to access singleton instances of key classes such as
7
+ * `RpgClientEngine`, `KeyboardControls`, and `RpgRenderer`. Utilizing `inject` on the client side promotes modular
8
+ * and maintainable code by simplifying dependency management.
9
+ *
10
+ * @template T The class type that you want to retrieve an instance of, relevant to client-side modules.
11
+ * @returns {T} Returns the singleton instance of the specified class, ensuring only one instance is used client-side.
12
+ * @since 4.2.0
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * // Example of injecting the RpgClientEngine
17
+ * import { inject, RpgClientEngine } from '@rpgjs/client'
18
+ * const client = inject(RpgClientEngine)
19
+ * ```
20
+ */
21
+ export function inject(service, args = []) {
22
+ return instanceContext.inject(service, args);
23
+ }
24
+ export function setInject(context) {
25
+ instanceContext = context;
26
+ }
27
+ export function clearInject() {
28
+ instanceContext = null;
29
+ }
30
+ //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAEA,IAAI,eAAe,GAAyB,IAAI,CAAA;AAEhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,MAAM,CAAI,OAAkC,EAAE,OAAc,EAAE;IAC1E,OAAO,eAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC5C,eAAe,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,eAAe,GAAG,IAAI,CAAA;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpgjs/client",
3
- "version": "4.1.2",
3
+ "version": "4.2.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "dependencies": {
30
30
  "@nanostores/react": "^0.7.1",
31
31
  "@pixi/tilemap": "^4.0.0",
32
- "@rpgjs/common": "^4.1.1",
32
+ "@rpgjs/common": "^4.2.0",
33
33
  "@rpgjs/tiled": "^4.0.5",
34
34
  "@rpgjs/types": "^4.0.5",
35
35
  "@types/howler": "2.2.7",
@@ -41,13 +41,13 @@
41
41
  "react": "^18.2.0",
42
42
  "react-dom": "^18.2.0",
43
43
  "rxjs": "7.8.0",
44
- "simple-room-client": "^2.0.6",
44
+ "simple-room-client": "^3.0.0",
45
45
  "vue": "^3.2.47"
46
46
  },
47
- "gitHead": "9e5c8ba4fcc73e0e156df69f930012c58349c3f5",
47
+ "gitHead": "afba6593c6d060c46a67be465bef2abd401d4c8d",
48
48
  "devDependencies": {
49
49
  "@babel/types": "^7.22.11",
50
- "@rpgjs/compiler": "^4.1.1",
50
+ "@rpgjs/compiler": "^4.2.0",
51
51
  "@types/css-font-loading-module": "^0.0.8",
52
52
  "@types/node": "^18.16.0",
53
53
  "@types/react": "^18.2.25",
@@ -3,14 +3,16 @@ import { RpgClientEngine } from "../RpgClientEngine";
3
3
  import { FrameOptions } from "../Sprite/Spritesheet";
4
4
  import { Timeline } from "./Timeline";
5
5
  import { Container } from "pixi.js"
6
+ import { InjectContext } from "@rpgjs/common";
6
7
 
7
8
  export class TransitionScene {
8
9
  private frameIndex: number = 0
9
10
  private animations: FrameOptions[][] = []
10
11
  private updateSubscription: Subscription
11
12
  private complete: Function = () => {}
13
+ private clientEngine: RpgClientEngine = this.context.inject(RpgClientEngine)
12
14
 
13
- constructor(private clientEngine: RpgClientEngine, private container: Container) { }
15
+ constructor(private context: InjectContext, private container: Container) { }
14
16
 
15
17
  addFadeIn() {
16
18
  return this.addFading(1, 0)
package/src/GameEngine.ts CHANGED
@@ -49,8 +49,8 @@ export class GameEngineClient extends RpgCommonGame {
49
49
  }
50
50
  }
51
51
 
52
- constructor() {
53
- super(GameSide.Client)
52
+ initialize() {
53
+ super.initialize(GameSide.Client)
54
54
  }
55
55
 
56
56
  private _get(prop: '_objects' | '_shapes', id: string): ObjectFixture | null {
package/src/Gui/Gui.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { RpgCommonPlayer, Utils } from '@rpgjs/common'
1
+ import { InjectContext, RpgCommonPlayer, Utils } from '@rpgjs/common'
2
2
  import { RpgSound } from '../Sound/RpgSound'
3
3
  import { RpgClientEngine, RpgResource } from '../index'
4
4
  import { RpgRenderer } from '../Renderer'
@@ -36,10 +36,10 @@ export class Gui {
36
36
  public currentScene: Scene | null = null
37
37
  private librariesInstances: any[] = []
38
38
 
39
- async _initialize(clientEngine: RpgClientEngine, guiEl: HTMLDivElement) {
40
- this.clientEngine = clientEngine
41
- this.renderer = clientEngine.renderer
42
- this.gameEngine = clientEngine.gameEngine
39
+ async _initialize(context: InjectContext, guiEl: HTMLDivElement) {
40
+ this.clientEngine = context.inject(RpgClientEngine)
41
+ this.renderer = context.inject(RpgRenderer)
42
+ this.gameEngine = context.inject(GameEngineClient)
43
43
  const { gui } = this.renderer.options
44
44
 
45
45
  for (let ui of gui) {
package/src/Gui/React.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { createRoot } from 'react-dom/client';
2
2
  import { createElement, Fragment, useState, createContext, useEffect, useContext, useCallback, useSyncExternalStore, useRef } from 'react'
3
3
  import { RpgClientEngine } from '../RpgClientEngine';
4
- import { RpgRenderer } from '../Renderer';
4
+ import { EVENTS_MAP, RpgRenderer } from '../Renderer';
5
5
  import { BehaviorSubject, map, tap, combineLatest, Subject } from 'rxjs';
6
6
  import type { Gui } from './Gui';
7
+ import { inject } from '../inject';
7
8
 
8
9
  export { useStore } from '@nanostores/react'
9
10
  export const RpgReactContext = createContext({} as any)
@@ -51,6 +52,30 @@ export const useCurrentPlayer = () => {
51
52
  return useSyncExternalStore(subscribe, () => currentPlayerRef.current);
52
53
  }
53
54
 
55
+ export const useEventPropagator = () => {
56
+ const ref = useRef(null);
57
+ useEffect(() => {
58
+ if (ref.current) {
59
+ const element = ref.current as HTMLElement;
60
+ const eventListeners = {};
61
+ const renderer = inject(RpgRenderer)
62
+
63
+ EVENTS_MAP.MouseEvent.forEach(eventType => {
64
+ const listener = event => renderer.propagateEvent(event)
65
+ element.addEventListener(eventType, listener);
66
+ eventListeners[eventType] = listener;
67
+ });
68
+
69
+ return () => {
70
+ EVENTS_MAP.MouseEvent.forEach(eventType => {
71
+ element.removeEventListener(eventType, eventListeners[eventType]);
72
+ });
73
+ };
74
+ }
75
+ }, [ref]);
76
+ return ref
77
+ };
78
+
54
79
  export class ReactGui {
55
80
  private app: any
56
81
  private clientEngine: RpgClientEngine
package/src/Gui/Vue.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveDynamicComponent as _resolveDynamicComponent, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, createBlock as _createBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from "vue"
2
2
  import { App, ComponentPublicInstance, createApp } from 'vue'
3
3
  import { RpgCommonPlayer, Utils } from '@rpgjs/common'
4
- import { RpgRenderer } from '../Renderer'
4
+ import { EVENTS_MAP, RpgRenderer } from '../Renderer'
5
5
  import { GameEngineClient } from '../GameEngine'
6
6
  import { RpgClientEngine } from '../RpgClientEngine'
7
7
  import type { Gui } from './Gui'
@@ -33,7 +33,7 @@ const _hoisted_1 = {
33
33
  style: { "position": "absolute", "top": "0", "left": "0" }
34
34
  }
35
35
  function render(_ctx, _cache) {
36
- return (_openBlock(), _createElementBlock("div", { }, [
36
+ return (_openBlock(), _createElementBlock("div", {}, [
37
37
  (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.fixedGui, (ui) => {
38
38
  return (_openBlock(), _createElementBlock(_Fragment, null, [
39
39
  (ui.display)
@@ -49,7 +49,7 @@ function render(_ctx, _cache) {
49
49
  return (_openBlock(), _createElementBlock("div", {
50
50
  style: _normalizeStyle(_ctx.tooltipPosition(tooltip.position))
51
51
  }, [
52
- (_openBlock(), _createBlock(_resolveDynamicComponent(ui.name), _mergeProps({ ...ui.data, spriteData: tooltip, style: { pointerEvents: 'auto' } }, {
52
+ (_openBlock(), _createBlock(_resolveDynamicComponent(ui.name), _mergeProps({ ...ui.data, spriteData: tooltip, style: { pointerEvents: 'auto' } }, {
53
53
  ref_for: true,
54
54
  ref: ui.name
55
55
  }), null, 16 /* FULL_PROPS */))
@@ -99,9 +99,6 @@ export class VueGui {
99
99
  methods: {
100
100
  tooltipPosition: parentGui.tooltipPosition.bind(parentGui),
101
101
  tooltipFilter: parentGui.tooltipFilter.bind(parentGui)
102
- },
103
- mounted() {
104
-
105
102
  }
106
103
  }
107
104
 
@@ -113,6 +110,27 @@ export class VueGui {
113
110
  this.app.component(ui.name, ui.gui)
114
111
  }
115
112
 
113
+ this.app.directive('propagate', {
114
+ mounted: (el, binding) => {
115
+ el.eventListeners = {};
116
+ EVENTS_MAP.MouseEvent.forEach(eventType => {
117
+ const callback = (ev) => {
118
+ this.renderer.propagateEvent(ev);
119
+ };
120
+ el.eventListeners[eventType] = callback;
121
+ el.addEventListener(eventType, callback);
122
+ });
123
+ },
124
+ unmounted(el, binding) {
125
+ EVENTS_MAP.MouseEvent.forEach(eventType => {
126
+ const callback = el.eventListeners[eventType];
127
+ if (callback) {
128
+ el.removeEventListener(eventType, callback);
129
+ }
130
+ });
131
+ }
132
+ })
133
+
116
134
  this.vm = this.app.mount(rootEl) as VueInstance
117
135
  this.renderer.app = this.app
118
136
  this.renderer.vm = this.vm
@@ -1,4 +1,4 @@
1
- import { DefaultInput, Direction, Input, Utils } from '@rpgjs/common'
1
+ import { DefaultInput, Direction, InjectContext, Input, Utils } from '@rpgjs/common'
2
2
  import { ControlOptions, Controls } from '@rpgjs/types';
3
3
  import { RpgClientEngine } from './RpgClientEngine';
4
4
 
@@ -191,6 +191,8 @@ const inverseKeyCodeTable = inverse(keyCodeTable)
191
191
  type BoundKey = { actionName: string, options: ControlOptions, parameters?: any }
192
192
 
193
193
  export class KeyboardControls {
194
+ private clientEngine: RpgClientEngine = this.context.inject(RpgClientEngine)
195
+
194
196
  private keyState: {
195
197
  [keyName: string]: {
196
198
  isDown: boolean,
@@ -204,8 +206,8 @@ export class KeyboardControls {
204
206
  private lastKeyPressed: number | null = null
205
207
  private _controlsOptions: Controls = {}
206
208
 
207
- constructor(private clientEngine: RpgClientEngine) {
208
- const { globalConfig } = clientEngine
209
+ constructor(private context: InjectContext) {
210
+ const { globalConfig } = this.clientEngine
209
211
  this.setupListeners();
210
212
  this.setInputs({
211
213
  ...DefaultInput,
@@ -340,10 +342,11 @@ export class KeyboardControls {
340
342
  * From the name of the entry, we retrieve the control information
341
343
  *
342
344
  * ```ts
343
- * import { Input } from '@rpgjs/client'
345
+ * import { Input, inject, KeyboardControls } from '@rpgjs/client'
344
346
  *
345
- * // In method hooks, client is RpgClientEngine
346
- * client.controls.getControl(Input.Enter)
347
+ * const controls = inject(KeyboardControls)
348
+ * controls.getControl(Input.Enter)
349
+
347
350
  * if (control) {
348
351
  * console.log(control.actionName) // action
349
352
  * }
@@ -358,23 +361,36 @@ export class KeyboardControls {
358
361
  return this.boundKeys[inputName]
359
362
  }
360
363
 
364
+ /**
365
+ * Returns all controls
366
+ *
367
+ * @method getControls()
368
+ * @since 4.2.0
369
+ * @returns { { [key: string]: BoundKey } }
370
+ * @memberof KeyboardControls
371
+ */
372
+ getControls(): { [key: string]: BoundKey } {
373
+ return this.boundKeys
374
+ }
375
+
361
376
  /**
362
377
  * Triggers an input according to the name of the control
363
378
  *
364
379
  * ```ts
365
- * import { Control } from '@rpgjs/client'
380
+ * import { Control, inject, KeyboardControls } from '@rpgjs/client'
366
381
  *
367
- * // In method hooks, client is RpgClientEngine
368
- * client.controls.applyControl(Control.Action)
382
+ * const controls = inject(KeyboardControls)
383
+ * controls.applyControl(Control.Action)
369
384
  * ```
370
385
  *
371
386
  * You can put a second parameter or indicate on whether the key is pressed or released
372
387
  *
373
388
  * ```ts
374
- * import { Control } from '@rpgjs/client'
389
+ * import { Control, inject, KeyboardControls } from '@rpgjs/client'
375
390
  *
376
- * client.controls.applyControl(Control.Up, true) // keydown
377
- * client.controls.applyControl(Control.Up, false) // keyup
391
+ * const controls = inject(KeyboardControls)
392
+ * controls.applyControl(Control.Up, true) // keydown
393
+ * controls.applyControl(Control.Up, false) // keyup
378
394
  * ```
379
395
  * @title Apply Control
380
396
  * @method applyControl(controlName,isDown)
@@ -439,10 +455,10 @@ export class KeyboardControls {
439
455
  * * delay.otherControls {string | string[]} Indicates the other controls that will also have the delay at the same time
440
456
  *
441
457
  * ```ts
442
- * import { Control, Input } from '@rpgjs/client'
458
+ * import { Control, Input, inject, KeyboardControls } from '@rpgjs/client'
443
459
  *
444
- * // In method hooks, client is RpgClientEngine
445
- * client.controls.setInputs({
460
+ * const controls = inject(KeyboardControls)
461
+ * controls.setInputs({
446
462
  [Control.Up]: {
447
463
  repeat: true,
448
464
  bind: Input.Up
@@ -505,6 +521,18 @@ export class KeyboardControls {
505
521
  * Control.Action | action
506
522
  * Control.Back | back
507
523
  *
524
+ * @enum {string} Mouse Event
525
+ *
526
+ * click | Click
527
+ * dblclick | Double Click
528
+ * mousedown | Mouse Down
529
+ * mouseup | Mouse Up
530
+ * mouseover | Mouse Over
531
+ * mousemove | Mouse Move
532
+ * mouseout | Mouse Out
533
+ * contextmenu | Context Menu
534
+ *
535
+ *
508
536
  * @enum {string} Input
509
537
  *
510
538
  * break | Pause