@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.
- package/CHANGELOG.md +20 -0
- package/browser/{React-da18564b.js → React-c40e162b.js} +25 -0
- package/browser/index-9602bbc0.js +44217 -0
- package/browser/manifest.json +10 -1
- package/browser/rpg.client.js +33 -44122
- package/browser/rpg.client.umd.cjs +458 -337
- package/lib/Effects/TransitionScene.d.ts +4 -3
- package/lib/Effects/TransitionScene.js +4 -2
- package/lib/Effects/TransitionScene.js.map +1 -1
- package/lib/GameEngine.d.ts +1 -1
- package/lib/GameEngine.js +4 -1
- package/lib/GameEngine.js.map +1 -1
- package/lib/Gui/Gui.d.ts +2 -1
- package/lib/Gui/Gui.js +7 -5
- package/lib/Gui/Gui.js.map +1 -1
- package/lib/Gui/React.d.ts +1 -0
- package/lib/Gui/React.js +23 -0
- package/lib/Gui/React.js.map +1 -1
- package/lib/Gui/Vue.js +21 -2
- package/lib/Gui/Vue.js.map +1 -1
- package/lib/KeyboardControls.d.ts +40 -14
- package/lib/KeyboardControls.js +42 -15
- package/lib/KeyboardControls.js.map +1 -1
- package/lib/Renderer.d.ts +13 -5
- package/lib/Renderer.js +40 -16
- package/lib/Renderer.js.map +1 -1
- package/lib/Resources.js.map +1 -1
- package/lib/RpgClientEngine.d.ts +10 -4
- package/lib/RpgClientEngine.js +26 -17
- package/lib/RpgClientEngine.js.map +1 -1
- package/lib/Scene/Map.d.ts +4 -5
- package/lib/Scene/Map.js +6 -4
- package/lib/Scene/Map.js.map +1 -1
- package/lib/Scene/Scene.d.ts +7 -2
- package/lib/Scene/Scene.js +9 -3
- package/lib/Scene/Scene.js.map +1 -1
- package/lib/Tilemap/index.d.ts +4 -3
- package/lib/Tilemap/index.js +4 -2
- package/lib/Tilemap/index.js.map +1 -1
- package/lib/clientEntryPoint.js +5 -5
- package/lib/clientEntryPoint.js.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -1
- package/lib/inject.d.ts +23 -0
- package/lib/inject.js +30 -0
- package/lib/inject.js.map +1 -0
- package/package.json +5 -5
- package/src/Effects/TransitionScene.ts +3 -1
- package/src/GameEngine.ts +2 -2
- package/src/Gui/Gui.ts +5 -5
- package/src/Gui/React.ts +26 -1
- package/src/Gui/Vue.ts +24 -6
- package/src/KeyboardControls.ts +43 -15
- package/src/Renderer.ts +44 -19
- package/src/Resources.ts +0 -1
- package/src/RpgClientEngine.ts +29 -18
- package/src/Scene/Map.ts +8 -7
- package/src/Scene/Scene.ts +8 -4
- package/src/Tilemap/index.ts +3 -3
- package/src/clientEntryPoint.ts +6 -4
- package/src/index.ts +4 -1
- package/src/inject.ts +34 -0
package/lib/Scene/Scene.js
CHANGED
|
@@ -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(
|
|
8
|
-
this.
|
|
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 || {})
|
package/lib/Scene/Scene.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/Scene/Scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Scene.js","sourceRoot":"","sources":["../../src/Scene/Scene.ts"],"names":[],"mappings":"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"}
|
package/lib/Tilemap/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
23
|
+
private renderer;
|
|
24
|
+
constructor(context: InjectContext, data: MapInfo);
|
|
24
25
|
getData(): MapInfo;
|
|
25
26
|
setBackgroundColor(color: string): void;
|
|
26
27
|
private create;
|
package/lib/Tilemap/index.js
CHANGED
|
@@ -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(
|
|
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);
|
package/lib/Tilemap/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tilemap/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Tilemap/index.ts"],"names":[],"mappings":"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"}
|
package/lib/clientEntryPoint.js
CHANGED
|
@@ -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
|
|
45
|
-
|
|
46
|
-
return
|
|
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;
|
|
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"}
|
package/lib/inject.d.ts
ADDED
|
@@ -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.
|
|
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.
|
|
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": "^
|
|
44
|
+
"simple-room-client": "^3.0.0",
|
|
45
45
|
"vue": "^3.2.47"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "afba6593c6d060c46a67be465bef2abd401d4c8d",
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@babel/types": "^7.22.11",
|
|
50
|
-
"@rpgjs/compiler": "^4.
|
|
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
|
|
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
|
-
|
|
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(
|
|
40
|
-
this.clientEngine =
|
|
41
|
-
this.renderer =
|
|
42
|
-
this.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
|
package/src/KeyboardControls.ts
CHANGED
|
@@ -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
|
|
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
|
-
*
|
|
346
|
-
*
|
|
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
|
-
*
|
|
368
|
-
*
|
|
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
|
-
*
|
|
377
|
-
*
|
|
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
|
-
*
|
|
445
|
-
*
|
|
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
|