@rpgjs/client 5.0.0-beta.26 → 5.0.0-beta.27

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 (42) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/Game/Object.js.map +1 -1
  3. package/dist/Gui/Gui.d.ts +2 -2
  4. package/dist/Gui/Gui.js.map +1 -1
  5. package/dist/core/inject.d.ts +4 -4
  6. package/dist/core/inject.js.map +1 -1
  7. package/dist/core/setup.d.ts +3 -3
  8. package/dist/core/setup.js +1 -1
  9. package/dist/core/setup.js.map +1 -1
  10. package/dist/core/setup.spec.d.ts +1 -0
  11. package/dist/i18n.d.ts +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.js +1 -2
  14. package/dist/module.d.ts +2 -2
  15. package/dist/module.js.map +1 -1
  16. package/dist/public-api-types.spec.d.ts +1 -0
  17. package/dist/services/AbstractSocket.d.ts +3 -3
  18. package/dist/services/AbstractSocket.js.map +1 -1
  19. package/dist/services/loadMap.d.ts +3 -7
  20. package/dist/services/loadMap.js +2 -2
  21. package/dist/services/loadMap.js.map +1 -1
  22. package/dist/services/mapStreaming.d.ts +2 -16
  23. package/dist/services/mapStreaming.js.map +1 -1
  24. package/dist/services/mmorpg.d.ts +4 -26
  25. package/dist/services/mmorpg.js.map +1 -1
  26. package/dist/services/standalone.d.ts +2 -98
  27. package/dist/services/standalone.js.map +1 -1
  28. package/package.json +3 -3
  29. package/src/Game/Object.spec.ts +1 -1
  30. package/src/Game/Object.ts +4 -4
  31. package/src/Gui/Gui.ts +3 -3
  32. package/src/core/inject.ts +6 -5
  33. package/src/core/setup.spec.ts +35 -0
  34. package/src/core/setup.ts +8 -6
  35. package/src/index.ts +12 -1
  36. package/src/module.ts +2 -2
  37. package/src/public-api-types.spec.ts +19 -0
  38. package/src/services/AbstractSocket.ts +2 -2
  39. package/src/services/loadMap.ts +8 -8
  40. package/src/services/mapStreaming.ts +7 -5
  41. package/src/services/mmorpg.ts +6 -7
  42. package/src/services/standalone.ts +4 -5
@@ -1,5 +1,5 @@
1
1
  import { Context, inject } from "@signe/di";
2
- import { UpdateMapToken, UpdateMapService, type LightingState } from "@rpgjs/common";
2
+ import { UpdateMapToken, UpdateMapService, type LightingState, type RpgContext, type RpgProvider } from "@rpgjs/common";
3
3
  import type { RpgClientMap } from "../Game/Map";
4
4
 
5
5
  export const LoadMapToken = 'LoadMapToken'
