@rpgjs/client 3.0.0-beta.2 → 3.0.0-beta.5

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 (48) hide show
  1. package/lib/KeyboardControls.d.ts +6 -2
  2. package/lib/KeyboardControls.js +87 -40
  3. package/lib/KeyboardControls.js.map +1 -1
  4. package/lib/Renderer.d.ts +4 -2
  5. package/lib/Renderer.js +13 -2
  6. package/lib/Renderer.js.map +1 -1
  7. package/lib/Resources.d.ts +22 -1
  8. package/lib/Resources.js +22 -2
  9. package/lib/Resources.js.map +1 -1
  10. package/lib/RpgClient.d.ts +15 -4
  11. package/lib/RpgClientEngine.d.ts +62 -2
  12. package/lib/RpgClientEngine.js +163 -84
  13. package/lib/RpgClientEngine.js.map +1 -1
  14. package/lib/RpgGui.d.ts +11 -9
  15. package/lib/RpgGui.js +46 -5
  16. package/lib/RpgGui.js.map +1 -1
  17. package/lib/Scene/Map.d.ts +64 -2
  18. package/lib/Scene/Map.js +90 -8
  19. package/lib/Scene/Map.js.map +1 -1
  20. package/lib/Scene/Scene.d.ts +28 -17
  21. package/lib/Scene/Scene.js +30 -17
  22. package/lib/Scene/Scene.js.map +1 -1
  23. package/lib/Sound/Sounds.d.ts +1 -1
  24. package/lib/Sound/Sounds.js +2 -2
  25. package/lib/Sound/Sounds.js.map +1 -1
  26. package/lib/Sprite/Character.d.ts +19 -2
  27. package/lib/Sprite/Character.js +33 -14
  28. package/lib/Sprite/Character.js.map +1 -1
  29. package/lib/Sprite/Spritesheets.d.ts +1 -1
  30. package/lib/Sprite/Spritesheets.js +2 -2
  31. package/lib/Sprite/Spritesheets.js.map +1 -1
  32. package/lib/Tilemap/Tile.d.ts +1 -0
  33. package/lib/Tilemap/Tile.js +1 -1
  34. package/lib/Tilemap/Tile.js.map +1 -1
  35. package/lib/Tilemap/TileLayer.d.ts +4 -0
  36. package/lib/Tilemap/TileLayer.js +53 -7
  37. package/lib/Tilemap/TileLayer.js.map +1 -1
  38. package/lib/Tilemap/TileSet.js +4 -0
  39. package/lib/Tilemap/TileSet.js.map +1 -1
  40. package/lib/Tilemap/index.d.ts +3 -0
  41. package/lib/Tilemap/index.js +13 -3
  42. package/lib/Tilemap/index.js.map +1 -1
  43. package/lib/clientEntryPoint.js +4 -2
  44. package/lib/clientEntryPoint.js.map +1 -1
  45. package/lib/index.d.ts +3 -3
  46. package/lib/index.js +6 -3
  47. package/lib/index.js.map +1 -1
  48. package/package.json +6 -5
@@ -1,7 +1,8 @@
1
+ import { Input } from '@rpgjs/common';
1
2
  import { RpgClientEngine } from './RpgClientEngine';
2
3
  export interface ControlOptions {
3
4
  repeat?: boolean;
4
- bind: string | string[];
5
+ bind: string | string[] | Input | Input[];
5
6
  method?: Function;
6
7
  }
