@rpgjs/server 4.1.3 → 4.2.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/browser/rpg.server.js +768 -366
  3. package/browser/rpg.server.umd.cjs +754 -352
  4. package/lib/Game/EventManager.js +1 -1
  5. package/lib/Game/EventManager.js.map +1 -1
  6. package/lib/Game/Map.d.ts +4 -0
  7. package/lib/Game/Map.js +11 -1
  8. package/lib/Game/Map.js.map +1 -1
  9. package/lib/Gui/Gui.js +1 -0
  10. package/lib/Gui/Gui.js.map +1 -1
  11. package/lib/MatchMaker.js +3 -1
  12. package/lib/MatchMaker.js.map +1 -1
  13. package/lib/Player/Player.d.ts +9 -3
  14. package/lib/Player/Player.js +24 -16
  15. package/lib/Player/Player.js.map +1 -1
  16. package/lib/RpgServer.d.ts +29 -0
  17. package/lib/Scenes/Map.d.ts +2 -3
  18. package/lib/Scenes/Map.js +7 -3
  19. package/lib/Scenes/Map.js.map +1 -1
  20. package/lib/entry-point.js +18 -12
  21. package/lib/entry-point.js.map +1 -1
  22. package/lib/express/server.js +0 -10
  23. package/lib/express/server.js.map +1 -1
  24. package/lib/index.d.ts +1 -0
  25. package/lib/index.js +1 -0
  26. package/lib/index.js.map +1 -1
  27. package/lib/inject.d.ts +22 -0
  28. package/lib/inject.js +29 -0
  29. package/lib/inject.js.map +1 -0
  30. package/lib/server.d.ts +7 -5
  31. package/lib/server.js +82 -38
  32. package/lib/server.js.map +1 -1
  33. package/package.json +7 -8
  34. package/src/Game/EventManager.ts +1 -1
  35. package/src/Game/Map.ts +15 -1
  36. package/src/Gui/Gui.ts +1 -0
  37. package/src/MatchMaker.ts +3 -1
  38. package/src/Player/Player.ts +18 -10
  39. package/src/RpgServer.ts +30 -1
  40. package/src/Scenes/Map.ts +6 -2
  41. package/src/entry-point.ts +19 -12
  42. package/src/express/server.ts +0 -10
  43. package/src/index.ts +1 -0
  44. package/src/inject.ts +33 -0
  45. package/src/server.ts +86 -35
package/lib/index.js CHANGED
@@ -15,4 +15,5 @@ export { SceneMap as RpgSceneMap } from './Scenes/Map.js';
15
15
  export { RpgMatchMaker } from './MatchMaker.js';
16
16
  export { Components } from './Player/ComponentManager.js';
17
17
  export { Gui } from './Gui/Gui.js';
