@antha/multiplayer-core 0.14.1 → 0.14.2
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.
|
@@ -89,7 +89,7 @@ export type MultiplayerRoomControllerParams<Message extends JsonCompatibleValue>
|
|
|
89
89
|
*
|
|
90
90
|
* @default accept all connections
|
|
91
91
|
*/
|
|
92
|
-
acceptConnection?: ((connectingClientId: ClientId,
|
|
92
|
+
acceptConnection?: ((connectingClientId: ClientId, multiplayerController: MultiplayerRoomController<Message>) => MaybePromise<boolean>) | undefined;
|
|
93
93
|
}>;
|
|
94
94
|
/**
|
|
95
95
|
* Multiplayer mode parameters for {@link MultiplayerRoomController}.
|
|
@@ -129,30 +129,30 @@ export type MultiplayerInitParams = {
|
|
|
129
129
|
/** If set, this will override the internal multiplayer API. */
|
|
130
130
|
multiplayerApiClient: Readonly<MultiplayerApiClient>;
|
|
131
131
|
}>;
|
|
132
|
-
declare const
|
|
132
|
+
declare const MultiplayerControllerMessageEvent_base: (new (eventInitDict: {
|
|
133
133
|
bubbles?: boolean;
|
|
134
134
|
cancelable?: boolean;
|
|
135
135
|
composed?: boolean;
|
|
136
136
|
detail: any;
|
|
137
|
-
}) => import("typed-event-target").TypedCustomEvent<any, "controller-message">) & Pick<{
|
|
137
|
+
}) => import("typed-event-target").TypedCustomEvent<any, "multiplayer-controller-message">) & Pick<{
|
|
138
138
|
new (type: string, eventInitDict?: EventInit): Event;
|
|
139
139
|
prototype: Event;
|
|
140
140
|
readonly NONE: 0;
|
|
141
141
|
readonly CAPTURING_PHASE: 1;
|
|
142
142
|
readonly AT_TARGET: 2;
|
|
143
143
|
readonly BUBBLING_PHASE: 3;
|
|
144
|
-
}, "prototype" | "NONE" | "CAPTURING_PHASE" | "AT_TARGET" | "BUBBLING_PHASE"> & Pick<import("typed-event-target").TypedCustomEvent<any, "controller-message">, "type">;
|
|
144
|
+
}, "prototype" | "NONE" | "CAPTURING_PHASE" | "AT_TARGET" | "BUBBLING_PHASE"> & Pick<import("typed-event-target").TypedCustomEvent<any, "multiplayer-controller-message">, "type">;
|
|
145
145
|
/**
|
|
146
146
|
* This is fired when a room message is received.
|
|
147
147
|
*
|
|
148
148
|
* @category Events
|
|
149
149
|
*/
|
|
150
|
-
export declare class
|
|
150
|
+
export declare class MultiplayerControllerMessageEvent<Message extends JsonCompatibleValue> extends MultiplayerControllerMessageEvent_base {
|
|
151
151
|
readonly sourceClientId: ClientId;
|
|
152
152
|
detail: Message;
|
|
153
153
|
constructor(sourceClientId: ClientId, detail: Message);
|
|
154
154
|
}
|
|
155
|
-
declare const
|
|
155
|
+
declare const MultiplayerControllerRoomListEvent_base: (new (eventInitDict: {
|
|
156
156
|
bubbles?: boolean;
|
|
157
157
|
cancelable?: boolean;
|
|
158
158
|
composed?: boolean;
|
|
@@ -167,7 +167,7 @@ declare const ControllerRoomListEvent_base: (new (eventInitDict: {
|
|
|
167
167
|
roomName: string;
|
|
168
168
|
clientCount: number;
|
|
169
169
|
hasRoomPassword: boolean;
|
|
170
|
-
}>>>, "controller-room-list">) & Pick<{
|
|
170
|
+
}>>>, "multiplayer-controller-room-list">) & Pick<{
|
|
171
171
|
new (type: string, eventInitDict?: EventInit): Event;
|
|
172
172
|
prototype: Event;
|
|
173
173
|
readonly NONE: 0;
|
|
@@ -179,7 +179,7 @@ declare const ControllerRoomListEvent_base: (new (eventInitDict: {
|
|
|
179
179
|
roomName: string;
|
|
180
180
|
clientCount: number;
|
|
181
181
|
hasRoomPassword: boolean;
|
|
182
|
-
}>>>, "controller-room-list">, "type">;
|
|
182
|
+
}>>>, "multiplayer-controller-room-list">, "type">;
|
|
183
183
|
/**
|
|
184
184
|
* This is called whenever the room list updates, even if there were no changes to the room list. By
|
|
185
185
|
* default, room list updates are off. Use `MultiplayerRoomController.startRoomUpdates` to start
|
|
@@ -187,15 +187,15 @@ declare const ControllerRoomListEvent_base: (new (eventInitDict: {
|
|
|
187
187
|
*
|
|
188
188
|
* @category Events
|
|
189
189
|
*/
|
|
190
|
-
export declare class
|
|
190
|
+
export declare class MultiplayerControllerRoomListEvent extends MultiplayerControllerRoomListEvent_base {
|
|
191
191
|
}
|
|
192
192
|
/**
|
|
193
193
|
* Callback fired whenever the room list is fetched from the multiplayer API.
|
|
194
194
|
*
|
|
195
195
|
* @category Internal
|
|
196
196
|
*/
|
|
197
|
-
export type
|
|
198
|
-
declare const
|
|
197
|
+
export type MultiplayerControllerRoomListListener = (rooms: Readonly<MultiplayerClientRooms>) => MaybePromise<void>;
|
|
198
|
+
declare const MultiplayerControllerClientEvent_base: (new (eventInitDict: {
|
|
199
199
|
bubbles?: boolean;
|
|
200
200
|
cancelable?: boolean;
|
|
201
201
|
composed?: boolean;
|
|
@@ -250,7 +250,7 @@ declare const ControllerClientEvent_base: (new (eventInitDict: {
|
|
|
250
250
|
newMember: ClientId;
|
|
251
251
|
lostHost: ClientId;
|
|
252
252
|
lostMember: ClientId;
|
|
253
|
-
}, "newHost" | "newMember" | "lostHost" | "lostMember">>, "controller-client">) & Pick<{
|
|
253
|
+
}, "newHost" | "newMember" | "lostHost" | "lostMember">>, "multiplayer-controller-client">) & Pick<{
|
|
254
254
|
new (type: string, eventInitDict?: EventInit): Event;
|
|
255
255
|
prototype: Event;
|
|
256
256
|
readonly NONE: 0;
|
|
@@ -282,7 +282,7 @@ declare const ControllerClientEvent_base: (new (eventInitDict: {
|
|
|
282
282
|
newMember: ClientId;
|
|
283
283
|
lostHost: ClientId;
|
|
284
284
|
lostMember: ClientId;
|
|
285
|
-
}, "newHost" | "newMember" | "lostHost" | "lostMember">>, "controller-client">, "type">;
|
|
285
|
+
}, "newHost" | "newMember" | "lostHost" | "lostMember">>, "multiplayer-controller-client">, "type">;
|
|
286
286
|
/**
|
|
287
287
|
* This is fired in the following situations:
|
|
288
288
|
*
|
|
@@ -293,34 +293,34 @@ declare const ControllerClientEvent_base: (new (eventInitDict: {
|
|
|
293
293
|
*
|
|
294
294
|
* @category Events
|
|
295
295
|
*/
|
|
296
|
-
export declare class
|
|
296
|
+
export declare class MultiplayerControllerClientEvent extends MultiplayerControllerClientEvent_base {
|
|
297
297
|
}
|
|
298
|
-
declare const
|
|
298
|
+
declare const MultiplayerControllerConnectionEvent_base: (new (eventInitDict: {
|
|
299
299
|
bubbles?: boolean;
|
|
300
300
|
cancelable?: boolean;
|
|
301
301
|
composed?: boolean;
|
|
302
302
|
detail: ApiAndRoomConnectionState;
|
|
303
|
-
}) => import("typed-event-target").TypedCustomEvent<ApiAndRoomConnectionState, "controller-connection">) & Pick<{
|
|
303
|
+
}) => import("typed-event-target").TypedCustomEvent<ApiAndRoomConnectionState, "multiplayer-controller-connection">) & Pick<{
|
|
304
304
|
new (type: string, eventInitDict?: EventInit): Event;
|
|
305
305
|
prototype: Event;
|
|
306
306
|
readonly NONE: 0;
|
|
307
307
|
readonly CAPTURING_PHASE: 1;
|
|
308
308
|
readonly AT_TARGET: 2;
|
|
309
309
|
readonly BUBBLING_PHASE: 3;
|
|
310
|
-
}, "prototype" | "NONE" | "CAPTURING_PHASE" | "AT_TARGET" | "BUBBLING_PHASE"> & Pick<import("typed-event-target").TypedCustomEvent<ApiAndRoomConnectionState, "controller-connection">, "type">;
|
|
310
|
+
}, "prototype" | "NONE" | "CAPTURING_PHASE" | "AT_TARGET" | "BUBBLING_PHASE"> & Pick<import("typed-event-target").TypedCustomEvent<ApiAndRoomConnectionState, "multiplayer-controller-connection">, "type">;
|
|
311
311
|
/**
|
|
312
312
|
* Fires when the controller's connection state is updated.
|
|
313
313
|
*
|
|
314
314
|
* @category Events
|
|
315
315
|
*/
|
|
316
|
-
export declare class
|
|
316
|
+
export declare class MultiplayerControllerConnectionEvent extends MultiplayerControllerConnectionEvent_base {
|
|
317
317
|
}
|
|
318
318
|
/**
|
|
319
319
|
* All events emitted by this controller.
|
|
320
320
|
*
|
|
321
321
|
* @category Internal
|
|
322
322
|
*/
|
|
323
|
-
export type AllMultiplayerRoomControllerEvents<Message extends JsonCompatibleValue> =
|
|
323
|
+
export type AllMultiplayerRoomControllerEvents<Message extends JsonCompatibleValue> = MultiplayerControllerMessageEvent<Message> | MultiplayerControllerRoomListEvent | MultiplayerControllerClientEvent | MultiplayerControllerConnectionEvent;
|
|
324
324
|
/**
|
|
325
325
|
* A generic multiplayer room controller. It manages API connectivity, room discovery, WebRTC
|
|
326
326
|
* signaling, and generic room messages. It does not impose a game-state synchronization strategy.
|
|
@@ -331,17 +331,17 @@ export declare class MultiplayerRoomController<Message extends JsonCompatibleVal
|
|
|
331
331
|
protected readonly params: MultiplayerRoomControllerParams<Message>;
|
|
332
332
|
/** All events emitted by this controller. */
|
|
333
333
|
static readonly events: {
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
334
|
+
MultiplayerControllerMessageEvent: typeof MultiplayerControllerMessageEvent;
|
|
335
|
+
MultiplayerControllerRoomListEvent: typeof MultiplayerControllerRoomListEvent;
|
|
336
|
+
MultiplayerControllerClientEvent: typeof MultiplayerControllerClientEvent;
|
|
337
|
+
MultiplayerControllerConnectionEvent: typeof MultiplayerControllerConnectionEvent;
|
|
338
338
|
};
|
|
339
339
|
/** All events emitted by this controller. */
|
|
340
340
|
readonly events: {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
341
|
+
MultiplayerControllerMessageEvent: typeof MultiplayerControllerMessageEvent;
|
|
342
|
+
MultiplayerControllerRoomListEvent: typeof MultiplayerControllerRoomListEvent;
|
|
343
|
+
MultiplayerControllerClientEvent: typeof MultiplayerControllerClientEvent;
|
|
344
|
+
MultiplayerControllerConnectionEvent: typeof MultiplayerControllerConnectionEvent;
|
|
345
345
|
};
|
|
346
346
|
static readonly knownErrors: {
|
|
347
347
|
RoomRejectionError: typeof RoomRejectionError;
|
|
@@ -404,9 +404,9 @@ export declare class MultiplayerRoomController<Message extends JsonCompatibleVal
|
|
|
404
404
|
*
|
|
405
405
|
* If a callback is provided, it is called each time the room list is updated.
|
|
406
406
|
*/
|
|
407
|
-
startRoomUpdates(callback:
|
|
407
|
+
startRoomUpdates(callback: MultiplayerControllerRoomListListener): RemoveListenerCallback;
|
|
408
408
|
startRoomUpdates(callback?: undefined): undefined;
|
|
409
|
-
startRoomUpdates(callback?:
|
|
409
|
+
startRoomUpdates(callback?: MultiplayerControllerRoomListListener | undefined): RemoveListenerCallback | undefined;
|
|
410
410
|
/** Turn off room list updates and remove callbacks added via `startRoomUpdates`. */
|
|
411
411
|
stopRoomUpdates(): void;
|
|
412
412
|
/** Send a generic message to the current room. */
|
|
@@ -32,7 +32,7 @@ export const emptyApiAndRoomConnectionState = {
|
|
|
32
32
|
*
|
|
33
33
|
* @category Events
|
|
34
34
|
*/
|
|
35
|
-
export class
|
|
35
|
+
export class MultiplayerControllerMessageEvent extends defineTypedCustomEvent()('multiplayer-controller-message') {
|
|
36
36
|
sourceClientId;
|
|
37
37
|
constructor(sourceClientId, detail) {
|
|
38
38
|
super({
|
|
@@ -48,7 +48,7 @@ export class ControllerMessageEvent extends defineTypedCustomEvent()('controller
|
|
|
48
48
|
*
|
|
49
49
|
* @category Events
|
|
50
50
|
*/
|
|
51
|
-
export class
|
|
51
|
+
export class MultiplayerControllerRoomListEvent extends defineTypedCustomEvent()('multiplayer-controller-room-list') {
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* This is fired in the following situations:
|
|
@@ -60,14 +60,14 @@ export class ControllerRoomListEvent extends defineTypedCustomEvent()('controlle
|
|
|
60
60
|
*
|
|
61
61
|
* @category Events
|
|
62
62
|
*/
|
|
63
|
-
export class
|
|
63
|
+
export class MultiplayerControllerClientEvent extends defineTypedCustomEvent()('multiplayer-controller-client') {
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Fires when the controller's connection state is updated.
|
|
67
67
|
*
|
|
68
68
|
* @category Events
|
|
69
69
|
*/
|
|
70
|
-
export class
|
|
70
|
+
export class MultiplayerControllerConnectionEvent extends defineTypedCustomEvent()('multiplayer-controller-connection') {
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
73
|
* A generic multiplayer room controller. It manages API connectivity, room discovery, WebRTC
|
|
@@ -79,10 +79,10 @@ export class MultiplayerRoomController extends ListenTarget {
|
|
|
79
79
|
params;
|
|
80
80
|
/** All events emitted by this controller. */
|
|
81
81
|
static events = {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
MultiplayerControllerMessageEvent,
|
|
83
|
+
MultiplayerControllerRoomListEvent,
|
|
84
|
+
MultiplayerControllerClientEvent,
|
|
85
|
+
MultiplayerControllerConnectionEvent,
|
|
86
86
|
};
|
|
87
87
|
/** All events emitted by this controller. */
|
|
88
88
|
events = MultiplayerRoomController.events;
|
|
@@ -182,7 +182,7 @@ export class MultiplayerRoomController extends ListenTarget {
|
|
|
182
182
|
this.isListeningToRoomUpdates = true;
|
|
183
183
|
this.startRoomInterval();
|
|
184
184
|
if (callback) {
|
|
185
|
-
return this.listen(
|
|
185
|
+
return this.listen(MultiplayerControllerRoomListEvent, async (event) => {
|
|
186
186
|
await callback(event.detail);
|
|
187
187
|
});
|
|
188
188
|
}
|
|
@@ -239,10 +239,10 @@ export class MultiplayerRoomController extends ListenTarget {
|
|
|
239
239
|
}
|
|
240
240
|
: undefined);
|
|
241
241
|
currentConnection.listen((WebrtcMultiplayerMessageEvent), (event) => {
|
|
242
|
-
this.dispatch(new
|
|
242
|
+
this.dispatch(new MultiplayerControllerMessageEvent(event.sourceClientId, event.detail));
|
|
243
243
|
});
|
|
244
244
|
currentConnection.listen(WebrtcMultiplayerConnectionUpdateEvent, (event) => {
|
|
245
|
-
this.dispatch(new
|
|
245
|
+
this.dispatch(new MultiplayerControllerClientEvent({
|
|
246
246
|
detail: event.detail,
|
|
247
247
|
}));
|
|
248
248
|
});
|
|
@@ -311,7 +311,7 @@ export class MultiplayerRoomController extends ListenTarget {
|
|
|
311
311
|
if (state.room) {
|
|
312
312
|
makeWritable(this).roomConnectionState = state.room;
|
|
313
313
|
}
|
|
314
|
-
this.dispatch(new
|
|
314
|
+
this.dispatch(new MultiplayerControllerConnectionEvent({
|
|
315
315
|
detail: {
|
|
316
316
|
room: this.roomConnectionState,
|
|
317
317
|
api: this.apiConnectionState,
|
|
@@ -342,7 +342,7 @@ export class MultiplayerRoomController extends ListenTarget {
|
|
|
342
342
|
},
|
|
343
343
|
});
|
|
344
344
|
if (output.Ok) {
|
|
345
|
-
this.dispatch(new
|
|
345
|
+
this.dispatch(new MultiplayerControllerRoomListEvent({
|
|
346
346
|
detail: output.Ok.responseData,
|
|
347
347
|
}));
|
|
348
348
|
}
|
|
@@ -156,9 +156,9 @@ export type RoomInput = Pick<Extract<MultiplayerConnectClientMessage, {
|
|
|
156
156
|
*
|
|
157
157
|
* @category Internal
|
|
158
158
|
*/
|
|
159
|
-
export type ShouldAllowConnectionCheck<
|
|
159
|
+
export type ShouldAllowConnectionCheck<MultiplayerController> = (data: {
|
|
160
160
|
connectingClientId: ClientId;
|
|
161
|
-
|
|
161
|
+
multiplayerController: MultiplayerController;
|
|
162
162
|
}) => MaybePromise<boolean>;
|
|
163
163
|
/**
|
|
164
164
|
* A controller that connects to the multiplayer api and establishes a WebRTC connection to the
|
|
@@ -306,7 +306,7 @@ export class WebrtcMultiplayerController extends ListenTarget {
|
|
|
306
306
|
await this.connectionQueue.add(async () => {
|
|
307
307
|
if (!this.shouldAllowConnectionCheck({
|
|
308
308
|
connectingClientId: message.clientId,
|
|
309
|
-
|
|
309
|
+
multiplayerController: this,
|
|
310
310
|
})) {
|
|
311
311
|
log.warning('offer rejected');
|
|
312
312
|
webSocket.send({
|