7
8
  export interface Controls {
@@ -20,6 +21,8 @@ export declare class KeyboardControls {
20
21
  private lastKeyPressed;
21
22
  private _controlsOptions;
22
23
  constructor(clientEngine: RpgClientEngine);
24
+ preStep(): void;
25
+ private directionToAngle;
23
26
  private setupListeners;
24
27
  private bindKey;
25
28
  private applyKeyDown;
@@ -67,9 +70,10 @@ export declare class KeyboardControls {
67
70
  * @method applyControl(controlName,isDown)
68
71
  * @param {string} controlName
69
72
  * @param {boolean} [isDown]
73
+ * @returns {Promise<void>}
70
74
  * @memberof KeyboardControls
71
75
  */
72
- applyControl(controlName: string, isDown?: boolean | undefined): void;
76
+ applyControl(controlName: string | number, isDown?: boolean | undefined): Promise<void>;
73
77
  /**
74
78
  * Stop listening to the inputs. Pressing a key won't do anything
75
79
  *
@@ -1,4 +1,13 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.KeyboardControls = void 0;
4
13
  const common_1 = require("@rpgjs/common");
@@ -22,10 +31,10 @@ const keyCodeTable = {
22
31
  34: 'page down',
23
32
  35: 'end',
24
33
  36: 'home',
25
- 37: 'left',
26
- 38: 'up',
27
- 39: 'right',
28
- 40: 'down',
34
+ 37: common_1.Direction.Left,
35
+ 38: common_1.Direction.Up,
36
+ 39: common_1.Direction.Right,
37
+ 40: common_1.Direction.Down,
29
38
  41: 'select',
30
39
  42: 'print',
31
40
  43: 'execute',
@@ -167,6 +176,12 @@ const keyCodeTable = {
167
176
  244: 'kanji',
168
177
  255: 'toggle touchpad'
169
178
  };
179
+ const directionCode = {
180
+ [common_1.Direction.Up]: 1,
181
+ [common_1.Direction.Right]: 2,
182
+ [common_1.Direction.Down]: 3,
183
+ [common_1.Direction.Left]: 4
184
+ };
170
185
  const { isArray } = common_1.Utils;
171
186
  const inverse = (obj) => {
172
187
  const newObj = {};
@@ -189,28 +204,54 @@ class KeyboardControls {
189
204
  this.setupListeners();
190
205
  if (globalConfig.inputs)
191
206
  this.setInputs(globalConfig.inputs);
192
- this.gameEngine.on('client__preStep', () => {
193
- for (let keyName of Object.keys(this.boundKeys)) {
194
- if (this.keyState[keyName] && this.keyState[keyName].isDown) {
195
- const { repeat, method } = this.boundKeys[keyName].options;
196
- // handle repeat press
197
- if (repeat || this.keyState[keyName].count == 0) {
198
- // callback to get live parameters if function
199
- let parameters = this.boundKeys[keyName].parameters;
200
- if (typeof parameters === "function") {
201
- parameters = parameters();
202
- }
203
- if (method) {
204
- method(this.boundKeys[keyName]);
205
- }
206
- else {
207
- this.clientEngine.sendInput(this.boundKeys[keyName].actionName);
208
- }
209
- this.keyState[keyName].count++;
207
+ }
208
+ preStep() {
209
+ //this.directionToAngle()
210
+ const boundKeys = Object.keys(this.boundKeys);
211
+ const applyInput = (keyName) => {
212
+ if (this.keyState[keyName] && this.keyState[keyName].isDown) {
213
+ const { repeat, method } = this.boundKeys[keyName].options;
214
+ if (repeat || this.keyState[keyName].count == 0) {
215
+ let parameters = this.boundKeys[keyName].parameters;
216
+ if (typeof parameters === "function") {
217
+ parameters = parameters();
210
218
  }
219
+ if (method) {
220
+ method(this.boundKeys[keyName]);
221
+ }
222
+ else {
223
+ this.clientEngine.sendInput(this.boundKeys[keyName].actionName);
224
+ }
225
+ this.keyState[keyName].count++;
211
226
  }
212
227
  }
213
- });
228
+ };
229
+ for (let keyName of boundKeys) {
230
+ applyInput(keyName);
231
+ }
232
+ }
233
+ // TODO, merge direction
234
+ directionToAngle() {
235
+ let directionVal = 0;
236
+ let nbFound = 0;
237
+ for (let keyName of Object.keys(this.boundKeys)) {
238
+ if (this.keyState[keyName] && this.keyState[keyName].isDown) {
239
+ if (directionCode[keyName]) {
240
+ this.keyState[keyName] = null;
241
+ directionVal += directionCode[keyName];
242
+ nbFound++;
243
+ }
244
+ }
245
+ }
246
+ if (!nbFound)
247
+ return;
248
+ const index = directionVal / nbFound;
249
+ if (!this.keyState[index]) {
250
+ this.keyState[index] = {
251
+ count: 0
252
+ };
253
+ }
254
+ this.keyState[index].isDown = true;
214
255
  }
215
256
  setupListeners() {
216
257
  document.addEventListener('keydown', (e) => { this.onKeyChange(e, true); });
@@ -239,14 +280,17 @@ class KeyboardControls {
239
280
  this.onKeyChange(e, false);
240
281
  }
241
282
  applyKeyPress(name) {
242
- this.applyKeyDown(name);
243
- setTimeout(() => {
244
- this.applyKeyUp(name);
245
- }, 200);
283
+ return new Promise((resolve) => {
284
+ this.applyKeyDown(name);
285
+ setTimeout(() => {
286
+ this.applyKeyUp(name);
287
+ resolve();
288
+ }, 200);
289
+ });
246
290
  }
247
291
  onKeyChange(e, isDown) {
248
292
  e = e || window.event;
249
- let keyName = keyCodeTable[e.keyCode];
293
+ const keyName = keyCodeTable[e.keyCode];
250
294
  const isStopped = this.stop;
251
295
  if (isDown)
252
296
  this.clientEngine.keyChange.next(keyName);
@@ -311,22 +355,25 @@ class KeyboardControls {
311
355
  * @method applyControl(controlName,isDown)
312
356
  * @param {string} controlName
313
357
  * @param {boolean} [isDown]
358
+ * @returns {Promise<void>}
314
359
  * @memberof KeyboardControls
315
360
  */
316
361
  applyControl(controlName, isDown) {
317
- const control = this._controlsOptions[controlName];
318
- if (control) {
319
- const input = isArray(control.bind) ? control.bind[0] : control.bind;
320
- if (isDown === undefined) {
321
- this.applyKeyPress(input);
322
- }
323
- else if (isDown) {
324
- this.applyKeyDown(input);
325
- }
326
- else {
327
- this.applyKeyUp(input);
362
+ return __awaiter(this, void 0, void 0, function* () {
363
+ const control = this._controlsOptions[controlName];
364
+ if (control) {
365
+ const input = isArray(control.bind) ? control.bind[0] : control.bind;
366
+ if (isDown === undefined) {
367
+ yield this.applyKeyPress(input);
368
+ }
369
+ else if (isDown) {
370
+ this.applyKeyDown(input);
371
+ }
372
+ else {
373
+ this.applyKeyUp(input);
374
+ }
328
375
  }
329
- }
376
+ });
330
377
  }
331
378
  /**
332
379
  * Stop listening to the inputs. Pressing a key won't do anything
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardControls.js","sourceRoot":"","sources":["../src/KeyboardControls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeyboardControls.js","sourceRoot":"","sources":["../src/KeyboardControls.ts"],"names":[],"mappings":"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"}
package/lib/Renderer.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { Scene } from './Presets/Scene';
2
+ import { RpgClientEngine } from './RpgClientEngine';
1
3
  export default class RpgRenderer {
2
4
  private clientEngine;
3
5
  vm: any;
@@ -14,7 +16,7 @@ export default class RpgRenderer {
14
16
  client: any;
15
17
  gameEngine: any;
16
18
  doReset: boolean;
17
- constructor(clientEngine: any);
19
+ constructor(clientEngine: RpgClientEngine);
18
20
  init(): Promise<void>;
19
21
  _resize(w: any, h: any): void;
20
22
  get height(): number;
@@ -23,7 +25,7 @@ export default class RpgRenderer {
23
25
  set width(val: number);
24
26
  onDOMLoaded(): void;
25
27
  resize(): void;
26
- getScene(): any;
28
+ getScene(): Scene;
27
29
  draw(t: number, dt: number, frame: number): void;
28
30
  loadScene(name: any, obj: any): Promise<void>;
29
31
  }
package/lib/Renderer.js CHANGED
@@ -14,7 +14,6 @@ const common_1 = require("@rpgjs/common");
14
14
  const Map_1 = require("./Scene/Map");
15
15
  const Scene_1 = require("./Presets/Scene");
16
16
  const RpgGui_1 = require("./RpgGui");
17
- const TIME_RESET_THRESHOLD = 100;
18
17
  class RpgRenderer {
19
18
  constructor(clientEngine) {
20
19
  this.clientEngine = clientEngine;
@@ -25,6 +24,9 @@ class RpgRenderer {
25
24
  this._height = 400;
26
25
  this.doReset = false;
27
26
  this.gameEngine = clientEngine.gameEngine;
27
+ this.clientEngine.tick.subscribe(({ timestamp, deltaTime, frame }) => {
28
+ this.draw(timestamp, deltaTime, frame);
29
+ });
28
30
  }
29
31
  init() {
30
32
  return __awaiter(this, void 0, void 0, function* () {
@@ -94,17 +96,26 @@ class RpgRenderer {
94
96
  return this.scene;
95
97
  }
96
98
  draw(t, dt, frame) {
99
+ if (!this.renderer)
100
+ return;
97
101
  if (this.scene)
98
102
  this.scene.draw(t, dt, frame);
99
103
  this.renderer.render(this.stage);
100
104
  }
101
105
  loadScene(name, obj) {
102
106
  return __awaiter(this, void 0, void 0, function* () {
107
+ const currentPlayerId = this.gameEngine.playerId;
103
108
  common_1.RpgPlugin.emit(common_1.HookClient.BeforeSceneLoading, {
104
109
  name,
105
110
  obj
106
111
  });
107
- this.gameEngine.world.removeObject(this.gameEngine.playerId);
112
+ this.gameEngine.world.removeObject(currentPlayerId);
113
+ // If a scene exists, remove the current player and viewport
114
+ if (this.scene) {
115
+ this.scene.removeObject(currentPlayerId);
116
+ if (this.scene.viewport)
117
+ this.scene.viewport.plugins.remove('follow');
118
+ }
108
119
  this.stage.removeChildren();
109
120
  const scenes = this.options.scenes || {};
110
121
  if (this.scene) {
@@ -1 +1 @@
1
- {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../src/Renderer.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAEhC,0CAAqD;AACrD,qCAAsC;AACtC,2CAAuC;AACvC,qCAAiC;AAEjC,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAEhC,MAAqB,WAAW;IAiB5B,YAAoB,YAAY;QAAZ,iBAAY,GAAZ,YAAY,CAAA;QAdxB,UAAK,GAAQ,IAAI,CAAA;QACjB,UAAK,GAAmB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAA;QAE7C,YAAO,GAAQ,EAAE,CAAA;QAChB,WAAM,GAAW,GAAG,CAAA;QACpB,YAAO,GAAW,GAAG,CAAA;QAO7B,YAAO,GAAG,KAAK,CAAA;QAGX,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAA;IAC7C,CAAC;IAEK,IAAI;;YACN,IAAI,CAAC,WAAW,EAAE,CAAA;QACtB,CAAC;KAAA;IAED,OAAO,CAAC,CAAC,EAAE,CAAC;QACR,IAAI,CAAC,CAAC;YAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;QACrC,IAAI,CAAC,CAAC;YAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA;QACtC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAA;SACvC;QACD,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAA;SACnD;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;IACpB,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,IAAI,MAAM,CAAC,GAAG;QACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,GAAG;QACT,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,WAAW;QACP,IAAI,OAAO,mBACP,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,IAAI,EAChB,UAAU,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC,IACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CACzB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAChD,0CAA0C;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAClE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAExE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;SACxC;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YACxE,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAA;YACvE,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAA;SACrC;aACI;YACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;SAChD;QAED,eAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE9B,IAAI,CAAC,MAAM,EAAE,CAAA;IACjB,CAAC;IAED,MAAM;QACF,MAAM,IAAI,GAAG,GAAG,EAAE;YACd,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAA;YACpE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;YACvC,kBAAS,CAAC,IAAI,CAAC,mBAAU,CAAC,YAAY,CAAC,CAAA;QAC3C,CAAC,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACvC,IAAI,EAAE,CAAA;IACV,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACrB,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,EAAU,EAAE,KAAa;QACrC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAEK,SAAS,CAAC,IAAI,EAAE,GAAG;;YACrB,kBAAS,CAAC,IAAI,CAAC,mBAAU,CAAC,kBAAkB,EAAE;gBAC1C,IAAI;gBACJ,GAAG;aACN,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;YAC5D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAA;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;YACxC,IAAI,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAA;aACrC;YACD,QAAQ,IAAI,EAAE;gBACV,KAAK,aAAK,CAAC,GAAG;oBACV,MAAM,UAAU,GAAG,MAAM,CAAC,aAAK,CAAC,GAAG,CAAC,IAAI,cAAQ,CAAA;oBAChD,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE;wBACzC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK;wBACvC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM;qBAC5C,CAAC,CAAA;oBACF,MAAM;aACb;YAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YAC9B,kBAAS,CAAC,IAAI,CAAC,mBAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5D,CAAC;KAAA;CAEJ;AArID,8BAqIC"}
1
+ {"version":3,"file":"Renderer.js","sourceRoot":"","sources":["../src/Renderer.ts"],"names":[],"mappings":"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"}
@@ -1 +1,22 @@
1
- export declare function _initResource(memory: Map<string, any>, _resources: any, prop: string): void;
1
+ import { RpgClientEngine } from "./RpgClientEngine";
2
+ /**
3
+ * Get/Set images in resources
4
+ ```ts
5
+ import { RpgResource } from '@rpg/client'
6
+ const fileLink = RpgResource.spritesheets.get('resource_id')
7
+ ```
8
+ * @title Get/Set image link
9
+ * @prop { Map< string, string > } spritesheets
10
+ * @memberof Resources
11
+ */
12
+ /**
13
+ * Get/Set sounds in resources
14
+ ```ts
15
+ import { RpgResource } from '@rpg/client'
16
+ const fileLink = RpgResource.sounds.get('resource_id')
17
+ ```
18
+ * @title Get/Set sound link
19
+ * @prop { Map< string, string > } sounds
20
+ * @memberof Resources
21
+ */
22
+ export declare function _initResource(memory: Map<string, any>, _resources: any, prop: string, engine: RpgClientEngine): void;
package/lib/Resources.js CHANGED
@@ -1,7 +1,27 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports._initResource = void 0;
4
- function _initResource(memory, _resources, prop) {
4
+ /**
5
+ * Get/Set images in resources
6
+ ```ts
7
+ import { RpgResource } from '@rpg/client'
8
+ const fileLink = RpgResource.spritesheets.get('resource_id')
9
+ ```
10
+ * @title Get/Set image link
11
+ * @prop { Map< string, string > } spritesheets
12
+ * @memberof Resources
13
+ */
14
+ /**
15
+ * Get/Set sounds in resources
16
+ ```ts
17
+ import { RpgResource } from '@rpg/client'
18
+ const fileLink = RpgResource.sounds.get('resource_id')
19
+ ```
20
+ * @title Get/Set sound link
21
+ * @prop { Map< string, string > } sounds
22
+ * @memberof Resources
23
+ */
24
+ function _initResource(memory, _resources, prop, engine) {
5
25
  for (let resource of _resources) {
6
26
  const pluralProp = prop + 's';
7
27
  if (resource[pluralProp]) {
@@ -12,7 +32,7 @@ function _initResource(memory, _resources, prop) {
12
32
  }
13
33
  }
14
34
  else {
15
- const instance = new resource();
35
+ const instance = new resource(engine);
16
36
  instance[prop] = instance[prop];
17
37
  memory.set(resource.id, instance);
18
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Resources.js","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":";;;AAAA,SAAgB,aAAa,CAAC,MAAwB,EAAE,UAAU,EAAE,IAAY;IAC5E,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE;QAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG,CAAA;QAC7B,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;YACtB,KAAK,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;gBAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;aAC5B;SACJ;aACI;YACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;YAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;SACpC;KACJ;AACL,CAAC;AAhBD,sCAgBC"}
1
+ {"version":3,"file":"Resources.js","sourceRoot":"","sources":["../src/Resources.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;EASE;AACF;;;;;;;;;EASE;AACF,SAAgB,aAAa,CAAC,MAAwB,EAAE,UAAU,EAAE,IAAY,EAAE,MAAuB;IACrG,KAAK,IAAI,QAAQ,IAAI,UAAU,EAAE;QAC7B,MAAM,UAAU,GAAG,IAAI,GAAG,GAAG,CAAA;QAC7B,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;YACtB,KAAK,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;gBAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;aAC5B;SACJ;aACI;YACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;YACrC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;SACpC;KACJ;AACL,CAAC;AAhBD,sCAgBC"}
@@ -1,6 +1,6 @@
1
1
  import { RpgSprite } from './Sprite/Player';
2
2
  import { ModuleType } from '@rpgjs/common';
3
- import { Scene } from './Scene/Scene';
3
+ import { SceneMap } from './Scene/Map';
4
4
  import { RpgClientEngine } from './RpgClientEngine';
5
5
  export interface RpgClientEngineHooks {
6
6
  /**
@@ -48,6 +48,14 @@ export interface RpgClientEngineHooks {
48
48
  * @memberof RpgEngineHooks
49
49
  */
50
50
  onConnectError?: (engine: RpgClientEngine, err: any, socket: any) => any;
51
+ /**
52
+ * Called when window is resized
53
+ *
54
+ * @prop { () => any } [onWindowResize]
55
+ * @since 3.0.0-beta.4
56
+ * @memberof RpgEngineHooks
57
+ */
58
+ onWindowResize?: () => any;
51
59
  }
52
60
  export interface RpgSpriteHooks {
53
61
  /**
@@ -61,6 +69,7 @@ export interface RpgSpriteHooks {
61
69
  * Called when the sprite is deleted
62
70
  *
63
71
  * @prop { (sprite: RpgSprite) => any } [onDestroy]
72
+ * @memberof RpgSpriteHooks
64
73
  */
65
74
  onDestroy?: (sprite: RpgSprite) => any;
66
75
  /**
@@ -81,10 +90,12 @@ export interface RpgSpriteHooks {
81
90
  * When the x, y positions change
82
91
  *
83
92
  * @prop { (sprite: RpgSprite) => any } [onMove]
93
+ * @since 3.0.0-beta.4
94
+ * @memberof RpgSpriteHooks
84
95
  */
85
96
  onMove?: (sprite: RpgSprite) => any;
86
97
  }
87
- export interface RpgSceneHooks {
98
+ export interface RpgSceneHooks<Scene> {
88
99
  /**
89
100
  * a sprite has been added on the scene
90
101
  *
@@ -131,14 +142,14 @@ export interface RpgSceneHooks {
131
142
  */
132
143
  onDraw?: (scene: Scene, t: number) => any;
133
144
  }
134
- export interface RpgSceneMapHooks extends RpgSceneHooks {
145
+ export interface RpgSceneMapHooks extends RpgSceneHooks<SceneMap> {
135
146
  /**
136
147
  * The map and resources are being loaded
137
148
  *
138
149
  * @prop { (scene: RpgSceneMap, loader: PIXI.Loader) => any } [onMapLoading]
139
150
  * @memberof RpgSceneHooks
140
151
  */
141
- onMapLoading?: (scene: Scene, loader: PIXI.Loader) => any;
152
+ onMapLoading?: (scene: SceneMap, loader: PIXI.Loader) => any;
142
153
  }
143
154
  export interface RpgClient {
144
155
  /**
@@ -4,6 +4,11 @@ declare type ObjectFixture = {
4
4
  object: any;
5
5
  paramsChanged: any;
6
6
  };
7
+ declare type Tick = {
8
+ timestamp: number;
9
+ deltaTime: number;
10
+ frame: number;
11
+ };
7
12
  export declare class RpgClientEngine {
8
13
  gameEngine: any;
9
14
  private options;
@@ -41,15 +46,56 @@ export declare class RpgClientEngine {
41
46
  controls: KeyboardControls;
42
47
  _options: any;
43
48
  private _objects;
49
+ private _tick;
44
50
  keyChange: Subject<string>;
45
51
  private hasBeenDisconnected;
46
52
  private playerVault;
47
53
  private isTeleported;
48
54
  io: any;
49
55
  private lastTimestamp;
50
- private pressInput;
56
+ private frame;
57
+ private subscriptionWorld;
58
+ private clientFrames;
59
+ private serverFrames;
51
60
  constructor(gameEngine: any, options: any);
52
61
  private _init;
62
+ private addResource;
63
+ /**
64
+ * Listen to each frame
65
+ *
66
+ * @prop {Observable<{ timestamp: number, deltaTime: number, frame: number }>} tick
67
+ * @readonly
68
+ * @since 3.0.0-beta.5
69
+ * @memberof RpgClientEngine
70
+ * @example
71
+ *
72
+ * ```ts
73
+ * client.tick.subscribe(({ timestamp, deltaTime, frame }) => {
74
+ *
75
+ * })
76
+ * ```
77
+ * */
78
+ get tick(): Observable<Tick>;
79
+ /**
80
+ * Adds Spritesheet classes
81
+ *
82
+ * @title Add Spritesheet
83
+ * @method addSpriteSheet(spritesheetClass|spritesheetClass[])
84
+ * @returns {void}
85
+ * @since 3.0.0-beta.3
86
+ * @memberof RpgClientEngine
87
+ */
88
+ addSpriteSheet(spritesheetClass: any): void;
89
+ /**
90
+ * Adds Sound classes
91
+ *
92
+ * @title Add Sound
93
+ * @method addSpriteSheet(soundClass|soundClass[])
94
+ * @returns {void}
95
+ * @since 3.0.0-beta.3
96
+ * @memberof RpgClientEngine
97
+ */
98
+ addSound(soundClass: any): void;
53
99
  /**
54
100
  * Starts the client side and connects to the server
55
101
  *
@@ -58,7 +104,19 @@ export declare class RpgClientEngine {
58
104
  * @returns {Promise< void >}
59
105
  * @memberof RpgClientEngine
60
106
  */
61
- start(): Promise<void>;
107
+ start(options?: {
108
+ renderLoop: boolean;
109
+ }): Promise<void>;
110
+ /**
111
+ * Display the next frame. Useful for unit tests
112
+ *
113
+ * @title Next Frame
114
+ * @since 3.0.0-beta.5
115
+ * @param {number} timestamp Indicate the timestamp of the frame
116
+ * @method nextFrame()
117
+ * @memberof RpgClientEngine
118
+ */
119
+ nextFrame(timestamp: number): void;
62
120
  /**
63
121
  * Read objects synchronized with the server
64
122
  *
@@ -91,6 +149,7 @@ export declare class RpgClientEngine {
91
149
  * @memberof RpgClientEngine
92
150
  */
93
151
  connection(): void;
152
+ get world(): any;
94
153
  /**
95
154
  * VueJS Application instance
96
155
  *
@@ -119,5 +178,6 @@ export declare class RpgClientEngine {
119
178
  * @memberof RpgClientEngine
120
179
  * */
121
180
  get scene(): any;
181
+ reset(): void;
122
182
  }
123
183
  export {};