@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.
- package/CHANGELOG.md +20 -0
- package/dist/Game/Object.js.map +1 -1
- package/dist/Gui/Gui.d.ts +2 -2
- package/dist/Gui/Gui.js.map +1 -1
- package/dist/core/inject.d.ts +4 -4
- package/dist/core/inject.js.map +1 -1
- package/dist/core/setup.d.ts +3 -3
- package/dist/core/setup.js +1 -1
- package/dist/core/setup.js.map +1 -1
- package/dist/core/setup.spec.d.ts +1 -0
- package/dist/i18n.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -2
- package/dist/module.d.ts +2 -2
- package/dist/module.js.map +1 -1
- package/dist/public-api-types.spec.d.ts +1 -0
- package/dist/services/AbstractSocket.d.ts +3 -3
- package/dist/services/AbstractSocket.js.map +1 -1
- package/dist/services/loadMap.d.ts +3 -7
- package/dist/services/loadMap.js +2 -2
- package/dist/services/loadMap.js.map +1 -1
- package/dist/services/mapStreaming.d.ts +2 -16
- package/dist/services/mapStreaming.js.map +1 -1
- package/dist/services/mmorpg.d.ts +4 -26
- package/dist/services/mmorpg.js.map +1 -1
- package/dist/services/standalone.d.ts +2 -98
- package/dist/services/standalone.js.map +1 -1
- package/package.json +3 -3
- package/src/Game/Object.spec.ts +1 -1
- package/src/Game/Object.ts +4 -4
- package/src/Gui/Gui.ts +3 -3
- package/src/core/inject.ts +6 -5
- package/src/core/setup.spec.ts +35 -0
- package/src/core/setup.ts +8 -6
- package/src/index.ts +12 -1
- package/src/module.ts +2 -2
- package/src/public-api-types.spec.ts +19 -0
- package/src/services/AbstractSocket.ts +2 -2
- package/src/services/loadMap.ts +8 -8
- package/src/services/mapStreaming.ts +7 -5
- package/src/services/mmorpg.ts +6 -7
- package/src/services/standalone.ts +4 -5
package/src/services/loadMap.ts
CHANGED
|
@@ -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:
|
|
51
|
-
if (context
|
|
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:
|
|
162
|
-
if (context
|
|
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:
|
|
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:
|
|
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:
|
|
274
|
+
useFactory: (context: RpgContext) => new MapStreamingLoadMapService(context, options),
|
|
273
275
|
},
|
|
274
276
|
];
|
|
275
277
|
}
|
package/src/services/mmorpg.ts
CHANGED
|
@@ -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:
|
|
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:
|
|
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:
|
|
203
|
+
useFactory: (context: RpgContext) => new BridgeWebsocket(context, options),
|
|
205
204
|
},
|
|
206
205
|
{
|
|
207
206
|
provide: UpdateMapToken,
|
|
208
|
-
useFactory: (context:
|
|
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:
|
|
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:
|
|
246
|
+
useFactory: (context: RpgContext) => new BridgeWebsocket(context, server, options),
|
|
248
247
|
},
|
|
249
248
|
{
|
|
250
249
|
provide: UpdateMapToken,
|