public void OnData(int connectionId, int channelId, int receiveSize) { GameStatics.OnlineSession.NetBuffer.SeekZero(); NetworkMessageID msgId = (NetworkMessageID)GameStatics.OnlineSession.NetBuffer.ReadInt(); switch (msgId) { case (NetworkMessageID.PlayerRegistration): PlayerRegistrationMsg prm = new PlayerRegistrationMsg(); prm.Deserialize(GameStatics.OnlineSession.NetBuffer); HandlePlayerRegistrationMsg(ref prm, connectionId); break; case (NetworkMessageID.PlayerAdd): PlayerAddMsg pam = new PlayerAddMsg(); pam.Deserialize(GameStatics.OnlineSession.NetBuffer); HandlePlayerAddMsg(ref pam, connectionId); break; case (NetworkMessageID.SceneLoading): SceneLoadingMsg lsm = new SceneLoadingMsg(); lsm.Deserialize(GameStatics.OnlineSession.NetBuffer); HandleLoadSceneMsg(ref lsm); break; } }
public void OnPlayerRemovedFromSession(PlayerData player) { // Remove player from gameSession RemoveLobbyPlayerEntry(player.PlayerId); // Send remove notification of disconnected player to all other players PlayerAddMsg msg = new PlayerAddMsg(); msg.Add = false; msg.PlayerId = player.PlayerId; msg.Serialize(GameStatics.OnlineSession.NetBuffer); GameStatics.OnlineSession.SendBufferToAllClients(OnlineSession.ReliableSequencedChannelId); }
private void HandlePlayerAddMsg(ref PlayerAddMsg msg, int connectionId) { if (GameStatics.OnlineSession.Mode == OnlineSessionMode.Client) { if (msg.Add) { AddLobbyPlayerEntry(msg.PlayerName, msg.PlayerId); } else { RemoveLobbyPlayerEntry(msg.PlayerId); } } }
public void OnPlayerAddedToSession(PlayerData player) { AddLobbyPlayerEntry(player.Name, player.PlayerId); // Send all players information to this new player if (player.ConnectionId >= 0) { foreach (var pd in JoinedPlayers) { PlayerAddMsg newMsg1 = new PlayerAddMsg(); newMsg1.Add = true; newMsg1.PlayerId = pd.Value.PlayerId; newMsg1.PlayerName = pd.Value.Name; // For the new added connection, send msg to add as local player if (pd.Value.ConnectionId == player.ConnectionId) { newMsg1.ForLocalPlayer = true; newMsg1.Serialize(GameStatics.OnlineSession.NetBuffer); GameStatics.OnlineSession.SendBufferToConnection(player.ConnectionId, OnlineSession.ReliableSequencedChannelId); } else { newMsg1.ForLocalPlayer = false; newMsg1.Serialize(GameStatics.OnlineSession.NetBuffer); GameStatics.OnlineSession.SendBufferToConnection(player.ConnectionId, OnlineSession.ReliableSequencedChannelId); } } } // Send new player information to other players PlayerAddMsg newMsg2 = new PlayerAddMsg(); newMsg2.Add = true; newMsg2.ForLocalPlayer = false; newMsg2.PlayerId = player.PlayerId; newMsg2.PlayerName = player.Name; newMsg2.Serialize(GameStatics.OnlineSession.NetBuffer); GameStatics.OnlineSession.SendBufferToAllClientsExcept(player.ConnectionId, OnlineSession.ReliableSequencedChannelId); }