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

Function markPlayerAsDisconnected

Extensions/Multiplayer/messageManager.ts:2160–2202  ·  view source on GitHub ↗
({
      runtimeScene,
      playerNumber,
      peerId,
    }: {
      runtimeScene: gdjs.RuntimeScene;
      playerNumber: number;
      peerId?: string;
    })

Source from the content-addressed store, hash-verified

2158 };
2159
2160 const markPlayerAsDisconnected = ({
2161 runtimeScene,
2162 playerNumber,
2163 peerId,
2164 }: {
2165 runtimeScene: gdjs.RuntimeScene;
2166 playerNumber: number;
2167 peerId?: string;
2168 }) => {
2169 logger.info(`Marking player ${playerNumber} as disconnected.`);
2170 _playerNumbersWhoJustLeft.push(playerNumber);
2171 // Temporarily save the username in another variable to be used for the notification,
2172 // as we're deleting its playerInfo just after.
2173 _temporaryPlayerNumberToUsername[playerNumber] =
2174 getPlayerUsername(playerNumber);
2175 clearPlayerTempData(playerNumber);
2176
2177 // If Host has disconnected, either switch host or stop the game.
2178 if (peerId && peerId === gdjs.multiplayer.hostPeerId) {
2179 const shouldEndLobbyGame =
2180 gdjs.multiplayer.shouldEndLobbyWhenHostLeaves();
2181 if (shouldEndLobbyGame) {
2182 logger.info('Host has disconnected, ending the game.');
2183
2184 clearAllMessagesTempData();
2185 gdjs.multiplayer.handleLobbyGameEnded();
2186 } else {
2187 logger.info('Host has disconnected, switching host.');
2188
2189 gdjs.multiplayer.handleHostDisconnected({ runtimeScene });
2190 return;
2191 }
2192 }
2193
2194 // If we are the host, send a heartbeat right away so that everyone is aware of the disconnection
2195 // on approximately the same frame.
2196 if (gdjs.multiplayer.isCurrentPlayerHost()) {
2197 const connectedPeerIds = gdjs.multiplayerPeerJsHelper.getAllPeers();
2198 const { messageName, messageData } = createHeartbeatMessage();
2199 sendDataTo(connectedPeerIds, messageName, messageData);
2200 lastHeartbeatSentTimestamp = getTimeNow();
2201 }
2202 };
2203
2204 const getPlayerUsername = (playerNumber: number) => {
2205 return (

Callers 1

Calls 7

clearPlayerTempDataFunction · 0.85
clearAllMessagesTempDataFunction · 0.85
createHeartbeatMessageFunction · 0.85
infoMethod · 0.80
getPlayerUsernameFunction · 0.70
sendDataToFunction · 0.70
pushMethod · 0.65

Tested by

no test coverage detected