18
+ export { inject } from './inject.js';
18
19
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EACH,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAoB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EACH,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAoB,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { InjectContext } from "@rpgjs/common";
2
+ /**
3
+ * Dependency injection function for RPGJS server side.
4
+ *
5
+ * The server-side `inject` function is designed for retrieving instances of server-related classes in the RPGJS framework.
6
+ * This function is crucial for accessing singleton instances of classes like `RpgServerEngine` on the server. It facilitates
7
+ * a clean and efficient approach to handling dependencies within server modules, contributing to a more organized codebase.
8
+ *
9
+ * @template T The class type that you want to retrieve an instance of, specific to server-side modules.
10
+ * @returns {T} Returns the singleton instance of the specified class, ensuring consistent server-side behavior and state management.
11
+ * @since 4.2.0
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Example of injecting the RpgServerEngine
16
+ * import { inject, RpgServerEngine } from '@rpgjs/server'
17
+ * const server = inject(RpgServerEngine)
18
+ * ```
19
+ */
20
+ export declare function inject<T>(service: new (...args: any[]) => T, args?: any[]): T;
21
+ export declare function setInject(context: InjectContext): void;
22
+ export declare function clearInject(): void;
package/lib/inject.js ADDED
@@ -0,0 +1,29 @@
1
+ let instanceContext = null;
2
+ /**
3
+ * Dependency injection function for RPGJS server side.
4
+ *
5
+ * The server-side `inject` function is designed for retrieving instances of server-related classes in the RPGJS framework.
6
+ * This function is crucial for accessing singleton instances of classes like `RpgServerEngine` on the server. It facilitates
7
+ * a clean and efficient approach to handling dependencies within server modules, contributing to a more organized codebase.
8
+ *
9
+ * @template T The class type that you want to retrieve an instance of, specific to server-side modules.
10
+ * @returns {T} Returns the singleton instance of the specified class, ensuring consistent server-side behavior and state management.
11
+ * @since 4.2.0
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Example of injecting the RpgServerEngine
16
+ * import { inject, RpgServerEngine } from '@rpgjs/server'
17
+ * const server = inject(RpgServerEngine)
18
+ * ```
19
+ */
20
+ export function inject(service, args = []) {
21
+ return instanceContext.inject(service, args);
22
+ }
23
+ export function setInject(context) {
24
+ instanceContext = context;
25
+ }
26
+ export function clearInject() {
27
+ instanceContext = null;
28
+ }
29
+ //# sourceMappingURL=inject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.js","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAEA,IAAI,eAAe,GAAyB,IAAI,CAAA;AAEhD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,MAAM,CAAI,OAAkC,EAAE,OAAc,EAAE;IAC1E,OAAO,eAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAsB;IAC5C,eAAe,GAAG,OAAO,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,eAAe,GAAG,IAAI,CAAA;AAC1B,CAAC"}
package/lib/server.d.ts CHANGED
@@ -5,9 +5,6 @@ import { Observable } from 'rxjs';
5
5
  import { Tick } from '@rpgjs/types';
6
6
  import { DatabaseTypes } from '@rpgjs/database';
