Beispiel #1
0
 internal void SendToPlayers(List <Player> players, NetMessage msg, ReliabilityMode mode)
 {
     _roomServer.SendToPlayers(players, msg, mode);
 }
Beispiel #2
0
 internal void SendToConnections(List <object> connections, NetMessage msg, ReliabilityMode reliable)
 {
     _roomServer.SendToConnections(connections, msg, reliable);
 }
Beispiel #3
0
 internal void SendExcept(NetMessage msg, Player except, ReliabilityMode mode)
 {
     _roomServer.SendExcept(msg, except, mode);
 }
Beispiel #4
0
 partial void ImplSendToAll(NetMessage msg, ReliabilityMode mode);
Beispiel #5
0
 void ImplSend(NetMessage msg, ReliabilityMode mode, bool recycle = true)
 {
     Server.SendPlayerMessage(this, msg, mode, recycle);
 }
Beispiel #6
0
 partial void ImplSendMessageToOthers(NetMessage msg, ReliabilityMode mode);
Beispiel #7
0
 internal void SendToAll(NetMessage msg, ReliabilityMode mode)
 {
     ImplSendToAll(msg, mode);
 }
 protected internal abstract void SendToConnections(List <object> connections, NetMessage msg, ReliabilityMode reliable);
Beispiel #9
0
 internal void SendMessageToOthers(NetMessage msg, ReliabilityMode mode)
 {
     ImplSendMessageToOthers(msg, mode);
 }
 protected internal abstract void SendSceneView(NetMessage msg, ReliabilityMode mode);
 protected internal abstract void SendExcept(NetMessage msg, Player except, ReliabilityMode mode);
 protected internal abstract void SendToPlayer(Player player, NetMessage msg, ReliabilityMode mode);
 protected internal abstract void SendToPlayers(List <Player> players, NetMessage msg, ReliabilityMode mode);
        private void ProcessInternal(BroadcastMode broadcast, ReliabilityMode reliability, NetMessage msg)
        {
            if (!msg.ReadByte(out var rpc))
            {
                Debug.LogError("Malformed internal rpc");
                return;
            }

            try
            {
                ushort pid;
                Player player;
                switch (rpc)
                {
                case DandRRpcs.RoomSwitch:
                    pid = msg.ReadUInt16();
                    var room = msg.ReadString();
                    player = _server.GetPlayer(pid);
                    if (player != null)
                    {
                        player.ChangeRoom(room);
                    }
                    else
                    {
                        Debug.LogError("Attempted to switch a null player");
                    }
                    break;

                case DandRRpcs.SyncNetUser:
                    pid    = msg.ReadUInt16();
                    player = _server.GetPlayer(pid);
                    if (player != null && player.NetUserData != null)
                    {
                        player.NetUserData.OnDeserialize(msg);
                        player.OnNetUserDataChanged();
                    }
                    break;

                case DandRRpcs.PlayerConnected:
                    pid    = msg.ReadUInt16();
                    player = _server.GetPlayer(pid);
                    if (player != null)
                    {
                        player.FinishedRoomSwitch();
                    }
                    break;

                case DandRRpcs.DisconnectMessage:
                    string reason;
                    if (!msg.ReadString(out reason))
                    {
                        reason = "Shutting down";
                    }
                    Debug.Log($"Room disconnecting: {reason}");
                    Running = false;
                    break;
                }
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }