({
playerNumber,
allConnectedPlayers,
justDisconnectedPeers,
})
| 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 |
no test coverage detected