7
7
  export declare class RpgServerEngine {
8
- io: any;
9
- gameEngine: RpgCommonGame;
10
- inputOptions: any;
11
8
  /**
12
9
  * Express App Instance. If you have assigned this variable before starting the game, you can get the instance of Express
13
10
  *
@@ -42,16 +39,19 @@ export declare class RpgServerEngine {
42
39
  protected totalConnected: number;
43
40
  private scheduler;
44
41
  private playerProps;
42
+ gameEngine: RpgCommonGame;
45
43
  world: WorldClass;
46
44
  workers: any;
47
45
  envs: any;
46
+ io: any;
47
+ inputOptions: any;
48
48
  /**
49
49
  * Combat formulas
50
50
  *
51
51
  * @prop {Socket Io Server} [io]
52
52
  * @memberof RpgServerEngine
53
53
  */
54
- constructor(io: any, gameEngine: RpgCommonGame, inputOptions: any);
54
+ initialize(io: any, inputOptions: any): void;
55
55
  private _init;
56
56
  /**
57
57
  * Adds data to the server's database (in RAM) for later use
@@ -104,6 +104,7 @@ export declare class RpgServerEngine {
104
104
  * @memberof RpgServerEngine
105
105
  */
106
106
  start(inputOptions?: any, scheduler?: boolean): Promise<void>;
107
+ private transport;
107
108
  get tick(): Observable<Tick>;
108
109
  /**
109
110
  * Sends all packages to clients. The sending is done automatically but you can decide to send yourself by calling this method (for example, for unit tests)
@@ -113,7 +114,7 @@ export declare class RpgServerEngine {
113
114
  * @returns {void}
114
115
  * @memberof RpgServerEngine
115
116
  */
116
- send(): void;
117
+ send(): Promise<void>;
117
118
  private updatePlayersMove;
118
119
  nextTick(timestamp: number): void;
119
120
  step(t: number, dt: number): void;
@@ -129,6 +130,7 @@ export declare class RpgServerEngine {
129
130
  get module(): import("@rpgjs/common/lib/Plugin").PluginSystem;
130
131
  get assetsPath(): string;
131
132
  sendToPlayer(currentPlayer: any, eventName: any, data: any): void;
133
+ private getPlayerBySession;
132
134
  private onPlayerConnected;
133
135
  private onPlayerDisconnected;
134
136
  stop(): void;
package/lib/server.js CHANGED
@@ -8,20 +8,12 @@ import { SceneMap } from './Scenes/Map.js';
8
8
  import { RpgPlayer } from './Player/Player.js';
9
9
  import { Query } from './Query.js';
10
10
  import { DAMAGE_SKILL, DAMAGE_PHYSIC, DAMAGE_CRITICAL, COEFFICIENT_ELEMENTS } from './presets/index.js';
11
- import { World } from 'simple-room';
12
- import { Utils, RpgPlugin, Scheduler, HookServer, DefaultInput } from '@rpgjs/common';
11
+ import { World, Transport } from 'simple-room';
12
+ import { Utils, RpgPlugin, Scheduler, HookServer, RpgCommonGame, DefaultInput } from '@rpgjs/common';
13
13
  import { Actor, Armor, Class, Item, Skill, State, Weapon } from '@rpgjs/database';
14
+ import { inject } from './inject.js';
14
15
  export class RpgServerEngine {
15
- /**
16
- * Combat formulas
17
- *
18
- * @prop {Socket Io Server} [io]
19
- * @memberof RpgServerEngine
20
- */
21
- constructor(io, gameEngine, inputOptions) {
22
- this.io = io;
23
- this.gameEngine = gameEngine;
24
- this.inputOptions = inputOptions;
16
+ constructor() {
25
17
  /**
26
18
  * List of the data
27
19
  *
@@ -48,8 +40,20 @@ export class RpgServerEngine {
48
40
  this.scenes = new Map();
49
41
  this.totalConnected = 0;
50
42
  this.scheduler = new Scheduler();
43
+ this.gameEngine = inject(RpgCommonGame);
51
44
  this.world = World;
52
45
  this.envs = {};
46
+ this.inputOptions = {};
47
+ }
48
+ /**
49
+ * Combat formulas
50
+ *
51
+ * @prop {Socket Io Server} [io]
52
+ * @memberof RpgServerEngine
53
+ */
54
+ initialize(io, inputOptions) {
55
+ this.io = io;
56
+ this.inputOptions = inputOptions;
53
57
  this.envs = inputOptions.envs || {};
54
58
  if (this.inputOptions.workers) {
55
59
  console.log('workers enabled');
@@ -247,9 +251,29 @@ export class RpgServerEngine {
247
251
  return Query._getShapesOfMap(map);
248
252
  }
249
253
  });
250
- this.io.on('connection', this.onPlayerConnected.bind(this));
254
+ //this.io.on('connection', this.onPlayerConnected.bind(this))
255
+ this.transport(this.io);
251
256
  await RpgPlugin.emit(HookServer.Start, this);
252
257
  }
258
+ transport(io) {
259
+ const timeoutDisconnect = this.globalConfig.timeoutDisconnect ?? 0;
260
+ const auth = this.globalConfig.disableAuth ? () => Utils.generateUID() :
261
+ async (socket) => {
262
+ const val = await RpgPlugin.emit(HookServer.Auth, [this, socket], true);
263
+ if (val.length == 0) {
264
+ return Utils.generateUID();
265
+ }
266
+ return val[val.length - 1];
267
+ };
268
+ const transport = new Transport(io, {
269
+ timeoutDisconnect,
270
+ auth
271
+ });
272
+ this.world.timeoutDisconnect = timeoutDisconnect;
273
+ transport.onConnected(this.onPlayerConnected.bind(this));
274
+ transport.onDisconnected(this.onPlayerDisconnected.bind(this));
275
+ return transport;
276
+ }
253
277
  get tick() {
254
278
  return this.scheduler.tick;
255
279
  }
@@ -262,7 +286,7 @@ export class RpgServerEngine {
262
286
  * @memberof RpgServerEngine
263
287
  */
264
288
  send() {
265
- this.world.send();
289
+ return this.world.send();
266
290
  }
267
291
  async updatePlayersMove(deltaTimeInt) {
268
292
  const players = this.world.getUsers();
@@ -274,7 +298,6 @@ export class RpgServerEngine {
274
298
  continue;
275
299
  const player = playerInstance.otherPossessedPlayer ?? playerInstance;
276
300
  if (player.pendingMove.length > 0) {
277
- player.moving = true;
278
301
  const lastFrame = player.pendingMove[player.pendingMove.length - 1];
279
302
  if (this.inputOptions.workers)
280
303
  obj.push(player.toObject());
@@ -325,7 +348,7 @@ export class RpgServerEngine {
325
348
  maps: this.inputOptions.maps,
326
349
  events: this.inputOptions.events,
327
350
  worldMaps: this.inputOptions.worldMaps
328
- }, this));
351
+ }));
329
352
  }
330
353
  getScene(name) {
331
354
  return this.scenes.get(name);
@@ -348,11 +371,49 @@ export class RpgServerEngine {
348
371
  sendToPlayer(currentPlayer, eventName, data) {
349
372
  currentPlayer._socket.emit(eventName, data);
350
373
  }
351
- onPlayerConnected(socket) {
352
- const { token } = socket.handshake.auth;
353
- const playerId = Utils.generateUID();
354
- const player = new RpgPlayer(this.gameEngine, playerId);
355
- player.session = token;
374
+ getPlayerBySession(session) {
375
+ const users = this.world.getUsers();
376
+ for (let userId in users) {
377
+ const user = users[userId];
378
+ if (user.session === session) {
379
+ return user;
380
+ }
381
+ }
382
+ return null;
383
+ }
384
+ onPlayerConnected(socket, playerId) {
385
+ const existingUser = this.world.getUser(playerId, false);
386
+ this.world.connectUser(socket, playerId);
387
+ let player;
388
+ if (!existingUser) {
389
+ const { token } = socket.handshake.auth;
390
+ player = new RpgPlayer(playerId);
391
+ player.session = token;
392
+ this.world.setUser(player, socket);
393
+ player._init();
394
+ if (!token) {
395
+ const newToken = Utils.generateUID() + '-' + Utils.generateUID() + '-' + Utils.generateUID();
396
+ player.session = newToken;
397
+ }
398
+ if (!token) {
399
+ player.execMethod('onConnected');
400
+ }
401
+ else {
402
+ RpgPlugin.emit(HookServer.ScalabilityPlayerConnected, player);
403
+ }
404
+ }
405
+ else {
406
+ player = existingUser;
407
+ if (player.map) {
408
+ player.emit('preLoadScene', {
409
+ reconnect: true,
410
+ id: player.map
411
+ });
412
+ player.emitSceneMap();
413
+ this.world.joinRoom(player.map, playerId);
414
+ }
415
+ }
416
+ socket.emit('playerJoined', { playerId, session: player.session });
356
417
  socket.on('move', (data) => {
357
418
  if (!data?.input)
358
419
  return;
@@ -369,23 +430,6 @@ export class RpgServerEngine {
369
430
  });
370
431
  }
371
432
  });
372
- socket.on('disconnect', () => {
373
- this.onPlayerDisconnected(playerId);
374
- });
375
- this.world.setUser(player, socket);
376
- player.server = this;
377
- player._init();
378
- if (!token) {
379
- const newToken = Utils.generateUID() + '-' + Utils.generateUID() + '-' + Utils.generateUID();
380
- player.session = newToken;
381
- }
382
- socket.emit('playerJoined', { playerId, session: player.session });
383
- if (!token) {
384
- player.execMethod('onConnected');
385
- }
386
- else {
387
- RpgPlugin.emit(HookServer.ScalabilityPlayerConnected, player);
388
- }
389
433
  }
390
434
  onPlayerDisconnected(playerId) {
391
435
  const player = World.getUser(playerId);
package/lib/server.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpgjs/server",
3
- "version": "4.1.3",
3
+ "version": "4.2.1",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -27,24 +27,23 @@
27
27
  "author": "Samuel Ronce",
28
28
  "license": "MIT",
29
29
  "dependencies": {
30
- "@rpgjs/common": "^4.1.3",
31
- "@rpgjs/database": "^4.1.3",
32
- "@rpgjs/tiled": "^4.0.5",
30
+ "@rpgjs/common": "^4.2.1",
31
+ "@rpgjs/database": "^4.2.1",
32
+ "@rpgjs/tiled": "^4.2.1",
33
33
  "@rpgjs/types": "^4.0.5",
34
34
  "axios": "^1.3.6",
35
35
  "cors": "^2.8.5",
36
36
  "express": "^4.18.2",
37
37
  "lodash.merge": "^4.6.2",
38
- "pathfinding": "^0.4.18",
39
38
  "pretty-error": "^4.0.0",
40
39
  "rxjs": "7.8.0",
41
40
  "sat": "^0.9.0",
42
- "simple-room": "^2.4.1",
41
+ "simple-room": "^3.1.2",
43
42
  "socket.io": "^4.6.1"
44
43
  },
45
- "gitHead": "dcefcd5489c132b5ec83a2eb3a2e941fa29231c9",
44
+ "gitHead": "cb341564bf64b7afdd36b12972f51a28870917a3",
46
45
  "devDependencies": {
47
- "@rpgjs/compiler": "^4.1.3",
46
+ "@rpgjs/compiler": "^4.2.1",
48
47
  "typescript": "^5.0.4"
49
48
  },
50
49
  "alias": {
@@ -105,7 +105,7 @@ export class EventManager {
105
105
  for (let playerId in map.players) {
106
106
  if (object.id == playerId) continue
107
107
  const otherPlayer = map.players[playerId]
108
- if (otherPlayer.following?.id == object.id) {
108
+ if (otherPlayer.followingId == object.id) {
109
109
  otherPlayer.cameraFollow(otherPlayer)
110
110
  }
111
111
  }
package/src/Game/Map.ts CHANGED
@@ -90,6 +90,21 @@ export class RpgMap extends RpgCommonMap {
90
90
  return Object.keys(this.players).length
91
91
  }
92
92
 
93
+ $additionalEmitProperties(player: RpgPlayer) {
94
+ const lastFramePositions: {
95
+ frame: number
96
+ position: unknown
97
+ } | undefined = player['_lastFramePositions']
98
+ let pos
99
+ let lastFrame
100
+ if (lastFramePositions) {
101
+ pos = lastFramePositions.position
102
+ lastFrame = lastFramePositions.frame
103
+ }
104
+ const data = { frame: lastFrame, pos }
105
+ return data
106
+ }
107
+
93
108
  async load() {
94
109
  if (RpgCommonMap.buffer.has(this.id)) {
95
110
  return
@@ -390,7 +405,6 @@ export class RpgMap extends RpgCommonMap {
390
405
  const ev = this.game.addEvent<RpgEvent>(event)
391
406
  const _shape = shape || this.getEventShape(ev.name)
392
407
  ev.map = this.id
393
- ev.server = this._server
394
408
  ev.width = event.width || this.tileWidth
395
409
  ev.height = event.height || this.tileHeight
396
410
  if (_shape && _shape.properties) ev.properties = _shape.properties
package/src/Gui/Gui.ts CHANGED
@@ -18,6 +18,7 @@ export class Gui extends EventEmitter {
18
18
  blockPlayerInput = false
19
19
  } = {}): Promise<any> {
20
20
  return new Promise((resolve) => {
21
+ this.player.moving = false
21
22
  this.player.emit('gui.open', {
22
23
  guiId: this.id,
23
24
  data
package/src/MatchMaker.ts CHANGED
@@ -2,6 +2,8 @@
2
2
  import axios from 'axios'
3
3
  import { Utils } from '@rpgjs/common'
4
4
  import { RpgPlayer } from './Player/Player'
5
+ import { inject } from './inject'
6
+ import { RpgServerEngine } from './server'
5
7
 
6
8
  interface MatchMakerPayload {
7
9
  playerId: string
@@ -32,7 +34,7 @@ export class RpgMatchMaker {
32
34
  }
33
35
 
34
36
  async getServer(player: RpgPlayer): Promise<MatchMakerResponse | null> {
35
- const currentServerId = player.server.serverId
37
+ const currentServerId = inject(RpgServerEngine).serverId
36
38
  const payload: MatchMakerPayload = {
37
39
  playerId: player.id,
38
40
  mapName: player.map
@@ -37,6 +37,7 @@ import { CameraOptions, PositionXY_OptionalZ, SocketEvents, SocketMethods, Layou
37
37
  import { ComponentManager } from './ComponentManager'
38
38
  import { Subject } from 'rxjs'
39
39
  import { EventManager, EventMode } from '../Game/EventManager'
40
+ import { inject } from '../inject'
40
41
 
41
42
  const {
42
43
  isPromise,
@@ -200,6 +201,7 @@ export class RpgPlayer extends RpgCommonPlayer {
200
201
  * ```
201
202
  * @title Server Instance
202
203
  * @prop {RpgServerEngine} player.server
204
+ * @deprecated Use `inject(RpgServerEngine)` instead. Will be removed in v5
203
205
  * @memberof Player
204
206
  * */
205
207
  public server: RpgServerEngine
@@ -208,7 +210,7 @@ export class RpgPlayer extends RpgCommonPlayer {
208
210
  /** @internal */
209
211
  public tmpPositions: Position | string | null = null
210
212
  public otherPossessedPlayer: RpgPlayer | RpgEvent | null = null
211
- public following: RpgPlayer | RpgEvent | null = null
213
+ public followingId: string | null = null
212
214
 
213
215
  // Indicates whether to load data with load(). In this case, hooks are not triggered.
214
216
  private _dataLoading: boolean = false
@@ -218,10 +220,10 @@ export class RpgPlayer extends RpgCommonPlayer {
218
220
  position: Position
219
221
  } | undefined
220
222
 
221
- constructor(gameEngine: RpgCommonGame, playerId: string) {
222
- super(gameEngine, playerId)
223
- this.initialize()
224
- }
223
+ /**
224
+ * @deprecated Use `inject(RpgCommonGame)` instead. Will be removed in v5
225
+ */
226
+ public gameEngine: RpgCommonGame = inject(RpgCommonGame)
225
227
 
226
228
  // redefine type (as RpgPlayer)
227
229
  get otherPlayersCollision(): RpgPlayer[] {
@@ -238,8 +240,14 @@ export class RpgPlayer extends RpgCommonPlayer {
238
240
  // a flag that lets the client know if the event is suppressed. The client can, for example, end animations before completely deleting the object (client side).
239
241
  deleted: boolean = false
240
242
 
243
+ constructor(public playerId: string) {
244
+ super(inject(RpgCommonGame), playerId)
245
+ this.initialize()
246
+ }
247
+
241
248
  /** @internal */
242
249
  initialize() {
250
+ this.server = inject(RpgServerEngine)
243
251
  this.expCurve = {
244
252
  basis: 30,
245
253
  extra: 20,
@@ -597,7 +605,7 @@ export class RpgPlayer extends RpgCommonPlayer {
597
605
  }
598
606
 
599
607
  toJSON() {
600
- const { permanentObject } = Room.toDict(this.schema)
608
+ const { permanentObject } = Room.compileSchema(this.schema)
601
609
  const snapshot = Room.extractObjectOfRoom(this, permanentObject)
602
610
  snapshot.variables = [...this.variables]
603
611
  return snapshot
@@ -769,10 +777,10 @@ export class RpgPlayer extends RpgCommonPlayer {
769
777
  */
770
778
  cameraFollow(otherPlayer: RpgPlayer | RpgEvent, options: CameraOptions = {}) {
771
779
  if (otherPlayer.id == this.id) {
772
- this.following = null
780
+ this.followingId = null
773
781
  }
774
782
  else {
775
- this.following = otherPlayer
783
+ this.followingId = otherPlayer.id
776
784
  }
777
785
  this.emit(SocketEvents.CallMethod, {
778
786
  objectId: this.playerId,
@@ -1004,8 +1012,8 @@ export class RpgEvent extends RpgPlayer {
1004
1012
  mode: EventMode
1005
1013
  playerRelated: RpgPlayer | null = null
1006
1014
 
1007
- constructor(gameEngine: RpgCommonGame, playerId: string) {
1008
- super(gameEngine, playerId)
1015
+ constructor(playerId: string) {
1016
+ super(playerId)
1009
1017
  }
1010
1018
 
1011
1019
  async execMethod(methodName: string, methodData = []) {
package/src/RpgServer.ts CHANGED
@@ -25,6 +25,36 @@ export interface RpgServerEngineHooks {
25
25
  * @memberof RpgServerEngineHooks
26
26
  */
27
27
  onStep?: (server: RpgServerEngine) => any
28
+
29
+ /**
30
+ * Flexible authentication function for RPGJS.
31
+ *
32
+ * This `auth` function is an integral part of the connection process in RPGJS, designed to be agnostic
33
+ * and adaptable to various authentication systems. It is not tied to any specific database or third-party
34
+ * authentication service, allowing developers to implement custom logic suited to their game's requirements.
35
+ * This flexibility is particularly useful in MMORPGs where diverse and robust authentication mechanisms may be needed.
36
+ *
37
+ * The function is called during the player connection phase and should handle the verification of player credentials.
38
+ * The implementation can vary widely based on the chosen authentication method (e.g., JWT tokens, OAuth, custom tokens).
39
+ *
40
+ * @param {RpgServerEngine} server - The instance of the game server.
41
+ * @param {SocketIO.Socket} socket - The socket instance for the connecting player. This can be used to access client-sent data, like tokens or other credentials.
42
+ * @returns {Promise<string> | string} The function should return a promise that resolves to a player's unique identifier (e.g., user ID) if authentication is successful, or a string representing the user's ID. Alternatively, it can throw an error if authentication fails.
43
+ * @throws {string} Throwing an error will prevent the player from connecting, signifying a failed authentication attempt.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * // Example of a simple token-based authentication in main/server.ts
48
+ * const server: RpgServerEngineHooks = {
49
+ * auth(server, socket) {
50
+ * const token = socket.handshake.query.token;
51
+ * // Implement your authentication logic here
52
+ * // Return user ID or throw an error if authentication fails
53
+ * }
54
+ * };
55
+ * ```
56
+ */
57
+ auth?: (server: RpgServerEngine, socket: any) => Promise<string> | string | never
28
58
  }
29
59
 
30
60
  export interface RpgPlayerHooks {
@@ -239,7 +269,6 @@ export interface RpgServer {
239
269
  player?: string[],
240
270
  engine?: string[]
241
271
  }
242
-
243
272
  /**
244
273
  * Adding sub-modules
245
274
  *
package/src/Scenes/Map.ts CHANGED
@@ -7,6 +7,7 @@ import { RpgMap } from '../Game/Map'
7
7
  import { RpgWorldMaps, WorldMap } from '../Game/WorldMaps'
8
8
  import { RpgEvent, RpgPlayer } from '../Player/Player'
9
9
  import { RpgServerEngine } from '../server'
10
+ import { inject } from '../inject'
10
11
 
11
12
  export interface RpgClassMap<T> {
12
13
  id?: string
@@ -28,8 +29,9 @@ export class SceneMap {
28
29
  [mapId: string]: RpgClassMap<RpgMap>
29
30
  } = {}
30
31
  private worldMaps: Map<string, RpgWorldMaps> = new Map()
32
+ private server: RpgServerEngine = inject(RpgServerEngine)
31
33
 
32
- constructor(sceneMapObject: SceneMapObject, private server: RpgServerEngine) {
34
+ constructor(sceneMapObject: SceneMapObject) {
33
35
  const { maps, worldMaps, events } = sceneMapObject
34
36
  this.maps = maps
35
37
  this.mapsById = {}
@@ -252,7 +254,9 @@ export class SceneMap {
252
254
  return null
253
255
  }
254
256
 
255
- player.emit('preLoadScene', mapId)
257
+ player.emit('preLoadScene', {
258
+ id: mapId
259
+ })
256
260
 
257
261
  player.prevMap = player.map
258
262