@rpgjs/client 3.0.0-beta.4 → 3.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/lib/Effects/Animation.d.ts +3 -4
  2. package/lib/Effects/Animation.js +1 -0
  3. package/lib/Effects/Animation.js.map +1 -1
  4. package/lib/Effects/Timeline.d.ts +2 -2
  5. package/lib/Effects/Timeline.js.map +1 -1
  6. package/lib/GameEngine.d.ts +34 -0
  7. package/lib/GameEngine.js +112 -0
  8. package/lib/GameEngine.js.map +1 -0
  9. package/lib/KeyboardControls.d.ts +6 -3
  10. package/lib/KeyboardControls.js +97 -45
  11. package/lib/KeyboardControls.js.map +1 -1
  12. package/lib/Renderer.d.ts +13 -20
  13. package/lib/Renderer.js +35 -17
  14. package/lib/Renderer.js.map +1 -1
  15. package/lib/RpgClient.d.ts +5 -3
  16. package/lib/RpgClientEngine.d.ts +68 -30
  17. package/lib/RpgClientEngine.js +168 -205
  18. package/lib/RpgClientEngine.js.map +1 -1
  19. package/lib/RpgGui.d.ts +14 -16
  20. package/lib/RpgGui.js +59 -6
  21. package/lib/RpgGui.js.map +1 -1
  22. package/lib/Scene/Map.d.ts +4 -18
  23. package/lib/Scene/Map.js +14 -6
  24. package/lib/Scene/Map.js.map +1 -1
  25. package/lib/Scene/Scene.d.ts +22 -15
  26. package/lib/Scene/Scene.js +6 -14
  27. package/lib/Scene/Scene.js.map +1 -1
  28. package/lib/Sprite/Character.d.ts +5 -11
  29. package/lib/Sprite/Character.js +22 -35
  30. package/lib/Sprite/Character.js.map +1 -1
  31. package/lib/Sprite/Spritesheet.js +1 -0
  32. package/lib/Sprite/Spritesheet.js.map +1 -1
  33. package/lib/Sprite/Spritesheets.d.ts +1 -1
  34. package/lib/Sprite/Spritesheets.js.map +1 -1
  35. package/lib/Tilemap/ImageLayer.d.ts +1 -1
  36. package/lib/Tilemap/ImageLayer.js +2 -2
  37. package/lib/Tilemap/ImageLayer.js.map +1 -1
  38. package/lib/Tilemap/Tile.d.ts +4 -3
  39. package/lib/Tilemap/Tile.js.map +1 -1
  40. package/lib/Tilemap/TileLayer.d.ts +9 -7
  41. package/lib/Tilemap/TileLayer.js +4 -0
  42. package/lib/Tilemap/TileLayer.js.map +1 -1
  43. package/lib/Tilemap/TileSet.d.ts +6 -4
  44. package/lib/Tilemap/TileSet.js +5 -0
  45. package/lib/Tilemap/TileSet.js.map +1 -1
  46. package/lib/Tilemap/index.d.ts +16 -13
  47. package/lib/Tilemap/index.js +10 -3
  48. package/lib/Tilemap/index.js.map +1 -1
  49. package/lib/clientEntryPoint.js +2 -1
  50. package/lib/clientEntryPoint.js.map +1 -1
  51. package/lib/index.d.ts +1 -1
  52. package/package.json +5 -8
package/lib/Renderer.js CHANGED
@@ -9,36 +9,41 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RpgRenderer = void 0;
12
13
  window.PIXI = require('pixi.js');
13
14
  const common_1 = require("@rpgjs/common");
14
15
  const Map_1 = require("./Scene/Map");
15
16
  const Scene_1 = require("./Presets/Scene");
16
17
  const RpgGui_1 = require("./RpgGui");
