Example #1
0
        protected virtual void Dispose(bool disposing)
        {
            if (!disposing)
                return;

            world.ServerLink.MessageReceivedEvent -= HandleReceivedMessage;

            foreach (RemotePlayer remotePlayer in remotePlayers.Values)
                remotePlayer.Dispose();

            remotePlayers.Clear();

            if (localPlayer != null)
            {
                localPlayer.Dispose();
                localPlayer = null;
            }
        }
Example #2
0
        private void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
        {
            switch (message.MessageType)
            {
                case MessageType.MsgAddPlayer:
                    {
                        MsgAddPlayerPacket packet = (MsgAddPlayerPacket)message.MessageData;

                        if (message.ServerLinkStatus == NetServerLinkStatus.Connected)
                            world.Console.WriteLine(String.Format("{0} has joined the {1}",
                                                  packet.Player.Callsign, packet.Player.Team));
                        else if (message.ServerLinkStatus == NetServerLinkStatus.GettingState)
                            world.Console.WriteLine(String.Format("{0} is on the {1}",
                                                  packet.Player.Callsign, packet.Player.Team));

                        if (!packet.AddMyself)
                            AddPlayer(packet.Player);
                        else
                            localPlayer = new LocalPlayer(world, packet.Player);

                        break;
                    }

                case MessageType.MsgRemovePlayer:
                    {
                        MsgRemovePlayerPacket packet = (MsgRemovePlayerPacket)message.MessageData;

                        world.Console.WriteLine(String.Format("{0} has left the server ({1})", GetPlayerBySlot(packet.Slot).Callsign, packet.Reason));

                        RemovePlayer(packet.Slot);

                        break;
                    }

                default:
                    break;
            }            
        }