@rpgjs/client 4.3.0 → 5.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Game/EffectManager.d.ts +5 -0
- package/dist/Game/Event.d.ts +4 -0
- package/dist/Game/Map.d.ts +7 -0
- package/dist/Game/Player.d.ts +4 -0
- package/dist/Gui/Gui.d.ts +23 -0
- package/{lib → dist}/RpgClient.d.ts +9 -6
- package/dist/RpgClientEngine.d.ts +43 -0
- package/dist/components/effects/index.d.ts +4 -0
- package/dist/components/gui/index.d.ts +3 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/core/inject.d.ts +5 -0
- package/dist/core/setup.d.ts +6 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/index10.js +8 -0
- package/dist/index10.js.map +1 -0
- package/dist/index11.js +10 -0
- package/dist/index11.js.map +1 -0
- package/dist/index12.js +8 -0
- package/dist/index12.js.map +1 -0
- package/dist/index13.js +17 -0
- package/dist/index13.js.map +1 -0
- package/dist/index14.js +50 -0
- package/dist/index14.js.map +1 -0
- package/dist/index15.js +191 -0
- package/dist/index15.js.map +1 -0
- package/dist/index16.js +9 -0
- package/dist/index16.js.map +1 -0
- package/dist/index17.js +387 -0
- package/dist/index17.js.map +1 -0
- package/dist/index18.js +31 -0
- package/dist/index18.js.map +1 -0
- package/dist/index19.js +24 -0
- package/dist/index19.js.map +1 -0
- package/dist/index2.js +112 -0
- package/dist/index2.js.map +1 -0
- package/dist/index20.js +2421 -0
- package/dist/index20.js.map +1 -0
- package/dist/index21.js +114 -0
- package/dist/index21.js.map +1 -0
- package/dist/index22.js +109 -0
- package/dist/index22.js.map +1 -0
- package/dist/index23.js +71 -0
- package/dist/index23.js.map +1 -0
- package/dist/index24.js +21 -0
- package/dist/index24.js.map +1 -0
- package/dist/index25.js +41 -0
- package/dist/index25.js.map +1 -0
- package/dist/index26.js +5 -0
- package/dist/index26.js.map +1 -0
- package/dist/index27.js +322 -0
- package/dist/index27.js.map +1 -0
- package/dist/index28.js +25 -0
- package/dist/index28.js.map +1 -0
- package/dist/index29.js +11 -0
- package/dist/index29.js.map +1 -0
- package/dist/index3.js +87 -0
- package/dist/index3.js.map +1 -0
- package/dist/index30.js +11 -0
- package/dist/index30.js.map +1 -0
- package/dist/index31.js +174 -0
- package/dist/index31.js.map +1 -0
- package/dist/index32.js +501 -0
- package/dist/index32.js.map +1 -0
- package/dist/index33.js +12 -0
- package/dist/index33.js.map +1 -0
- package/dist/index34.js +4403 -0
- package/dist/index34.js.map +1 -0
- package/dist/index35.js +91 -0
- package/dist/index35.js.map +1 -0
- package/dist/index36.js +61 -0
- package/dist/index36.js.map +1 -0
- package/dist/index37.js +20 -0
- package/dist/index37.js.map +1 -0
- package/dist/index38.js +20 -0
- package/dist/index38.js.map +1 -0
- package/dist/index4.js +54 -0
- package/dist/index4.js.map +1 -0
- package/dist/index5.js +15 -0
- package/dist/index5.js.map +1 -0
- package/dist/index6.js +17 -0
- package/dist/index6.js.map +1 -0
- package/dist/index7.js +31 -0
- package/dist/index7.js.map +1 -0
- package/dist/index8.js +90 -0
- package/dist/index8.js.map +1 -0
- package/dist/index9.js +76 -0
- package/dist/index9.js.map +1 -0
- package/dist/module.d.ts +14 -0
- package/dist/presets/index.d.ts +22 -0
- package/{lib/Presets/AnimationSpritesheet.d.ts → dist/presets/rmspritesheet.d.ts} +6 -2
- package/dist/services/AbstractSocket.d.ts +15 -0
- package/dist/services/loadMap.d.ts +14 -0
- package/dist/services/mmorpg.d.ts +32 -0
- package/dist/services/standalone.d.ts +34 -0
- package/package.json +25 -41
- package/src/Game/EffectManager.ts +20 -0
- package/src/Game/Event.ts +5 -0
- package/src/Game/Map.ts +10 -0
- package/src/Game/Object.ts +16 -0
- package/src/Game/Player.ts +5 -0
- package/src/Gui/Gui.ts +80 -533
- package/src/RpgClient.ts +9 -5
- package/src/RpgClientEngine.ts +135 -818
- package/src/components/character.ce +104 -0
- package/src/components/effects/animation.ce +19 -0
- package/src/components/effects/hit.ce +87 -0
- package/src/components/effects/index.ts +7 -0
- package/src/components/gui/dialogbox/index.ce +194 -0
- package/src/components/gui/dialogbox/itemMenu.ce +23 -0
- package/src/components/gui/dialogbox/selection.ce +67 -0
- package/src/components/gui/index.ts +5 -0
- package/src/components/index.ts +3 -0
- package/src/components/scenes/canvas.ce +51 -0
- package/src/components/scenes/draw-map.ce +56 -0
- package/src/components/scenes/element-map.ce +23 -0
- package/src/components/scenes/event-layer.ce +20 -0
- package/src/core/inject.ts +17 -0
- package/src/core/setup.ts +18 -0
- package/src/index.ts +13 -29
- package/src/module.ts +93 -0
- package/src/presets/index.ts +5 -0
- package/src/{Presets/AnimationSpritesheet.ts → presets/rmspritesheet.ts} +4 -5
- package/src/services/AbstractSocket.ts +14 -0
- package/src/services/loadMap.ts +33 -0
- package/src/services/mmorpg.ts +64 -0
- package/src/services/standalone.ts +101 -0
- package/src/types/canvas-engine.d.ts +26 -0
- package/tsconfig.json +8 -3
- package/vite.config.ts +34 -0
- package/CHANGELOG.md +0 -189
- package/LICENSE +0 -19
- package/browser/React-ece4b906.js +0 -195
- package/browser/index-ba657126.js +0 -44229
- package/browser/manifest.json +0 -21
- package/browser/rpg.client.js +0 -40
- package/browser/rpg.client.umd.cjs +0 -44456
- package/lib/Components/AbstractComponent.d.ts +0 -32
- package/lib/Components/AbstractComponent.js +0 -93
- package/lib/Components/AbstractComponent.js.map +0 -1
- package/lib/Components/BarComponent.d.ts +0 -21
- package/lib/Components/BarComponent.js +0 -169
- package/lib/Components/BarComponent.js.map +0 -1
- package/lib/Components/Component.d.ts +0 -124
- package/lib/Components/Component.js +0 -425
- package/lib/Components/Component.js.map +0 -1
- package/lib/Components/DebugComponent.d.ts +0 -11
- package/lib/Components/DebugComponent.js +0 -32
- package/lib/Components/DebugComponent.js.map +0 -1
- package/lib/Components/ImageComponent.d.ts +0 -11
- package/lib/Components/ImageComponent.js +0 -30
- package/lib/Components/ImageComponent.js.map +0 -1
- package/lib/Components/ShapeComponent.d.ts +0 -11
- package/lib/Components/ShapeComponent.js +0 -57
- package/lib/Components/ShapeComponent.js.map +0 -1
- package/lib/Components/TextComponent.d.ts +0 -11
- package/lib/Components/TextComponent.js +0 -35
- package/lib/Components/TextComponent.js.map +0 -1
- package/lib/Components/TileComponent.d.ts +0 -10
- package/lib/Components/TileComponent.js +0 -40
- package/lib/Components/TileComponent.js.map +0 -1
- package/lib/Effects/Animation.d.ts +0 -55
- package/lib/Effects/Animation.js +0 -233
- package/lib/Effects/Animation.js.map +0 -1
- package/lib/Effects/AnimationCharacter.d.ts +0 -7
- package/lib/Effects/AnimationCharacter.js +0 -9
- package/lib/Effects/AnimationCharacter.js.map +0 -1
- package/lib/Effects/Spinner.d.ts +0 -7
- package/lib/Effects/Spinner.js +0 -18
- package/lib/Effects/Spinner.js.map +0 -1
- package/lib/Effects/Timeline.d.ts +0 -151
- package/lib/Effects/Timeline.js +0 -369
- package/lib/Effects/Timeline.js.map +0 -1
- package/lib/Effects/TransitionScene.d.ts +0 -18
- package/lib/Effects/TransitionScene.js +0 -50
- package/lib/Effects/TransitionScene.js.map +0 -1
- package/lib/GameEngine.d.ts +0 -68
- package/lib/GameEngine.js +0 -254
- package/lib/GameEngine.js.map +0 -1
- package/lib/Gui/Gui.d.ts +0 -110
- package/lib/Gui/Gui.js +0 -489
- package/lib/Gui/Gui.js.map +0 -1
- package/lib/Gui/React.d.ts +0 -28
- package/lib/Gui/React.js +0 -147
- package/lib/Gui/React.js.map +0 -1
- package/lib/Gui/Vue.d.ts +0 -13
- package/lib/Gui/Vue.js +0 -114
- package/lib/Gui/Vue.js.map +0 -1
- package/lib/Interfaces/Character.d.ts +0 -6
- package/lib/Interfaces/Character.js +0 -2
- package/lib/Interfaces/Character.js.map +0 -1
- package/lib/Interfaces/Scene.d.ts +0 -10
- package/lib/Interfaces/Scene.js +0 -2
- package/lib/Interfaces/Scene.js.map +0 -1
- package/lib/KeyboardControls.d.ts +0 -367
- package/lib/KeyboardControls.js +0 -714
- package/lib/KeyboardControls.js.map +0 -1
- package/lib/Logger.d.ts +0 -1
- package/lib/Logger.js +0 -4
- package/lib/Logger.js.map +0 -1
- package/lib/Presets/AnimationSpritesheet.js +0 -39
- package/lib/Presets/AnimationSpritesheet.js.map +0 -1
- package/lib/Presets/Scene.d.ts +0 -3
- package/lib/Presets/Scene.js +0 -5
- package/lib/Presets/Scene.js.map +0 -1
- package/lib/Renderer.d.ts +0 -62
- package/lib/Renderer.js +0 -300
- package/lib/Renderer.js.map +0 -1
- package/lib/Resources.d.ts +0 -22
- package/lib/Resources.js +0 -38
- package/lib/Resources.js.map +0 -1
- package/lib/RpgClient.js +0 -2
- package/lib/RpgClient.js.map +0 -1
- package/lib/RpgClientEngine.d.ts +0 -257
- package/lib/RpgClientEngine.js +0 -677
- package/lib/RpgClientEngine.js.map +0 -1
- package/lib/Scene/EventLayer.d.ts +0 -4
- package/lib/Scene/EventLayer.js +0 -8
- package/lib/Scene/EventLayer.js.map +0 -1
- package/lib/Scene/Map.d.ts +0 -109
- package/lib/Scene/Map.js +0 -319
- package/lib/Scene/Map.js.map +0 -1
- package/lib/Scene/Scene.d.ts +0 -184
- package/lib/Scene/Scene.js +0 -250
- package/lib/Scene/Scene.js.map +0 -1
- package/lib/Scene/SceneData.d.ts +0 -4
- package/lib/Scene/SceneData.js +0 -8
- package/lib/Scene/SceneData.js.map +0 -1
- package/lib/Sound/RpgSound.d.ts +0 -11
- package/lib/Sound/RpgSound.js +0 -46
- package/lib/Sound/RpgSound.js.map +0 -1
- package/lib/Sound/Sound.d.ts +0 -78
- package/lib/Sound/Sound.js +0 -12
- package/lib/Sound/Sound.js.map +0 -1
- package/lib/Sound/Sounds.d.ts +0 -2
- package/lib/Sound/Sounds.js +0 -6
- package/lib/Sound/Sounds.js.map +0 -1
- package/lib/Sprite/Character.d.ts +0 -18
- package/lib/Sprite/Character.js +0 -131
- package/lib/Sprite/Character.js.map +0 -1
- package/lib/Sprite/Player.d.ts +0 -3
- package/lib/Sprite/Player.js +0 -4
- package/lib/Sprite/Player.js.map +0 -1
- package/lib/Sprite/Spritesheet.d.ts +0 -365
- package/lib/Sprite/Spritesheet.js +0 -13
- package/lib/Sprite/Spritesheet.js.map +0 -1
- package/lib/Sprite/Spritesheets.d.ts +0 -3
- package/lib/Sprite/Spritesheets.js +0 -6
- package/lib/Sprite/Spritesheets.js.map +0 -1
- package/lib/Tilemap/CommonLayer.d.ts +0 -10
- package/lib/Tilemap/CommonLayer.js +0 -17
- package/lib/Tilemap/CommonLayer.js.map +0 -1
- package/lib/Tilemap/ImageLayer.d.ts +0 -4
- package/lib/Tilemap/ImageLayer.js +0 -16
- package/lib/Tilemap/ImageLayer.js.map +0 -1
- package/lib/Tilemap/Tile.d.ts +0 -21
- package/lib/Tilemap/Tile.js +0 -67
- package/lib/Tilemap/Tile.js.map +0 -1
- package/lib/Tilemap/TileLayer.d.ts +0 -13
- package/lib/Tilemap/TileLayer.js +0 -122
- package/lib/Tilemap/TileLayer.js.map +0 -1
- package/lib/Tilemap/TileSet.d.ts +0 -7
- package/lib/Tilemap/TileSet.js +0 -24
- package/lib/Tilemap/TileSet.js.map +0 -1
- package/lib/Tilemap/index.d.ts +0 -28
- package/lib/Tilemap/index.js +0 -151
- package/lib/Tilemap/index.js.map +0 -1
- package/lib/clientEntryPoint.d.ts +0 -89
- package/lib/clientEntryPoint.js +0 -48
- package/lib/clientEntryPoint.js.map +0 -1
- package/lib/index.d.ts +0 -26
- package/lib/index.js +0 -27
- package/lib/index.js.map +0 -1
- package/lib/inject.d.ts +0 -23
- package/lib/inject.js +0 -30
- package/lib/inject.js.map +0 -1
- package/rpg.toml +0 -14
- package/src/Components/AbstractComponent.ts +0 -120
- package/src/Components/BarComponent.ts +0 -181
- package/src/Components/Component.ts +0 -515
- package/src/Components/DebugComponent.ts +0 -36
- package/src/Components/ImageComponent.ts +0 -30
- package/src/Components/ShapeComponent.ts +0 -64
- package/src/Components/TextComponent.ts +0 -33
- package/src/Components/TileComponent.ts +0 -43
- package/src/Effects/Animation.ts +0 -310
- package/src/Effects/AnimationCharacter.ts +0 -7
- package/src/Effects/Spinner.ts +0 -19
- package/src/Effects/Timeline.ts +0 -378
- package/src/Effects/TransitionScene.ts +0 -59
- package/src/GameEngine.ts +0 -289
- package/src/Gui/React.ts +0 -193
- package/src/Gui/Vue.ts +0 -154
- package/src/Interfaces/Character.ts +0 -7
- package/src/Interfaces/Scene.ts +0 -9
- package/src/KeyboardControls.ts +0 -748
- package/src/Logger.ts +0 -3
- package/src/Presets/Scene.ts +0 -3
- package/src/Renderer.ts +0 -334
- package/src/Resources.ts +0 -39
- package/src/Scene/EventLayer.ts +0 -9
- package/src/Scene/Map.ts +0 -402
- package/src/Scene/Scene.ts +0 -305
- package/src/Scene/SceneData.ts +0 -13
- package/src/Sound/RpgSound.ts +0 -50
- package/src/Sound/Sound.ts +0 -91
- package/src/Sound/Sounds.ts +0 -7
- package/src/Sprite/Character.ts +0 -157
- package/src/Sprite/Player.ts +0 -3
- package/src/Sprite/Spritesheet.ts +0 -392
- package/src/Sprite/Spritesheets.ts +0 -8
- package/src/Tilemap/CommonLayer.ts +0 -20
- package/src/Tilemap/ImageLayer.ts +0 -20
- package/src/Tilemap/Tile.ts +0 -80
- package/src/Tilemap/TileLayer.ts +0 -142
- package/src/Tilemap/TileSet.ts +0 -40
- package/src/Tilemap/index.ts +0 -175
- package/src/clientEntryPoint.ts +0 -150
- package/src/inject.ts +0 -34
- package/src/types/howler.d.ts +0 -73
package/src/Gui/Gui.ts
CHANGED
|
@@ -1,545 +1,92 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { GameEngineClient } from '../GameEngine'
|
|
6
|
-
import { SceneMap } from '../Scene/Map'
|
|
7
|
-
import { VueGui } from './Vue'
|
|
8
|
-
import { Scene } from '../Scene/Scene'
|
|
9
|
-
import { map, tap, combineLatest, Subject, filter, Observable } from 'rxjs';
|
|
10
|
-
|
|
11
|
-
const { elementToPositionAbsolute } = Utils
|
|
1
|
+
import { Context, inject } from "@signe/di";
|
|
2
|
+
import { signal } from "canvasengine";
|
|
3
|
+
import { AbstractWebsocket, WebSocketToken } from "../services/AbstractSocket";
|
|
4
|
+
import { PrebuiltGui } from "../components/gui";
|
|
12
5
|
|
|
13
6
|
interface GuiOptions {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
isFunction: boolean,
|
|
19
|
-
gui: any
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
interface GuiList {
|
|
23
|
-
[guiName: string]: GuiOptions
|
|
7
|
+
name: string;
|
|
8
|
+
component: any;
|
|
9
|
+
display?: boolean;
|
|
10
|
+
data?: any;
|
|
24
11
|
}
|
|
25
12
|
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
export class
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
})
|
|
13
|
+
const throwError = (id: string) => {
|
|
14
|
+
throw `The GUI named ${id} is non-existent. Please add the component in the gui property of the decorator @RpgClient`;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export class RpgGui {
|
|
18
|
+
private webSocket: AbstractWebsocket;
|
|
19
|
+
gui = signal<any>({});
|
|
20
|
+
|
|
21
|
+
constructor(private context: Context) {
|
|
22
|
+
this.webSocket = inject(context, WebSocketToken);
|
|
23
|
+
this.add({
|
|
24
|
+
name: "rpg-dialog",
|
|
25
|
+
component: PrebuiltGui.Dialogbox,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async _initialize() {
|
|
30
|
+
this.webSocket.on("gui.open", (data: { guiId: string; data: any }) => {
|
|
31
|
+
this.display(data.guiId, data.data);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
this.webSocket.on("gui.exit", (guiId: string) => {
|
|
35
|
+
this.hide(guiId);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
guiInteraction(guiId: string, name: string, data: any) {
|
|
40
|
+
this.webSocket.emit("gui.interaction", {
|
|
41
|
+
guiId,
|
|
42
|
+
name,
|
|
43
|
+
data,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
guiClose(guiId: string, data?: any) {
|
|
48
|
+
this.webSocket.emit("gui.exit", {
|
|
49
|
+
guiId,
|
|
50
|
+
data,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
add(gui: GuiOptions) {
|
|
55
|
+
this.gui()[gui.name] = {
|
|
56
|
+
name: gui.name,
|
|
57
|
+
component: gui.component,
|
|
58
|
+
display: signal(gui.display || false),
|
|
59
|
+
data: signal(gui.data || {}),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
get(id: string | GuiOptions) {
|
|
64
|
+
if (typeof id != "string") {
|
|
65
|
+
id = id.name;
|
|
80
66
|
}
|
|
67
|
+
return this.gui()[id];
|
|
68
|
+
}
|
|
81
69
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Recovery of the current scene
|
|
87
|
-
*
|
|
88
|
-
* ```js
|
|
89
|
-
* export default {
|
|
90
|
-
* inject: ['rpgScene'],
|
|
91
|
-
* mounted() {
|
|
92
|
-
* const scene = this.rpgScene()
|
|
93
|
-
* scene.stopInputs()
|
|
94
|
-
* }
|
|
95
|
-
* }
|
|
96
|
-
* ```
|
|
97
|
-
*
|
|
98
|
-
* @prop {Function returns RpgScene} [rpgScene]
|
|
99
|
-
* @memberof VueInject
|
|
100
|
-
* */
|
|
101
|
-
rpgScene: this.renderer.getScene.bind(this.renderer),
|
|
70
|
+
exists(id: string): boolean {
|
|
71
|
+
return !!this.get(id);
|
|
72
|
+
}
|
|
102
73
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
* ```js
|
|
107
|
-
* export default {
|
|
108
|
-
* inject: ['rpgStage'],
|
|
109
|
-
* mounted() {
|
|
110
|
-
* const blur = new PIXI.BlurFilter()
|
|
111
|
-
this.rpgStage.filters = [blur]
|
|
112
|
-
* }
|
|
113
|
-
* }
|
|
114
|
-
* ```
|
|
115
|
-
*
|
|
116
|
-
* @prop {PIXI.Container} [rpgStage]
|
|
117
|
-
* @memberof VueInject
|
|
118
|
-
* */
|
|
119
|
-
rpgStage: this.renderer.stage,
|
|
74
|
+
getAll() {
|
|
75
|
+
return this.gui();
|
|
76
|
+
}
|
|
120
77
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
* ```js
|
|
125
|
-
* export default {
|
|
126
|
-
* inject: ['rpgObjects'],
|
|
127
|
-
* mounted() {
|
|
128
|
-
* this.obs = this.rpgObjects.subscribe((objects) => {
|
|
129
|
-
* for (let id in objects) {
|
|
130
|
-
* const obj = objects[id]
|
|
131
|
-
* console.log(obj.object, obj.paramsChanged)
|
|
132
|
-
* }
|
|
133
|
-
* })
|
|
134
|
-
* },
|
|
135
|
-
* unmounted() {
|
|
136
|
-
* this.obs.unsubscribe()
|
|
137
|
-
* }
|
|
138
|
-
* }
|
|
139
|
-
* ```
|
|
140
|
-
*
|
|
141
|
-
* > remember to unsubscribe for memory leaks
|
|
142
|
-
*
|
|
143
|
-
* It is an observable that returns an object:
|
|
144
|
-
*
|
|
145
|
-
* * the key is the object identifier
|
|
146
|
-
* * The value is an object comprising:
|
|
147
|
-
* * `object`: The entire object
|
|
148
|
-
* * `paramsChanged`: Only the representation of the properties that have been changed on this object
|
|
149
|
-
*
|
|
150
|
-
* @prop {Observable<{ [objectId]: { object: object, paramsChanged: object } }>} [rpgObjects]
|
|
151
|
-
* @memberof VueInject
|
|
152
|
-
* */
|
|
153
|
-
rpgObjects: this.clientEngine.objects,
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Recovers and listens to the current player
|
|
157
|
-
*
|
|
158
|
-
* ```js
|
|
159
|
-
* export default {
|
|
160
|
-
* inject: ['rpgCurrentPlayer'],
|
|
161
|
-
* mounted() {
|
|
162
|
-
* this.obs = this.rpgCurrentPlayer.subscribe((obj) => {
|
|
163
|
-
* console.log(obj.object, obj.paramsChanged)
|
|
164
|
-
* })
|
|
165
|
-
* },
|
|
166
|
-
* unmounted() {
|
|
167
|
-
* this.obs.unsubscribe()
|
|
168
|
-
* }
|
|
169
|
-
* }
|
|
170
|
-
* ```
|
|
171
|
-
*
|
|
172
|
-
* * `object`: The whole player
|
|
173
|
-
* * `paramsChanged`: Only the representation of the properties that have been changed on this player
|
|
174
|
-
*
|
|
175
|
-
* @prop {Observable<{ object: object, paramsChanged: object }>} [rpgCurrentPlayer]
|
|
176
|
-
* @memberof VueInject
|
|
177
|
-
* */
|
|
178
|
-
rpgCurrentPlayer: this.clientEngine.objects
|
|
179
|
-
.pipe(
|
|
180
|
-
map((objects: any) => objects[this.gameEngine.playerId]),
|
|
181
|
-
filter(player => !!player)
|
|
182
|
-
),
|
|
183
|
-
rpgGameEngine: this.gameEngine,
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Tell the server to close the GUI.
|
|
187
|
-
*
|
|
188
|
-
* It is a function with 2 parameters:
|
|
189
|
-
* * `name`: The name of the component
|
|
190
|
-
* * `data`: The data you want to pass to the server
|
|
191
|
-
*
|
|
192
|
-
* ```js
|
|
193
|
-
* export default {
|
|
194
|
-
* inject: ['rpgGuiClose'],
|
|
195
|
-
* methods: {
|
|
196
|
-
* close() {
|
|
197
|
-
* this.rpgGuiClose('gui-name', {
|
|
198
|
-
* amount: 1000
|
|
199
|
-
* })
|
|
200
|
-
* }
|
|
201
|
-
* }
|
|
202
|
-
* }
|
|
203
|
-
* ```
|
|
204
|
-
*
|
|
205
|
-
* @prop {Function(name, data)} [rpgGuiClose]
|
|
206
|
-
* @memberof VueInject
|
|
207
|
-
* */
|
|
208
|
-
rpgGuiClose(name: string, data?) {
|
|
209
|
-
const guiId = name || this.$options?.name
|
|
210
|
-
self.socket.emit('gui.exit', {
|
|
211
|
-
guiId,
|
|
212
|
-
data
|
|
213
|
-
})
|
|
214
|
-
},
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Perform an interaction with the open GUI
|
|
218
|
-
*
|
|
219
|
-
* It is a function with 2 parameters:
|
|
220
|
-
* * `guiId`: The name of the component/Gui
|
|
221
|
-
* * `name`: The name of the interaction (defined on the server side)
|
|
222
|
-
* * `data`: Data to be sent
|
|
223
|
-
*
|
|
224
|
-
* ```js
|
|
225
|
-
* export default {
|
|
226
|
-
* inject: ['rpgGuiInteraction'],
|
|
227
|
-
* methods: {
|
|
228
|
-
* changeGold() {
|
|
229
|
-
* this.rpgGuiInteraction('gui-name', 'change-gold', {
|
|
230
|
-
* amount: 100
|
|
231
|
-
* })
|
|
232
|
-
* }
|
|
233
|
-
* }
|
|
234
|
-
* }
|
|
235
|
-
* ```
|
|
236
|
-
*
|
|
237
|
-
* @prop {Function(guiId, name, data = {})} [rpgGuiInteraction]
|
|
238
|
-
* @memberof VueInject
|
|
239
|
-
* */
|
|
240
|
-
rpgGuiInteraction: (guiId: string, name: string, data: any = {}) => {
|
|
241
|
-
this.socket.emit('gui.interaction', {
|
|
242
|
-
guiId,
|
|
243
|
-
name,
|
|
244
|
-
data
|
|
245
|
-
})
|
|
246
|
-
},
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Listen to the keys that are pressed on the keyboard
|
|
250
|
-
*
|
|
251
|
-
* ```js
|
|
252
|
-
* export default {
|
|
253
|
-
* inject: ['rpgKeypress'],
|
|
254
|
-
* mounted() {
|
|
255
|
-
* this.obs = this.rpgKeypress.subscribe(({ inputName, control }) => {
|
|
256
|
-
* console.log(inputName) // "escape"
|
|
257
|
-
* console.log(control.actionName) // "back"
|
|
258
|
-
* })
|
|
259
|
-
* },
|
|
260
|
-
* unmounted() {
|
|
261
|
-
* this.obs.unsubscribe()
|
|
262
|
-
* }
|
|
263
|
-
* }
|
|
264
|
-
* ```
|
|
265
|
-
*
|
|
266
|
-
* @prop {Observable<{ inputName: string, control: { actionName: string, options: any } }>} [rpgKeypress]
|
|
267
|
-
* @memberof VueInject
|
|
268
|
-
* */
|
|
269
|
-
rpgKeypress: this.clientEngine.keyChange
|
|
270
|
-
.pipe(
|
|
271
|
-
map(name => {
|
|
272
|
-
const control = this.clientEngine.controls.getControl(name)
|
|
273
|
-
return {
|
|
274
|
-
inputName: name,
|
|
275
|
-
control
|
|
276
|
-
}
|
|
277
|
-
})
|
|
278
|
-
),
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Recovers the socket.
|
|
282
|
-
*
|
|
283
|
-
* ```js
|
|
284
|
-
* export default {
|
|
285
|
-
* inject: ['rpgSocket'],
|
|
286
|
-
* mounted() {
|
|
287
|
-
* const socket = this.rpgSocket()
|
|
288
|
-
* socket.emit('foo', 'bar')
|
|
289
|
-
* }
|
|
290
|
-
* }
|
|
291
|
-
* ```
|
|
292
|
-
*
|
|
293
|
-
* @prop {Function returns RpgScene} [rpgSocket]
|
|
294
|
-
* @memberof VueInject
|
|
295
|
-
* */
|
|
296
|
-
rpgSocket: () => this.socket,
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* The RpgGui object to control GUIs
|
|
300
|
-
*
|
|
301
|
-
* ```js
|
|
302
|
-
* export default {
|
|
303
|
-
* inject: ['rpgGui'],
|
|
304
|
-
* mounted() {
|
|
305
|
-
* const guis = this.rpgGui.getAll()
|
|
306
|
-
* }
|
|
307
|
-
* }
|
|
308
|
-
* ```
|
|
309
|
-
*
|
|
310
|
-
* @prop {RpgGui} [rpgGui]
|
|
311
|
-
* @memberof VueInject
|
|
312
|
-
* */
|
|
313
|
-
rpgGui: this,
|
|
314
|
-
|
|
315
|
-
/**
|
|
316
|
-
* Equivalent to RpgSound
|
|
317
|
-
*
|
|
318
|
-
* ```js
|
|
319
|
-
* export default {
|
|
320
|
-
* inject: ['rpgSound'],
|
|
321
|
-
* mounted() {
|
|
322
|
-
* this.rpgSound.get('my-sound-id').play()
|
|
323
|
-
* }
|
|
324
|
-
* }
|
|
325
|
-
* ```
|
|
326
|
-
*
|
|
327
|
-
* @prop {RpgSound} [rpgSound]
|
|
328
|
-
* @memberof VueInject
|
|
329
|
-
* */
|
|
330
|
-
rpgSound: RpgSound,
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Find the game's image and sound library
|
|
334
|
-
*
|
|
335
|
-
* ```js
|
|
336
|
-
* export default {
|
|
337
|
-
* inject: ['rpgResource'],
|
|
338
|
-
* mounted() {
|
|
339
|
-
* const resourceImage = this.rpgResource.spritesheets.get('image_id')
|
|
340
|
-
* const resourceSound = this.rpgResource.sounds.get('sound_id')
|
|
341
|
-
* }
|
|
342
|
-
* }
|
|
343
|
-
* ```
|
|
344
|
-
*
|
|
345
|
-
* @prop { { spritesheets: Map, sounds: Map } } [rpgResource]
|
|
346
|
-
* @memberof VueInject
|
|
347
|
-
* */
|
|
348
|
-
rpgResource: RpgResource,
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* Get RpgClientEngine instance
|
|
352
|
-
*
|
|
353
|
-
* ```js
|
|
354
|
-
* export default {
|
|
355
|
-
* inject: ['rpgEngine'],
|
|
356
|
-
* mounted() {
|
|
357
|
-
* const vueInstance = this.rpgEngine.vueInstance
|
|
358
|
-
* }
|
|
359
|
-
* }
|
|
360
|
-
* ```
|
|
361
|
-
*
|
|
362
|
-
* @prop {RpgClientEngine} [rpgEngine]
|
|
363
|
-
* @memberof VueInject
|
|
364
|
-
* */
|
|
365
|
-
rpgEngine: this.clientEngine
|
|
366
|
-
}
|
|
78
|
+
display(id: string, data = {}) {
|
|
79
|
+
if (!this.exists(id)) {
|
|
80
|
+
throw throwError(id);
|
|
367
81
|
}
|
|
82
|
+
this.get(id).data.set(data);
|
|
83
|
+
this.get(id).display.set(true);
|
|
84
|
+
}
|
|
368
85
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
this.socket.on('gui.open', ({ guiId, data }) => {
|
|
373
|
-
this.display(guiId, data)
|
|
374
|
-
})
|
|
375
|
-
this.socket.on('gui.tooltip', ({ players, display }) => {
|
|
376
|
-
for (let playerId of players) {
|
|
377
|
-
const sprite = this.renderer.getScene<SceneMap>()?.getSprite(playerId)
|
|
378
|
-
if (sprite) sprite.guiDisplay = display
|
|
379
|
-
}
|
|
380
|
-
})
|
|
381
|
-
this.socket.on('gui.exit', (guiId) => {
|
|
382
|
-
this.hide(guiId)
|
|
383
|
-
})
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
/** @internal */
|
|
387
|
-
_setGui(id, obj) {
|
|
388
|
-
const guiObj = this.get(id)
|
|
389
|
-
if (!guiObj) {
|
|
390
|
-
throw `The GUI named ${id} is non-existent. Please add the component in the gui property of the decorator @RpgClient`
|
|
391
|
-
}
|
|
392
|
-
for (let key in obj) {
|
|
393
|
-
guiObj[key] = obj[key]
|
|
394
|
-
}
|
|
395
|
-
this.librariesInstances.forEach(instance => {
|
|
396
|
-
instance.gui = Object.assign({}, this.gui)
|
|
397
|
-
})
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Get a GUI. You retrieve GUI data and information whether it is displayed or not
|
|
402
|
-
*
|
|
403
|
-
* ```ts
|
|
404
|
-
* import { RpgGui } from '@rpgjs/client'
|
|
405
|
-
*
|
|
406
|
-
* const gui = RpgGui.get('my-gui')
|
|
407
|
-
* console.log(gui.display) // false
|
|
408
|
-
* ```
|
|
409
|
-
*
|
|
410
|
-
* @title Get a GUI
|
|
411
|
-
* @method RpgGui.get(id)
|
|
412
|
-
* @param {string} id
|
|
413
|
-
* @returns { { data: any, display: boolean } }
|
|
414
|
-
* @memberof RpgGui
|
|
415
|
-
*/
|
|
416
|
-
get(id) {
|
|
417
|
-
if (typeof id != 'string') {
|
|
418
|
-
id = id.name
|
|
419
|
-
}
|
|
420
|
-
return this.gui[id]
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
/**
|
|
424
|
-
* Get all GUI. You retrieve GUI data and information whether it is displayed or not
|
|
425
|
-
*
|
|
426
|
-
* ```ts
|
|
427
|
-
* import { RpgGui } from '@rpgjs/client'
|
|
428
|
-
*
|
|
429
|
-
* const gui = RpgGui.getAll()
|
|
430
|
-
* console.log(gui) // { 'rpg-dialog': { data: {}, display: true } }
|
|
431
|
-
* ```
|
|
432
|
-
*
|
|
433
|
-
* @title Get all GUI
|
|
434
|
-
* @method RpgGui.getAll()
|
|
435
|
-
* @returns { { [guiName]: { data: any, display: boolean } }}
|
|
436
|
-
* @memberof RpgGui
|
|
437
|
-
*/
|
|
438
|
-
getAll() {
|
|
439
|
-
return this.gui
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
/**
|
|
443
|
-
* Checks if the GUI exists RpgClient's gui array
|
|
444
|
-
*
|
|
445
|
-
* ```ts
|
|
446
|
-
* import { RpgGui } from '@rpgjs/client'
|
|
447
|
-
*
|
|
448
|
-
* RpgGui.exists('my-gui') // true
|
|
449
|
-
* ```
|
|
450
|
-
*
|
|
451
|
-
* @title GUI Exists ?
|
|
452
|
-
* @method RpgGui.exists(id)
|
|
453
|
-
* @param {string} id
|
|
454
|
-
* @returns {boolean}
|
|
455
|
-
* @memberof RpgGui
|
|
456
|
-
*/
|
|
457
|
-
exists(id: string): boolean {
|
|
458
|
-
return !!this.get(id)
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
* Calls a GUI according to identifier. You can send retrievable data in the component
|
|
463
|
-
*
|
|
464
|
-
* ```ts
|
|
465
|
-
* import { RpgGui } from '@rpgjs/client'
|
|
466
|
-
*
|
|
467
|
-
* RpgGui.display('my-gui')
|
|
468
|
-
* ```
|
|
469
|
-
*
|
|
470
|
-
* @title Display GUI
|
|
471
|
-
* @method RpgGui.display(id,data)
|
|
472
|
-
* @param {string} id
|
|
473
|
-
* @param {object} [data]
|
|
474
|
-
* @returns {void}
|
|
475
|
-
* @memberof RpgGui
|
|
476
|
-
*/
|
|
477
|
-
display(id: string, data = {}) {
|
|
478
|
-
this._setGui(id, {
|
|
479
|
-
display: true,
|
|
480
|
-
data
|
|
481
|
-
})
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
/**
|
|
485
|
-
* Hide a GUI according to its identifier
|
|
486
|
-
*
|
|
487
|
-
* ```ts
|
|
488
|
-
* import { RpgGui } from '@rpgjs/client'
|
|
489
|
-
*
|
|
490
|
-
* RpgGui.hide('my-gui')
|
|
491
|
-
* ```
|
|
492
|
-
*
|
|
493
|
-
* @title Hide GUI
|
|
494
|
-
* @method RpgGui.hide(id)
|
|
495
|
-
* @param {string} id
|
|
496
|
-
* @returns {void}
|
|
497
|
-
* @memberof RpgGui
|
|
498
|
-
*/
|
|
499
|
-
hide(id: string) {
|
|
500
|
-
this._setGui(id, {
|
|
501
|
-
display: false
|
|
502
|
-
})
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
/** @internal */
|
|
506
|
-
clear() {
|
|
507
|
-
this.gui = {}
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/** @internal */
|
|
511
|
-
tooltipPosition(position: { x: number, y: number }) {
|
|
512
|
-
const scene = this.renderer.getScene<SceneMap>()
|
|
513
|
-
const viewport = scene?.viewport
|
|
514
|
-
if (viewport) {
|
|
515
|
-
const currentZoom = viewport.scale.x
|
|
516
|
-
const left = (position.x - viewport.left) * currentZoom
|
|
517
|
-
const top = (position.y - viewport.top) * currentZoom
|
|
518
|
-
return {
|
|
519
|
-
transform: `translate(${left}px,${top}px)`
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
return {}
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
/** @internal */
|
|
526
|
-
tooltipFilter(sprites: RpgCommonPlayer[]): RpgCommonPlayer[] {
|
|
527
|
-
return sprites.filter(tooltip => tooltip.guiDisplay)
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
/** @internal */
|
|
531
|
-
get listenTooltipObjects(): Observable<RpgCommonPlayer[]> {
|
|
532
|
-
return combineLatest(
|
|
533
|
-
[
|
|
534
|
-
this.clientEngine.gameEngine.all,
|
|
535
|
-
this.currentScene?.objectsMoving as Subject<any>
|
|
536
|
-
]
|
|
537
|
-
).pipe(
|
|
538
|
-
map(([objects]) => {
|
|
539
|
-
return Object.values(objects).map((obj: any) => obj.object)
|
|
540
|
-
})
|
|
541
|
-
)
|
|
86
|
+
hide(id: string) {
|
|
87
|
+
if (!this.exists(id)) {
|
|
88
|
+
throw throwError(id);
|
|
542
89
|
}
|
|
90
|
+
this.get(id).display.set(false);
|
|
91
|
+
}
|
|
543
92
|
}
|
|
544
|
-
|
|
545
|
-
export const RpgGui = new Gui()
|
package/src/RpgClient.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { ModuleType } from '@rpgjs/common'
|
|
2
|
-
import { SceneMap } from './Scene/Map'
|
|
3
1
|
import { RpgClientEngine } from './RpgClientEngine'
|
|
4
|
-
import { RpgComponent } from './Components/Component'
|
|
5
2
|
import { Loader } from 'pixi.js'
|
|
6
3
|
|
|
7
4
|
type RpgClass<T = any> = new (...args: any[]) => T
|
|
5
|
+
type RpgComponent = any
|
|
6
|
+
type SceneMap = any
|
|
8
7
|
|
|
9
8
|
export interface RpgClientEngineHooks {
|
|
10
9
|
/**
|
|
@@ -219,7 +218,7 @@ export interface RpgClient {
|
|
|
219
218
|
* @prop { { client: null | Function, server: null | Function }[]} [imports]
|
|
220
219
|
* @memberof RpgClient
|
|
221
220
|
*/
|
|
222
|
-
imports?:
|
|
221
|
+
imports?: any
|
|
223
222
|
|
|
224
223
|
/**
|
|
225
224
|
* Object containing the hooks concerning the engine
|
|
@@ -271,7 +270,7 @@ export interface RpgClient {
|
|
|
271
270
|
* @prop {Array<Class>} [spritesheets]
|
|
272
271
|
* @memberof RpgClient
|
|
273
272
|
* */
|
|
274
|
-
spritesheets?:
|
|
273
|
+
spritesheets?: any[],
|
|
275
274
|
|
|
276
275
|
/**
|
|
277
276
|
* Array containing the list of VueJS components
|
|
@@ -374,4 +373,9 @@ export interface RpgClient {
|
|
|
374
373
|
scenes?: {
|
|
375
374
|
map: RpgSceneMapHooks
|
|
376
375
|
}
|
|
376
|
+
|
|
377
|
+
effects?: {
|
|
378
|
+
id: string,
|
|
379
|
+
component: any
|
|
380
|
+
}[]
|
|
377
381
|
}
|