17
- const TIME_RESET_THRESHOLD = 100;
18
18
  class RpgRenderer {
19
19
  constructor(clientEngine) {
20
20
  this.clientEngine = clientEngine;
21
- this.scene = null;
22
21
  this.stage = new PIXI.Container();
23
22
  this.options = {};
23
+ this.scene = null;
24
24
  this._width = 800;
25
25
  this._height = 400;
26
- this.doReset = false;
27
- this.gameEngine = clientEngine.gameEngine;
26
+ this.gameEngine = this.clientEngine.gameEngine;
27
+ this.clientEngine.tick.subscribe(({ timestamp, deltaTime, frame }) => {
28
+ this.draw(timestamp, deltaTime, frame);
29
+ });
28
30
  }
31
+ /** @internal */
29
32
  init() {
30
33
  return __awaiter(this, void 0, void 0, function* () {
31
34
  this.onDOMLoaded();
32
35
  });
33
36
  }
37
+ /** @internal */
34
38
  _resize(w, h) {
35
39
  if (!w)
36
40
  w = this.options.canvas.width;
37
41
  if (!h)
38
42
  h = this.options.canvas.height;
39
- if (this.scene && this.scene.viewport) {
40
- this.scene.viewport.screenWidth = w;
41
- this.scene.viewport.screenHeight = h;
43
+ const scene = this.getScene();
44
+ if (this.scene && (scene === null || scene === void 0 ? void 0 : scene.viewport)) {
45
+ scene.viewport.screenWidth = w;
46
+ scene.viewport.screenHeight = h;
42
47
  }
43
48
  if (this.vm) {
44
49
  this.vm.$el.style = `width:${w}px;height:${h}px`;
@@ -47,6 +52,9 @@ class RpgRenderer {
47
52
  this._width = w;
48
53
  this._height = h;
49
54
  }
55
+ get canvas() {
56
+ return this.renderer.view;
57
+ }
50
58
  get height() {
51
59
  return this._height;
52
60
  }
@@ -59,10 +67,10 @@ class RpgRenderer {
59
67
  set width(val) {
60
68
  this._resize(val, this.height);
61
69
  }
70
+ /** @internal */
62
71
  onDOMLoaded() {
63
72
  let options = Object.assign({ antialias: true, autoResize: true, resolution: window.devicePixelRatio || 1 }, this.options.canvas);
64
73
  this.renderer = PIXI.autoDetectRenderer(options);
65
- //this.gameEngine.renderer = this.renderer
66
74
  this.selector = document.body.querySelector(this.options.selector);
67
75
  this.guiEl = this.selector.querySelector(this.options.selectorGui);
68
76
  this.canvasEl = this.selector.querySelector(this.options.selectorCanvas);
@@ -78,9 +86,10 @@ class RpgRenderer {
78
86
  else {
79
87
  this.canvasEl.appendChild(this.renderer.view);
80
88
  }
81
- RpgGui_1.RpgGui._initalize(this.client);
89
+ RpgGui_1.RpgGui._initalize(this.clientEngine);
82
90
  this.resize();
83
91
  }
92
+ /** @internal */
84
93
  resize() {
85
94
  const size = () => {
86
95
  const { offsetWidth, offsetHeight } = this.canvasEl || this.selector;
@@ -90,26 +99,31 @@ class RpgRenderer {
90
99
  window.addEventListener('resize', size);
91
100
  size();
92
101
  }
102
+ /** @internal */
93
103
  getScene() {
94
104
  return this.scene;
95
105
  }
106
+ /** @internal */
96
107
  draw(t, dt, frame) {
108
+ if (!this.renderer)
109
+ return;
97
110
  if (this.scene)
98
111
  this.scene.draw(t, dt, frame);
99
112
  this.renderer.render(this.stage);
100
113
  }
114
+ /** @internal */
101
115
  loadScene(name, obj) {
116
+ var _a;
102
117
  return __awaiter(this, void 0, void 0, function* () {
118
+ const currentPlayerId = this.gameEngine.playerId;
103
119
  common_1.RpgPlugin.emit(common_1.HookClient.BeforeSceneLoading, {
104
120
  name,
105
121
  obj
106
122
  });
107
- this.gameEngine.world.removeObject(this.gameEngine.playerId);
123
+ this.scene = null;
124
+ this.gameEngine.world.removeObject(currentPlayerId);
108
125
  this.stage.removeChildren();
109
126
  const scenes = this.options.scenes || {};
110
- if (this.scene) {
111
- this.scene.controls.boundKeys = {};
112
- }
113
127
  switch (name) {
114
128
  case Scene_1.Scene.Map:
115
129
  const sceneClass = scenes[Scene_1.Scene.Map] || Map_1.SceneMap;
@@ -119,11 +133,15 @@ class RpgRenderer {
119
133
  });
120
134
  break;
121
135
  }
122
- const container = yield this.scene.load(obj);
123
- this.stage.addChild(container);
124
- common_1.RpgPlugin.emit(common_1.HookClient.AfterSceneLoading, this.scene);
136
+ if (!this.scene)
137
+ return;
138
+ const container = yield ((_a = this.getScene()) === null || _a === void 0 ? void 0 : _a.load(obj));
139
+ if (container) {
140
+ this.stage.addChild(container);
141
+ common_1.RpgPlugin.emit(common_1.HookClient.AfterSceneLoading, this.scene);
142
+ }
125
143
  });
126
144
  }
127
145
  }
128
- exports.default = RpgRenderer;
146
+ exports.RpgRenderer = RpgRenderer;
129
147
  //# sourceMappingURL=Renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../src/Renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../src/Renderer.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { RpgSprite } from './Sprite/Player';
2
2
  import { ModuleType } from '@rpgjs/common';
3
3
  import { SceneMap } from './Scene/Map';
4
4
  import { RpgClientEngine } from './RpgClientEngine';
5
+ declare type RpgClass<T = any> = new (...args: any[]) => T;
5
6
  export interface RpgClientEngineHooks {
6
7
  /**
7
8
  * When the engine is started. If you send false, you prevent the client from connecting to the server
@@ -9,7 +10,7 @@ export interface RpgClientEngineHooks {
9
10
  * @prop { (engine: RpgClientEngine) => boolean | any } [onStart]
10
11
  * @memberof RpgEngineHooks
11
12
  */
12
- onStart?: (engine: RpgClientEngine) => any;
13
+ onStart?: (engine: RpgClientEngine) => boolean | void;
13
14
  /**
14
15
  * Each frame
15
16
  *
@@ -208,7 +209,7 @@ export interface RpgClient {
208
209
  * @prop {Array<Class>} [spritesheets]
209
210
  * @memberof RpgClient
210
211
  * */
211
- spritesheets?: any[];
212
+ spritesheets?: RpgClass[];
212
213
  /**
213
214
  * Array containing the list of VueJS components
214
215
  *
@@ -261,7 +262,7 @@ export interface RpgClient {
261
262
  * @prop {Array<Class>} [sounds]
262
263
  * @memberof RpgClient
263
264
  * */
264
- sounds?: any[];
265
+ sounds?: RpgClass[];
265
266
  /**
266
267
  * Give the `RpgSprite` class. A Sprite represents a player or an event
267
268
  *
@@ -308,3 +309,4 @@ export interface RpgClient {
308
309
  map: RpgSceneMapHooks;
309
310
  };
310
311
  }
312
+ export {};
@@ -1,11 +1,15 @@
1
1
  import { KeyboardControls } from './KeyboardControls';
2
+ import { RpgRenderer } from './Renderer';
2
3
  import { Observable, Subject } from 'rxjs';
3
- declare type ObjectFixture = {
4
- object: any;
5
- paramsChanged: any;
4
+ import { GameEngineClient, ObjectFixture } from './GameEngine';
5
+ import { Scene } from './Scene/Scene';
6
+ declare type Tick = {
7
+ timestamp: number;
8
+ deltaTime: number;
9
+ frame: number;
6
10
  };
7
11
  export declare class RpgClientEngine {
8
- gameEngine: any;
12
+ gameEngine: GameEngineClient;
9
13
  private options;
10
14
  /**
11
15
  * Get the rendering
@@ -14,7 +18,7 @@ export declare class RpgClientEngine {
14
18
  * @readonly
15
19
  * @memberof RpgClientEngine
16
20
  * */
17
- renderer: any;
21
+ renderer: RpgRenderer;
18
22
  /**
19
23
  * Get the socket
20
24
  *
@@ -40,18 +44,50 @@ export declare class RpgClientEngine {
40
44
  * */
41
45
  controls: KeyboardControls;
42
46
  _options: any;
43
- private _objects;
47
+ private _tick;
44
48
  keyChange: Subject<string>;
45
49
  private hasBeenDisconnected;
46
- private playerVault;
47
50
  private isTeleported;
48
51
  io: any;
49
52
  private lastTimestamp;
50
- private pressInput;
53
+ private frame;
51
54
  private subscriptionWorld;
52
- constructor(gameEngine: any, options: any);
55
+ private clientFrames;
56
+ private serverFrames;
57
+ /**
58
+ * Read objects synchronized with the server
59
+ *
60
+ * @prop {Observable< {
61
+ [id: string]: {
62
+ object: any,
63
+ paramsChanged: any
64
+ }
65
+ } >} [objects]
66
+ * @readonly
67
+ * @memberof RpgClientEngine
68
+ */
69
+ objects: Observable<{
70
+ [id: string]: ObjectFixture;
71
+ }>;
72
+ constructor(gameEngine: GameEngineClient, options: any);
53
73
  private _init;
54
74
  private addResource;
75
+ /**
76
+ * Listen to each frame
77
+ *
78
+ * @prop {Observable<{ timestamp: number, deltaTime: number, frame: number }>} tick
79
+ * @readonly
80
+ * @since 3.0.0-beta.5
81
+ * @memberof RpgClientEngine
82
+ * @example
83
+ *
84
+ * ```ts
85
+ * client.tick.subscribe(({ timestamp, deltaTime, frame }) => {
86
+ *
87
+ * })
88
+ * ```
89
+ * */
90
+ get tick(): Observable<Tick>;
55
91
  /**
56
92
  * Adds Spritesheet classes
57
93
  *
@@ -80,28 +116,19 @@ export declare class RpgClientEngine {
80
116
  * @returns {Promise< void >}
81
117
  * @memberof RpgClientEngine
82
118
  */
83
- start(): Promise<void>;
119
+ start(options?: {
120
+ renderLoop: boolean;
121
+ }): Promise<void>;
84
122
  /**
85
- * Read objects synchronized with the server
123
+ * Display the next frame. Useful for unit tests
86
124
  *
87
- * @prop {Observable< {
88
- [id: string]: {
89
- object: any,
90
- paramsChanged: any
91
- }
92
- } >} [objects]
93
- * @readonly
125
+ * @title Next Frame
126
+ * @since 3.0.0-beta.5
127
+ * @param {number} timestamp Indicate the timestamp of the frame
128
+ * @method nextFrame()
94
129
  * @memberof RpgClientEngine
95
130
  */
96
- get objects(): Observable<{
97
- [id: string]: ObjectFixture;
98
- }>;
99
- private getObjects;
100
- private getObject;
101
- private resetObjects;
102
- private removeObject;
103
- private updateObject;
104
- sendInput(actionName: string): void;
131
+ nextFrame(timestamp: number): void;
105
132
  private serverReconciliation;
106
133
  private step;
107
134
  /**
@@ -123,7 +150,7 @@ export declare class RpgClientEngine {
123
150
  * @readonly
124
151
  * @memberof RpgClientEngine
125
152
  * */
126
- get vueApp(): any;
153
+ get vueApp(): import("vue").App<any>;
127
154
  /**
128
155
  * VueJS Parent component instance
129
156
  *
@@ -133,15 +160,26 @@ export declare class RpgClientEngine {
133
160
  * @readonly
134
161
  * @memberof RpgClientEngine
135
162
  * */
136
- get vueInstance(): any;
163
+ get vueInstance(): import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>>;
137
164
  /**
138
165
  * retrieves the current scene (SceneMap if you are on a map)
139
166
  *
140
167
  * @prop {RpgScene} [scene]
168
+ * @deprecated
141
169
  * @readonly
142
170
  * @memberof RpgClientEngine
143
171
  * */
144
- get scene(): any;
172
+ get scene(): Scene | null;
173
+ /**
174
+ * retrieves the current scene (SceneMap if you are on a map)
175
+ *
176
+ * @title Connect to server
177
+ * @method getScene()
178
+ * @returns {RpgScene}
179
+ * @memberof RpgClientEngine
180
+ */
181
+ getScene<T = Scene>(): T | null;
182
+ get PIXI(): typeof PIXI;
145
183
  reset(): void;
146
184
  }
147
185
  export {};