MCPcopy
hub / github.com/4ian/GDevelop / switchToPeer

Function switchToPeer

Extensions/Multiplayer/tests/multiplayer.spec.js:271–311  ·  view source on GitHub ↗
({
      playerNumber,
      allConnectedPlayers,
      justDisconnectedPeers,
    })

Source from the content-addressed store, hash-verified

269 * @param {{ playerNumber: number, allConnectedPlayers: {playerNumber: number, peerId: string}[], justDisconnectedPeers?: string[]}} options
270 */
271 const switchToPeer = ({
272 playerNumber,
273 allConnectedPlayers,
274 justDisconnectedPeers,
275 }) => {
276 const connectedPlayer = allConnectedPlayers.find(
277 (player) => player.playerNumber === playerNumber
278 );
279 if (!connectedPlayer)
280 throw new Error(`No player found for player ${playerNumber}`);
281 const peerId = connectedPlayer.peerId;
282 // console.log('## SWITCHING TO PEER', peerId);
283
284 // Switch the state of the peerJs mock.
285 p2pState.currentPeerId = peerId;
286 p2pState.justDisconnectedPeers = justDisconnectedPeers || [];
287 // Player 1 is connected to everyone else, and everyone else is connected to player 1.
288 if (playerNumber === 1) {
289 p2pState.otherPeerIds = allConnectedPlayers
290 .filter((player) => player.playerNumber !== 1)
291 .map((player) => player.peerId);
292 } else {
293 p2pState.otherPeerIds = allConnectedPlayers
294 .filter((player) => player.playerNumber === 1)
295 .map((player) => player.peerId);
296 }
297
298 // Switch the state of the MultiplayerMessageManager.
299 gdjs.multiplayerMessageManager = peerMultiplayerMessageManager[peerId] =
300 peerMultiplayerMessageManager[peerId] ||
301 gdjs.makeMultiplayerMessageManager();
302
303 // Switch the state of the MultiplayerVariablesManager.
304 gdjs.multiplayerVariablesManager = peerMultiplayerVariablesManager[
305 peerId
306 ] =
307 peerMultiplayerVariablesManager[peerId] ||
308 gdjs.makeMultiplayerVariablesManager();
309 // Switch the state of the game.
310 gdjs.multiplayer.playerNumber = playerNumber;
311 };
312
313 /**
314 * Helper to fast forward a bit of time in players games, so that heartbeats

Callers 2

initiateGameWithPlayersFunction · 0.85

Calls 2

filterMethod · 0.65
mapMethod · 0.45

Tested by

no test coverage detected