@rpgjs/client 4.3.0 → 5.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +316 -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 +91 -0
- package/dist/index37.js.map +1 -0
- package/dist/index38.js +20 -0
- package/dist/index38.js.map +1 -0
- package/dist/index39.js +20 -0
- package/dist/index39.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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Context, FactoryProvider, findProvider, findProviders, inject, injector, Providers } from "@signe/di";
|
|
2
|
+
import { RpgClientEngine } from "../RpgClientEngine";
|
|
3
|
+
import { setInject } from "./inject";
|
|
4
|
+
|
|
5
|
+
interface SetupOptions {
|
|
6
|
+
providers: Providers;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export async function startGame(options: SetupOptions) {
|
|
10
|
+
const context = new Context();
|
|
11
|
+
setInject(context);
|
|
12
|
+
|
|
13
|
+
await injector(context, options.providers);
|
|
14
|
+
|
|
15
|
+
const engine = inject(context, RpgClientEngine);
|
|
16
|
+
await engine.start();
|
|
17
|
+
return context;
|
|
18
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,29 +1,13 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export *
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export type { ISpriteCharacter } from './Interfaces/Character'
|
|
15
|
-
export { SceneData } from './Scene/SceneData'
|
|
16
|
-
export { SceneMap as RpgSceneMap } from './Scene/Map'
|
|
17
|
-
export { RpgGui } from './Gui/Gui';
|
|
18
|
-
export { Timeline, Ease } from './Effects/Timeline';
|
|
19
|
-
export { RpgComponent, RpgComponent as RpgSprite } from './Components/Component'
|
|
20
|
-
export { KeyboardControls } from './KeyboardControls'
|
|
21
|
-
export { World, room } from 'simple-room-client'
|
|
22
|
-
|
|
23
|
-
import { spritesheets } from './Sprite/Spritesheets'
|
|
24
|
-
import { sounds } from './Sound/Sounds'
|
|
25
|
-
export const RpgResource = {
|
|
26
|
-
spritesheets,
|
|
27
|
-
sounds
|
|
28
|
-
}
|
|
29
|
-
export { inject } from './inject'
|
|
1
|
+
export * from "./RpgClientEngine";
|
|
2
|
+
export type * from "./RpgClient";
|
|
3
|
+
export * from "./services/standalone";
|
|
4
|
+
export * from "./services/mmorpg";
|
|
5
|
+
export * from "./core/setup";
|
|
6
|
+
export * from "./core/inject";
|
|
7
|
+
export * from "./services/loadMap";
|
|
8
|
+
export * from "./module";
|
|
9
|
+
export * from "./Gui/Gui";
|
|
10
|
+
export * from "./components/gui";
|
|
11
|
+
export * from "./components/effects";
|
|
12
|
+
export * from "./presets";
|
|
13
|
+
export * from "./components";
|
package/src/module.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { findModules, provideModules } from "@rpgjs/common";
|
|
2
|
+
import { RpgClientEngine } from "./RpgClientEngine";
|
|
3
|
+
import { RpgClient } from "./RpgClient";
|
|
4
|
+
import { inject } from "@signe/di";
|
|
5
|
+
import { RpgGui } from "./Gui/Gui";
|
|
6
|
+
|
|
7
|
+
export function provideClientModules(modules: RpgClient[]) {
|
|
8
|
+
return provideModules(modules, "client", (modules, context) => {
|
|
9
|
+
const mainModuleClient = findModules(context, 'Client')
|
|
10
|
+
modules = [...mainModuleClient, ...modules]
|
|
11
|
+
modules = modules.map((module) => {
|
|
12
|
+
if ('client' in module) {
|
|
13
|
+
module = module.client as any;
|
|
14
|
+
}
|
|
15
|
+
if (module.spritesheets) {
|
|
16
|
+
const spritesheets = [...module.spritesheets];
|
|
17
|
+
module.spritesheets = {
|
|
18
|
+
load: (engine: RpgClientEngine) => {
|
|
19
|
+
spritesheets.forEach((spritesheet) => {
|
|
20
|
+
engine.addSpriteSheet(spritesheet);
|
|
21
|
+
});
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (module.sounds) {
|
|
26
|
+
const sounds = [...module.sounds];
|
|
27
|
+
module.sounds = {
|
|
28
|
+
load: (engine: RpgClientEngine) => {
|
|
29
|
+
sounds.forEach((sound) => {
|
|
30
|
+
engine.addSound(sound);
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (module.gui) {
|
|
36
|
+
const gui = [...module.gui];
|
|
37
|
+
module.gui = {
|
|
38
|
+
load: (engine: RpgClientEngine) => {
|
|
39
|
+
const guiService = inject(engine.context, RpgGui);
|
|
40
|
+
gui.forEach((gui) => {
|
|
41
|
+
guiService.add(gui);
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (module.effects) {
|
|
47
|
+
const effects = [...module.effects];
|
|
48
|
+
module.effects = {
|
|
49
|
+
load: (engine: RpgClientEngine) => {
|
|
50
|
+
effects.forEach((effect) => {
|
|
51
|
+
engine.addEffect(effect);
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
if (module.particles) {
|
|
57
|
+
const particles = [...module.particles];
|
|
58
|
+
module.particles = {
|
|
59
|
+
load: (engine: RpgClientEngine) => {
|
|
60
|
+
particles.forEach((particle) => {
|
|
61
|
+
engine.addParticle(particle);
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return module;
|
|
67
|
+
});
|
|
68
|
+
return modules
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export const GlobalConfigToken = "GlobalConfigToken";
|
|
73
|
+
|
|
74
|
+
export function provideGlobalConfig(config: any) {
|
|
75
|
+
return {
|
|
76
|
+
provide: GlobalConfigToken,
|
|
77
|
+
useValue: config ?? {},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export function provideClientGlobalConfig(config: any = {}) {
|
|
82
|
+
if (!config.keyboardControls) {
|
|
83
|
+
config.keyboardControls = {
|
|
84
|
+
up: 'up',
|
|
85
|
+
down: 'down',
|
|
86
|
+
left: 'left',
|
|
87
|
+
right: 'right',
|
|
88
|
+
action: 'space'
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return provideGlobalConfig(config)
|
|
92
|
+
}
|
|
93
|
+
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Direction } from '@rpgjs/common'
|
|
2
|
-
import { Animation } from '../Effects/AnimationCharacter'
|
|
1
|
+
import { Direction, Animation } from '@rpgjs/common'
|
|
3
2
|
|
|
4
3
|
export const RMSpritesheet = (framesWidth: number, framesHeight: number, frameStand: number = 1) => {
|
|
5
4
|
|
|
@@ -31,13 +30,13 @@ export const RMSpritesheet = (framesWidth: number, framesHeight: number, frameSt
|
|
|
31
30
|
return {
|
|
32
31
|
textures: {
|
|
33
32
|
[Animation.Stand]: {
|
|
34
|
-
animations: direction => [stand(direction)]
|
|
33
|
+
animations: ({direction}) => [stand(direction)]
|
|
35
34
|
},
|
|
36
35
|
[Animation.Walk]: {
|
|
37
|
-
animations: direction => [walk(direction)]
|
|
36
|
+
animations: ({direction}) => [walk(direction)]
|
|
38
37
|
}
|
|
39
38
|
},
|
|
40
39
|
framesHeight,
|
|
41
40
|
framesWidth
|
|
42
41
|
}
|
|
43
|
-
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Context } from "@signe/di";
|
|
2
|
+
|
|
3
|
+
export const WebSocketToken = "websocket";
|
|
4
|
+
|
|
5
|
+
export abstract class AbstractWebsocket {
|
|
6
|
+
constructor(protected context: Context) {}
|
|
7
|
+
|
|
8
|
+
abstract connection(listeners?: (data: any) => void): Promise<void>;
|
|
9
|
+
abstract emit(event: string, data: any): void;
|
|
10
|
+
abstract on(event: string, callback: (data: any) => void): void;
|
|
11
|
+
abstract off(event: string, callback: (data: any) => void): void;
|
|
12
|
+
abstract updateProperties(params: { room: string, host?: string }): void;
|
|
13
|
+
abstract reconnect(listeners?: (data: any) => void): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Context, inject } from "@signe/di";
|
|
2
|
+
import { UpdateMapToken, UpdateMapService } from "@rpgjs/common";
|
|
3
|
+
|
|
4
|
+
export const LoadMapToken = 'LoadMapToken'
|
|
5
|
+
|
|
6
|
+
export type LoadMapOptions = (mapId: string) => Promise<void>
|
|
7
|
+
|
|
8
|
+
export class LoadMapService {
|
|
9
|
+
private updateMapService: UpdateMapService;
|
|
10
|
+
|
|
11
|
+
constructor(private context: Context, private options: LoadMapOptions) {
|
|
12
|
+
this.updateMapService = inject(context, UpdateMapToken);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async load(mapId: string) {
|
|
16
|
+
const map = await this.options(mapId.replace('map-', ''))
|
|
17
|
+
await this.updateMapService.update(mapId, map);
|
|
18
|
+
return map;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function provideLoadMap(options: LoadMapOptions) {
|
|
23
|
+
return [
|
|
24
|
+
{
|
|
25
|
+
provide: UpdateMapToken,
|
|
26
|
+
useFactory: (context: Context) => console.warn('UpdateMapToken is not overridden'),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
provide: LoadMapToken,
|
|
30
|
+
useFactory: (context: Context) => new LoadMapService(context, options),
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Context } from "@signe/di";
|
|
2
|
+
import { connectionRoom } from "@signe/sync/client";
|
|
3
|
+
import { RpgGui } from "../Gui/Gui";
|
|
4
|
+
import { RpgClientEngine } from "../RpgClientEngine";
|
|
5
|
+
import { AbstractWebsocket, WebSocketToken } from "./AbstractSocket";
|
|
6
|
+
import { UpdateMapService, UpdateMapToken } from "@rpgjs/common";
|
|
7
|
+
|
|
8
|
+
interface MmorpgOptions {
|
|
9
|
+
host: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
class BridgeWebsocket extends AbstractWebsocket {
|
|
13
|
+
private socket: any;
|
|
14
|
+
|
|
15
|
+
constructor(protected context: Context, private options: MmorpgOptions) {
|
|
16
|
+
super(context);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async connection() {
|
|
20
|
+
// tmp
|
|
21
|
+
class Room {
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
const instance = new Room()
|
|
25
|
+
this.socket = await connectionRoom(this.options, instance)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
on(key: string, callback: (data: any) => void) {
|
|
29
|
+
this.socket.on(key, callback);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
off(event: string, callback: (data: any) => void) {
|
|
33
|
+
this.socket.off(event, callback);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
emit(event: string, data: any) {
|
|
37
|
+
this.socket.emit(event, data);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
class UpdateMapStandaloneService extends UpdateMapService {
|
|
42
|
+
constructor(protected context: Context, private options: MmorpgOptions) {
|
|
43
|
+
super(context);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async update(map: any) {
|
|
47
|
+
// nothing
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function provideMmorpg(options: MmorpgOptions) {
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
provide: WebSocketToken,
|
|
55
|
+
useFactory: (context: Context) => new BridgeWebsocket(context, options),
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
provide: UpdateMapToken,
|
|
59
|
+
useFactory: (context: Context) => new UpdateMapStandaloneService(context, options),
|
|
60
|
+
},
|
|
61
|
+
RpgGui,
|
|
62
|
+
RpgClientEngine,
|
|
63
|
+
];
|
|
64
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { AbstractWebsocket, WebSocketToken } from "./AbstractSocket";
|
|
2
|
+
import { ClientIo, ServerIo } from "@signe/room";
|
|
3
|
+
import { Context } from "@signe/di";
|
|
4
|
+
import { RpgClientEngine } from "../RpgClientEngine";
|
|
5
|
+
import { UpdateMapService, UpdateMapToken } from "@rpgjs/common";
|
|
6
|
+
import { LoadMapToken } from "./loadMap";
|
|
7
|
+
import { RpgGui } from "../Gui/Gui";
|
|
8
|
+
|
|
9
|
+
type ServerIo = any;
|
|
10
|
+
type ClientIo = any;
|
|
11
|
+
|
|
12
|
+
class BridgeWebsocket extends AbstractWebsocket {
|
|
13
|
+
private room: ServerIo;
|
|
14
|
+
private socket: ClientIo;
|
|
15
|
+
|
|
16
|
+
constructor(protected context: Context, private server: any) {
|
|
17
|
+
super(context);
|
|
18
|
+
// fake room
|
|
19
|
+
this.room = new ServerIo("lobby-1");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async connection(listeners?: (data: any) => void) {
|
|
23
|
+
const server = new this.server(this.room);
|
|
24
|
+
await server.onStart();
|
|
25
|
+
this.context.set('server', server)
|
|
26
|
+
this.socket = new ClientIo(server);
|
|
27
|
+
const url = new URL('http://localhost')
|
|
28
|
+
const request = new Request(url.toString(), {
|
|
29
|
+
method: 'GET',
|
|
30
|
+
headers: {
|
|
31
|
+
'Content-Type': 'application/json'
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
listeners?.(this.socket)
|
|
35
|
+
await server.onConnect(this.socket.conn as any, { request } as any);
|
|
36
|
+
this.room.clients.set(this.socket.id, this.socket);
|
|
37
|
+
return this.socket
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
on(key: string, callback: (data: any) => void) {
|
|
41
|
+
this.socket.addEventListener("message", (event) => {
|
|
42
|
+
const object = JSON.parse(event);
|
|
43
|
+
if (object.type === key) {
|
|
44
|
+
callback(object.value);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
off(event: string, callback: (data: any) => void) {
|
|
50
|
+
this.socket.removeEventListener(event, callback);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
emit(event: string, data: any) {
|
|
54
|
+
this.socket.send({
|
|
55
|
+
action: event,
|
|
56
|
+
value: data,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
updateProperties({ room }: { room: any }) {
|
|
61
|
+
this.room = new ServerIo(room);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async reconnect(listeners?: (data: any) => void) {
|
|
65
|
+
await this.connection((socket) => {
|
|
66
|
+
listeners?.(socket)
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
class UpdateMapStandaloneService extends UpdateMapService {
|
|
72
|
+
private server: any;
|
|
73
|
+
|
|
74
|
+
async update(mapId: string, map: any) {
|
|
75
|
+
this.server = this.context.get('server')
|
|
76
|
+
const req = {
|
|
77
|
+
url: `http://localhost/parties/main/${mapId}/map/update`,
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: new Headers({}),
|
|
80
|
+
json: async () => {
|
|
81
|
+
return map;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
await this.server.onRequest(req)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function provideRpg(server: any) {
|
|
89
|
+
return [
|
|
90
|
+
{
|
|
91
|
+
provide: WebSocketToken,
|
|
92
|
+
useFactory: (context: Context) => new BridgeWebsocket(context, server),
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
provide: UpdateMapToken,
|
|
96
|
+
useClass: UpdateMapStandaloneService,
|
|
97
|
+
},
|
|
98
|
+
RpgGui,
|
|
99
|
+
RpgClientEngine,
|
|
100
|
+
];
|
|
101
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas Engine Component Type Declarations
|
|
3
|
+
*
|
|
4
|
+
* This file declares module types for Canvas Engine components (.ce files)
|
|
5
|
+
* to enable TypeScript support and proper import resolution.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare module "*.ce" {
|
|
9
|
+
/**
|
|
10
|
+
* Canvas Engine Component
|
|
11
|
+
*
|
|
12
|
+
* @description Represents a Canvas Engine component that can be imported
|
|
13
|
+
* and used within the application. These components combine template markup
|
|
14
|
+
* with reactive JavaScript logic.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import MyComponent from "./components/my-component.ce";
|
|
19
|
+
*
|
|
20
|
+
* // Use the component in your application
|
|
21
|
+
* const componentInstance = MyComponent;
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
const component: any;
|
|
25
|
+
export default component;
|
|
26
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"sourceMap": true,
|
|
10
10
|
"strictNullChecks": true,
|
|
11
11
|
"strictPropertyInitialization": false,
|
|
12
|
-
"moduleResolution": "
|
|
12
|
+
"moduleResolution": "bundler",
|
|
13
13
|
"esModuleInterop": true,
|
|
14
14
|
"removeComments": false,
|
|
15
15
|
"noUnusedParameters": false,
|
|
@@ -24,7 +24,12 @@
|
|
|
24
24
|
"skipLibCheck": true
|
|
25
25
|
},
|
|
26
26
|
"include": [
|
|
27
|
-
"src"
|
|
27
|
+
"src",
|
|
28
|
+
"src/types/**/*",
|
|
29
|
+
"node_modules/canvasengine/*"
|
|
30
|
+
],
|
|
31
|
+
"typeRoots": [
|
|
32
|
+
"node_modules/@types",
|
|
33
|
+
"src/types"
|
|
28
34
|
],
|
|
29
|
-
|
|
30
35
|
}
|
package/vite.config.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { defineConfig } from 'vite'
|
|
2
|
+
import canvasengine from '@canvasengine/compiler'
|
|
3
|
+
import dts from 'vite-plugin-dts'
|
|
4
|
+
import path from 'path'
|
|
5
|
+
import { fileURLToPath } from 'url'
|
|
6
|
+
|
|
7
|
+
const dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
8
|
+
|
|
9
|
+
export default defineConfig({
|
|
10
|
+
plugins: [
|
|
11
|
+
canvasengine(),
|
|
12
|
+
dts({
|
|
13
|
+
include: ['src/**/*.ts'],
|
|
14
|
+
outDir: 'dist'
|
|
15
|
+
})
|
|
16
|
+
],
|
|
17
|
+
build: {
|
|
18
|
+
target: 'esnext',
|
|
19
|
+
sourcemap: true,
|
|
20
|
+
minify: false,
|
|
21
|
+
lib: {
|
|
22
|
+
entry: 'src/index.ts',
|
|
23
|
+
formats: ['es'],
|
|
24
|
+
fileName: 'index'
|
|
25
|
+
},
|
|
26
|
+
rollupOptions: {
|
|
27
|
+
external: [/@rpgjs/, 'esbuild', 'canvasengine', '@canvasengine/presets', 'rxjs'],
|
|
28
|
+
output: {
|
|
29
|
+
preserveModules: true,
|
|
30
|
+
preserveModulesRoot: 'src'
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
})
|
package/CHANGELOG.md
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
# [4.3.0](https://github.com/RSamaium/RPG-JS/compare/v4.2.2...v4.3.0) (2024-01-29)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
### Features
|
|
10
|
-
|
|
11
|
-
* loading the game in a React app ([437917a](https://github.com/RSamaium/RPG-JS/commit/437917ace5de1a88777d84c4b39a48e147f77de4))
|
|
12
|
-
* reat app integration ([1b9b5d8](https://github.com/RSamaium/RPG-JS/commit/1b9b5d8bb5dd02bcf4a68ccd5eee19c6fc00a4eb))
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## [4.2.2](https://github.com/RSamaium/RPG-JS/compare/v4.2.1...v4.2.2) (2024-01-15)
|
|
19
|
-
|
|
20
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
## [4.2.1](https://github.com/RSamaium/RPG-JS/compare/v4.2.0...v4.2.1) (2024-01-12)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
### Bug Fixes
|
|
30
|
-
|
|
31
|
-
* #community-261 ([8221085](https://github.com/RSamaium/RPG-JS/commit/8221085a962b1555aa20ba154b6790d4522da971)), closes [#community-261](https://github.com/RSamaium/RPG-JS/issues/community-261)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# [4.2.0](https://github.com/RSamaium/RPG-JS/compare/v4.1.3...v4.2.0) (2023-12-09)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
### Features
|
|
41
|
-
|
|
42
|
-
* inject function ([902e62f](https://github.com/RSamaium/RPG-JS/commit/902e62ff4fdd9b5bd26ee7d5be9ccae2b051f248))
|
|
43
|
-
* propagate event directive ([edbab50](https://github.com/RSamaium/RPG-JS/commit/edbab506a2552ff64d2f638d1e088748cbc8cc86))
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
## [4.1.3](https://github.com/RSamaium/RPG-JS/compare/v4.1.2...v4.1.3) (2023-11-17)
|
|
50
|
-
|
|
51
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
## [4.1.2](https://github.com/RSamaium/RPG-JS/compare/v4.1.1...v4.1.2) (2023-10-30)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
### Bug Fixes
|
|
61
|
-
|
|
62
|
-
* **gui:** don't propagate events ([1439e0f](https://github.com/RSamaium/RPG-JS/commit/1439e0fa4718cbdc07cd2ceb8ff4067e116cef9b))
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
## [4.1.1](https://github.com/RSamaium/RPG-JS/compare/v4.1.0...v4.1.1) (2023-10-27)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
### Bug Fixes
|
|
72
|
-
|
|
73
|
-
* **gui:** get vue instance #community-215 ([2874815](https://github.com/RSamaium/RPG-JS/commit/287481517028196f1bf8bc327b68134e8f5f63d0)), closes [#community-215](https://github.com/RSamaium/RPG-JS/issues/community-215)
|
|
74
|
-
* **scene:** click in scene map ([04d56d6](https://github.com/RSamaium/RPG-JS/commit/04d56d6e07c58e2c039732e35ae3b94fc6751fa5))
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
# [4.1.0](https://github.com/RSamaium/RPG-JS/compare/v4.0.5...v4.1.0) (2023-10-20)
|
|
81
|
-
|
|
82
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
## 4.0.5 (2023-10-18)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
### Bug Fixes
|
|
92
|
-
|
|
93
|
-
* flickering motion of an event as it moves ([b2b8832](https://github.com/RSamaium/RPG-JS/commit/b2b8832a1582933afb64c698f40d1b0e72021780))
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
## 4.0.4 (2023-10-13)
|
|
100
|
-
|
|
101
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
## 4.0.3 (2023-10-10)
|
|
108
|
-
|
|
109
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
## 4.0.2 (2023-10-03)
|
|
116
|
-
|
|
117
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
## 4.0.1 (2023-10-03)
|
|
124
|
-
|
|
125
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
# 4.0.0-rc.13 (2023-09-09)
|
|
132
|
-
|
|
133
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
# 4.0.0-rc.12 (2023-09-08)
|
|
140
|
-
|
|
141
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
# 4.0.0-rc.11 (2023-08-30)
|
|
148
|
-
|
|
149
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
# 4.0.0-rc.10 (2023-08-28)
|
|
156
|
-
|
|
157
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
# 4.0.0-rc.9 (2023-08-25)
|
|
164
|
-
|
|
165
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
# 4.0.0-rc.8 (2023-08-23)
|
|
172
|
-
|
|
173
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
# [4.0.0-rc.6](https://github.com/RSamaium/RPG-JS/compare/v4.0.0-rc.5...v4.0.0-rc.6) (2023-08-20)
|
|
180
|
-
|
|
181
|
-
**Note:** Version bump only for package @rpgjs/client
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
# [4.0.0-rc.5](https://github.com/RSamaium/RPG-JS/compare/v4.0.0-rc.4...v4.0.0-rc.5) (2023-08-16)
|
|
188
|
-
|
|
189
|
-
**Note:** Version bump only for package @rpgjs/client
|