Exemplo n.º 1
0
        protected override void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
        {
            switch (message.MessageType)
            {
                case MessageType.MsgPlayerServerUpdate:
                    {
                        MsgPlayerServerUpdatePacket packet = (MsgPlayerServerUpdatePacket)message.MessageData;

                        // we are only interested if it is an update about this remote player
                        if (packet.Slot != Slot)
                            break;

                        // save our old stuff
                        oldPosition = Position;
                        oldRotation = Rotation;

                        // and set our new location
                        newPosition = packet.Position;
                        newRotation = packet.Rotation;

                        // and set our last update
                        lastMsgUpdate = message.Time.TotalGameTime;

                        break;
                    }
                    
                default:
                    break;
            }

            base.HandleReceivedMessage(sender, message);
        }
Exemplo n.º 2
0
 protected virtual void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
 {
     return;
 }
Exemplo n.º 3
0
        private void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
        {
            switch (message.MessageType)
            {
                case MessageType.MsgWorld:
                    Console.WriteLine("Loading map...");

                    MsgWorldPacket worldPacket = (MsgWorldPacket)message.MessageData;

                    LoadMap(worldPacket.Map);

                    Console.WriteLine(String.Format("Map \"{0}\" loaded.", WorldName));

                    break;

                case MessageType.MsgDeath:
                    MsgDeathPacket deathPacket = (MsgDeathPacket)message.MessageData;

                    Player killee = PlayerManager.GetPlayerBySlot(deathPacket.Slot);
                    Player killer = PlayerManager.GetPlayerBySlot(deathPacket.Killer);

                    if (killee == null || killer == null)
                        return;

                    ConsoleMessageLine consoleMessage;

                    if (killer == PlayerManager.LocalPlayer)
                    {
                        consoleMessage =
                            new ConsoleMessageLine(
                                "You killed ", Color.White,
                                killee.Callsign, ProtocolHelpers.TeamTypeToColor(killer.Team));
                    }
                    else
                    {
                        consoleMessage =
                            new ConsoleMessageLine(
                                killee.Callsign, ProtocolHelpers.TeamTypeToColor(killee.Team),
                                " was killed by ", Color.White,
                                killer.Callsign, ProtocolHelpers.TeamTypeToColor(killer.Team));
                    }

                    Console.WriteLine(consoleMessage);

                    break;

                default:
                    break;
            }
        }
Exemplo n.º 4
0
        private void FireMessageEvent(GameTime gameTime, MsgBasePacket msgData)
        {
            EventHandler<ServerLinkMessageEvent> handler = MessageReceivedEvent;

            // prevent race condition
            if (handler != null)
            {
                // notify delegates attached to event
                ServerLinkMessageEvent e = new ServerLinkMessageEvent(msgData.MsgType, msgData, ServerLinkStatus, gameTime);
                handler(this, e);
            }
        }
Exemplo n.º 5
0
        protected virtual void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
        {
            switch (message.MessageType)
            {
                case MessageType.MsgSpawn:
                    {
                        MsgSpawnPacket packet = (MsgSpawnPacket)message.MessageData;

                        // only interested in it if it's us that is spawning
                        if (packet.Slot == this.Slot)
                        {
                            Spawn(packet.Position, packet.Rotation);
                        }

                        break;
                    }

                case MessageType.MsgDeath:
                    {
                        MsgDeathPacket packet = (MsgDeathPacket)message.MessageData;

                        // only interested in it if it's us that was killed
                        if (packet.Slot == this.Slot)
                        {
                            Die(World.PlayerManager.GetPlayerBySlot(packet.Killer));
                        }

                        break;
                    }

                case MessageType.MsgScore:
                    {
                        MsgScorePacket packet = (MsgScorePacket)message.MessageData;

                        // only interested in it if it's our new score
                        if (packet.Slot == this.Slot)
                        {
                            this.Score = packet.Score;
                        }

                        break;
                    }

                case MessageType.MsgEndShot:
                    {
                        MsgEndShotPacket packet = (MsgEndShotPacket)message.MessageData;

                        // only interested if it's a shot by this player that's ending
                        if (packet.Slot == this.Slot)
                        {
                            try
                            {
                                Shots[packet.ShotSlot].End(packet.Explode);
                            }
                            catch (KeyNotFoundException e)
                            {
                                Log.Warn(e.Message);
                                Log.Warn(e.StackTrace);
                            }
                        }

                        break;
                    }

                default:
                    break;
            }

            return;
        }
Exemplo n.º 6
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;
            }            
        }
Exemplo n.º 7
0
 protected override void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
 {
     base.HandleReceivedMessage(sender, message);
 }
Exemplo n.º 8
0
        private void HandleReceivedMessage(object sender, ServerLinkMessageEvent message)
        {
            switch (message.MessageType)
            {
                case MessageType.MsgWorld:
                    console.WriteLine("Loading map...");

                    MsgWorldPacket msgWorldData = (MsgWorldPacket)message.MessageData;
                    
                    LoadMap(msgWorldData.Map);

                    console.WriteLine(String.Format("Map \"{0}\" loaded.", WorldName));

                    break;

                default:
                    break;
            }
        }