@@ -47,8 +47,8 @@ export type LoadMapOptions = (mapId: string) => Promise<MapData> | MapData
47
47
  export class LoadMapService {
48
48
  private updateMapService: UpdateMapService;
49
49
 
50
- constructor(private context: Context, private options: LoadMapOptions) {
51
- if (context['side'] === 'server') {
50
+ constructor(private context: RpgContext, private options: LoadMapOptions) {
51
+ if (context.side === 'server') {
52
52
  return
53
53
  }
54
54
  }
@@ -56,7 +56,7 @@ export class LoadMapService {
56
56
  initialize(): void {}
57
57
 
58
58
  async load(mapId: string) {
59
- this.updateMapService ??= inject(this.context, UpdateMapToken);
59
+ this.updateMapService ??= inject(this.context as Context, UpdateMapToken);
60
60
  const map = await this.options(mapId.replace('map-', ''))
61
61
  await this.updateMapService.update(map);
62
62
  return map;
@@ -154,12 +154,12 @@ export class LoadMapService {
154
154
  * @see {@link LoadMapOptions} for callback function signature
155
155
  * @see {@link MapData} for return data structure
156
156
  */
157
- export function provideLoadMap(options: LoadMapOptions) {
157
+ export function provideLoadMap(options: LoadMapOptions): RpgProvider[] {
158
158
  return [
159
159
  {
160
160
  provide: UpdateMapToken,
161
- useFactory: (context: Context) => {
162
- if (context['side'] === 'client') {
161
+ useFactory: (context: RpgContext) => {
162
+ if (context.side === 'client') {
163
163
  console.warn('UpdateMapToken is not overridden')
164
164
  }
165
165
  return
@@ -167,7 +167,7 @@ export function provideLoadMap(options: LoadMapOptions) {
167
167
  },
168
168
  {
169
169
  provide: LoadMapToken,
170
- useFactory: (context: Context) => new LoadMapService(context, options),
170
+ useFactory: (context: RpgContext) => new LoadMapService(context, options),
171
171
  },
172
172
  ];
173
173
  }
@@ -6,6 +6,8 @@ import {
6
6
  type MapStreamChunk,
7
7
  type MapStreamManifest,
8
8
  type MapStreamPacket,
9
+ type RpgContext,
10
+ type RpgProvider,
9
11
  } from "@rpgjs/common";
10
12
  import { AbstractWebsocket, WebSocketToken } from "./AbstractSocket";
11
13
  import { LoadMapToken, type MapData, type LoadMapOptions } from "./loadMap";
@@ -221,13 +223,13 @@ class MapStreamingLoadMapService<TManifestData, TChunkData, TState> {
221
223
  private updateMap?: UpdateMapService;
222
224
 
223
225
  constructor(
224
- private readonly context: Context,
226
+ private readonly context: RpgContext,
225
227
  private readonly options: ClientMapStreamingOptions<TManifestData, TChunkData, TState>,
226
228
  ) {}
227
229
 
228
230
  initialize(): void {
229
231
  if (this.stream) return;
230
- this.socket = inject<AbstractWebsocket>(this.context, WebSocketToken);
232
+ this.socket = inject<AbstractWebsocket>(this.context as Context, WebSocketToken);
231
233
  this.stream = new MapStreamingClientService(this.socket, this.options);
232
234
  }
233
235
 
@@ -236,7 +238,7 @@ class MapStreamingLoadMapService<TManifestData, TChunkData, TState> {
236
238
  const map = this.socket?.mode === "standalone" && this.options.directLoad
237
239
  ? await this.options.directLoad(mapId.replace(/^map-/, ""))
238
240
  : await this.stream!.load(mapId);
239
- this.updateMap ??= inject<UpdateMapService>(this.context, UpdateMapToken);
241
+ this.updateMap ??= inject<UpdateMapService>(this.context as Context, UpdateMapToken);
240
242
  await this.updateMap.update(map);
241
243
  return map;
242
244
  }
@@ -265,11 +267,11 @@ class MapStreamingLoadMapService<TManifestData, TChunkData, TState> {
265
267
  */
266
268
  export function provideClientMapStreaming<TManifestData, TChunkData, TState>(
267
269
  options: ClientMapStreamingOptions<TManifestData, TChunkData, TState>,
268
- ) {
270
+ ): RpgProvider[] {
269
271
  return [
270
272
  {
271
273
  provide: LoadMapToken,
272
- useFactory: (context: Context) => new MapStreamingLoadMapService(context, options),
274
+ useFactory: (context: RpgContext) => new MapStreamingLoadMapService(context, options),
273
275
  },
274
276
  ];
275
277
  }
@@ -1,9 +1,8 @@
1
- import { Context } from "@signe/di";
2
1
  import { connectionRoom } from "@signe/sync/client";
3
2
  import { RpgGui } from "../Gui/Gui";
4
3
  import { RpgClientEngine } from "../RpgClientEngine";
5
4
  import { AbstractWebsocket, SocketQuery, SocketUpdateProperties, WebSocketToken } from "./AbstractSocket";
6
- import { UpdateMapService, UpdateMapToken } from "@rpgjs/common";
5
+ import { UpdateMapService, UpdateMapToken, type RpgContext, type RpgProvider } from "@rpgjs/common";
7
6
  import { provideKeyboardControls } from "./keyboardControls";
8
7
  import { provideSaveClient } from "./save";
9
8
  import { isNativeSocketEvent, waitForRpgjsConnected } from "./mmorpg-connection";
@@ -31,7 +30,7 @@ export class BridgeWebsocket extends AbstractWebsocket {
31
30
  private acceptedOpenListeners = new Set<(data: any) => void>();
32
31
  private targetRoom = "lobby-1";
33
32
 
34
- constructor(protected context: Context, private options: MmorpgOptions = {}) {
33
+ constructor(protected context: RpgContext, private options: MmorpgOptions = {}) {
35
34
  super(context);
36
35
  this.privateId = this.resolveConnectionId();
37
36
  }
@@ -186,7 +185,7 @@ export class BridgeWebsocket extends AbstractWebsocket {
186
185
  }
187
186
 
188
187
  class UpdateMapStandaloneService extends UpdateMapService {
189
- constructor(protected context: Context, private _options: MmorpgOptions) {
188
+ constructor(protected context: RpgContext, private _options: MmorpgOptions) {
190
189
  super(context);
191
190
  }
192
191
 
@@ -197,15 +196,15 @@ class UpdateMapStandaloneService extends UpdateMapService {
197
196
  }
198
197
  }
199
198
 
200
- export function provideMmorpg(options: MmorpgOptions) {
199
+ export function provideMmorpg(options: MmorpgOptions): RpgProvider[] {
201
200
  return [
202
201
  {
203
202
  provide: WebSocketToken,
204
- useFactory: (context: Context) => new BridgeWebsocket(context, options),
203
+ useFactory: (context: RpgContext) => new BridgeWebsocket(context, options),
205
204
  },
206
205
  {
207
206
  provide: UpdateMapToken,
208
- useFactory: (context: Context) => new UpdateMapStandaloneService(context, options),
207
+ useFactory: (context: RpgContext) => new UpdateMapStandaloneService(context, options),
209
208
  },
210
209
  provideKeyboardControls(),
211
210
  provideSaveClient(),
@@ -1,8 +1,7 @@
1
1
  import { AbstractWebsocket, SocketUpdateProperties, WebSocketToken } from "./AbstractSocket";
2
2
  import { ClientIo, ServerIo } from "@signe/room";
3
- import { Context } from "@signe/di";
4
3
  import { RpgClientEngine } from "../RpgClientEngine";
5
- import { UpdateMapService, UpdateMapToken } from "@rpgjs/common";
4
+ import { UpdateMapService, UpdateMapToken, type RpgContext, type RpgProvider } from "@rpgjs/common";
6
5
  import { LoadMapToken } from "./loadMap";
7
6
  import { RpgGui } from "../Gui/Gui";
8
7
  import { provideKeyboardControls } from "./keyboardControls";
@@ -43,7 +42,7 @@ class BridgeWebsocket extends AbstractWebsocket {
43
42
  }
44
43
  private serverInstance: any;
45
44
 
46
- constructor(protected context: Context, private server: any, options: StandaloneOptions = {}) {
45
+ constructor(protected context: RpgContext, private server: any, options: StandaloneOptions = {}) {
47
46
  super(context);
48
47
  // fake room
49
48
  this.rooms.env = options.env || {};
@@ -240,11 +239,11 @@ class UpdateMapStandaloneService extends UpdateMapService {
240
239
  }
241
240
  }
242
241
 
243
- export function provideRpg(server: any, options: StandaloneOptions = {}) {
242
+ export function provideRpg(server: any, options: StandaloneOptions = {}): RpgProvider[] {
244
243
  return [
245
244
  {
246
245
  provide: WebSocketToken,
247
- useFactory: (context: Context) => new BridgeWebsocket(context, server, options),
246
+ useFactory: (context: RpgContext) => new BridgeWebsocket(context, server, options),
248
247
  },
249
248
  {
250
249
  provide: UpdateMapToken,