Example #1
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc, PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Score", "Recieved score");

            string name = inc.ReadString();

            playerAndConnection = players.FirstOrDefault(p => p.Player.Username == name);
            if (playerAndConnection == null)
            {
                return;
            }
            playerAndConnection.Player.Score++;

            managerLogger.AddLogMessage("Score", "Sending out score");
            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.Score);
            outmsg.Write(playerAndConnection.Player.Username);
            outmsg.Write(playerAndConnection.Player.Score);
            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);

            //whenver a player gets score it is a new round meaning that now a new seed should be sent!!!
            RandomSeedCommand command = new RandomSeedCommand();

            command.Run(managerLogger, server, inc, playerAndConnection, players, abilities);
        }
Example #2
0
        public void Run()
        {
            NetServer.Start();
            managerLogger.AddLogMessage("Server", "Server Started...");
            while (true)
            {
                NetIncomingMessage inc;
                if ((inc = NetServer.ReadMessage()) == null)
                {
                    continue;
                }
                switch (inc.MessageType)
                {
                case NetIncomingMessageType.ConnectionApproval:
                    var login = new LoginCommand();
                    login.Run(managerLogger, this, inc, null, players, abilities);
                    break;

                case NetIncomingMessageType.Data:
                    Data(inc);
                    break;

                case NetIncomingMessageType.StatusChanged:
                    UserDisconnected(inc);
                    break;
                }

                if (DateTime.Now.Subtract(lavaTimer).Seconds > 3)
                {
                    SendLavaRadius();
                }
            }
        }
Example #3
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc, PlayerAndConnection playerAndConnection, GameRoom gameRoom)
        {
            managerLogger.AddLogMessage("server", "New connection...");
            var data = inc.ReadByte();

            if (data == (byte)PacketType.Login)
            {
                inc.SenderConnection.Approve();
                managerLogger.AddLogMessage("server", "..connection accpeted.");
                playerAndConnection = CreatePlayer(inc, gameRoom.Players, gameRoom.ManagerCamera);
                var outmsg = server.NetServer.CreateMessage();
                outmsg.Write((byte)PacketType.Login);
                outmsg.Write(gameRoom.Players.Count);
                for (int n = 0; n < gameRoom.Players.Count; n++)
                {
                    var p = gameRoom.Players[n];
                    outmsg.Write(p.Player.Username);
                    outmsg.WriteAllProperties(p.Player.Position);
                }
                server.NetServer.SendMessage(outmsg, inc.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);
                var command = new PlayerPositionCommand();
                command.Run(managerLogger, server, inc, playerAndConnection, gameRoom);
                server.SendNewPlayerEvent(playerAndConnection.Player.Username, gameRoom.GameRoomId);
            }
            else
            {
                inc.SenderConnection.Deny("Didn't send correct information.");
            }
        }
Example #4
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Server", "New connection...");
            var data = inc.ReadByte();

            if (data == (byte)PacketType.Login)
            {
                managerLogger.AddLogMessage("Server", "...connection accepted");
                playerAndConnection = CreatePlayer(inc, players);
                inc.SenderConnection.Approve();
                var outmsg = server.NetServer.CreateMessage();
                outmsg.Write((byte)PacketType.Login);
                outmsg.Write(true);
                outmsg.Write(players.Count);
                for (int n = 0; n < players.Count; n++)
                {
                    outmsg.WriteAllProperties(players[n].Player);
                }
                server.NetServer.SendMessage(outmsg, inc.SenderConnection, NetDeliveryMethod.ReliableOrdered, 0);
                var command = new PlayerPositionCommand();
                command.Run(managerLogger, server, inc, playerAndConnection, players, abilities);

                server.SendNewPlayerEvent(playerAndConnection.Player.Username);
            }
            else
            {
                inc.SenderConnection.Deny("Didn't send correct information.");
            }
        }
Example #5
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Create", "Received ability");
            var  name = inc.ReadString();
            Byte ID   = inc.ReadByte();

            var ability = CreateAbility(name, ID, inc);

            abilities.Add(ability);

            //Send ability to all the clients...

            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.AbilityCreate);
            outmsg.Write(ability.Username);
            outmsg.Write(ability.ID);
            outmsg.Write((byte)ability.Type);
            outmsg.Write(ability.XPosition);
            outmsg.Write(ability.YPosition);
            outmsg.Write(ability.Direction);
            outmsg.Write(ability.Damage);

            managerLogger.AddLogMessage("Create", " sending ability to all clients");

            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);
        }
Example #6
0
 private void WaitForPlayer(double gameTime)
 {
     if (Players.Count > 0)
     {
         _logger.AddLogMessage("Room - " + GameRoomId, "Got enough players, start run camera.");
         _roomState = RoomState.Run;
     }
 }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc, PlayerAndConnection playerAndConnection, GameRoom gameRoom)
        {
            managerLogger.AddLogMessage("server", "Received new input");
            var key  = (Keys)inc.ReadByte();
            var name = inc.ReadString();

            playerAndConnection = gameRoom.Players.FirstOrDefault(p => p.Player.Username == name);
            if (playerAndConnection == null)
            {
                managerLogger.AddLogMessage("server", string.Format("Could not find player with name {0}", name));
                return;
            }

            int x = 0;
            int y = 0;

            switch (key)
            {
            case Keys.Down:
                y++;
                break;

            case Keys.Up:
                y--;
                break;

            case Keys.Left:
                x--;
                break;

            case Keys.Right:
                x++;
                break;
            }

            var player   = playerAndConnection.Player;
            var position = playerAndConnection.Player.Position;

            if (!ManagerCollision.CheckCollision(new Rectangle(position.XPosition + x, position.YPosition + y, 100, 50),
                                                 player.Username, gameRoom.Players.Select(p => p.Player).ToList()))
            {
                position.XPosition += x;
                position.YPosition += y;

                position.Visible = gameRoom.ManagerCamera.InScreenCheck(new Vector2(position.XPosition, position.YPosition));
                if (position.Visible)
                {
                    var screenPosition =
                        gameRoom.ManagerCamera.WorldToScreenPosition(new Vector2(position.XPosition, position.YPosition));
                    position.ScreenXPosition = (int)screenPosition.X;
                    position.ScreenYPosition = (int)screenPosition.Y;
                }

                var command = new PlayerPositionCommand();
                command.Run(managerLogger, server, inc, playerAndConnection, gameRoom);
            }
        }
        public void Run()
        {
            NetServer.Start();
            Console.WriteLine("Server started...");
            _managerLogger.AddLogMessage("Server", "Server started...");
            while (true)
            {
                NetIncomingMessage inc;
                if ((inc = NetServer.ReadMessage()) == null)
                {
                    continue;
                }
                switch (inc.MessageType)
                {
                case NetIncomingMessageType.ConnectionApproval:
                    var login    = new LoginCommand();
                    var gameRoom = GetGameRoomById(inc.ReadString());
                    login.Run(_managerLogger, this, inc, null, gameRoom);
                    break;

                case NetIncomingMessageType.Data:
                    Data(inc);
                    break;
                }
            }
        }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            //managerLogger.AddLogMessage("Server", "Recieved new input");
            var name = inc.ReadString();

            playerAndConnection = players.FirstOrDefault(p => p.Player.Username == name);
            if (playerAndConnection == null)
            {
                managerLogger.AddLogMessage("Server", string.Format("Didn't find player with name {0}", name));
                return;
            }
            playerAndConnection.Player.XPosition         = inc.ReadInt16();
            playerAndConnection.Player.YPosition         = inc.ReadInt16();
            playerAndConnection.Player.Animation.XRecPos = inc.ReadInt16();
            playerAndConnection.Player.Animation.YRecPos = inc.ReadInt16();
            playerAndConnection.Player.Animation.Height  = inc.ReadInt16();
            playerAndConnection.Player.Animation.Width   = inc.ReadInt16();
            playerAndConnection.Player.Health            = inc.ReadSByte();
            playerAndConnection.Player.IntersectingLava  = inc.ReadBoolean();
            playerAndConnection.Player.OrbiterRotation   = inc.ReadDouble();



            var command = new PlayerPositionCommand();

            command.Run(managerLogger, server, inc, playerAndConnection, players, abilities);
        }
Example #10
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc, PlayerAndConnection playerAndConnection, GameRoom gameRoom)
        {
            managerLogger.AddLogMessage("server", string.Format("Kicking {0}", playerAndConnection.Player.Username));
            var outmessage = server.NetServer.CreateMessage();

            outmessage.Write((byte)PacketType.Kick);
            outmessage.Write(playerAndConnection.Player.Username);
            server.NetServer.SendToAll(outmessage, NetDeliveryMethod.ReliableOrdered);
            //Kick player
            playerAndConnection.Connection.Disconnect("Bye bye, you're kicked.");
        }
Example #11
0
 public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc, PlayerAndConnection playerAndConnection, GameRoom gameRoom)
 {
     if (playerAndConnection != null)
     {
         managerLogger.AddLogMessage("server", "Sending out new player position to all in group " + gameRoom.GameRoomId);
         var outmessage = server.NetServer.CreateMessage();
         outmessage.Write((byte)PacketType.PlayerPosition);
         outmessage.Write(playerAndConnection.Player.Username);
         outmessage.WriteAllProperties(playerAndConnection.Player.Position);
         server.NetServer.SendMessage(outmessage, gameRoom.Players.Select(p => p.Connection).ToList(),
                                      NetDeliveryMethod.ReliableOrdered, 0);
     }
 }
Example #12
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Class Change", "Recieved a class change");
            string name = inc.ReadString();

            var player = players.FirstOrDefault(p => p.Player.Username == name);

            if (player == null)
            {
                managerLogger.AddLogMessage("Class Change", "Didnt find a player associated with that name");
            }
            player.Player.Type = (ClassType)inc.ReadByte();
            managerLogger.AddLogMessage("Class Change", "Class type succesfully changed");

            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.ClassChange);
            outmsg.Write(name);
            outmsg.Write((byte)player.Player.Type);
            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);
        }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Update", "Received ability");

            var  name    = inc.ReadString();
            Byte ID      = inc.ReadByte();
            var  ability = ReadAbility(inc, abilities, ID, name);

            if (ability != null)
            {
                SendAbility(server, ability, managerLogger);
            }
        }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc, PlayerAndConnection playerAndConnection, GameRoom gameRoom)
        {
            managerLogger.AddLogMessage("server", "Sending full player list");
            var outmessage = server.NetServer.CreateMessage();

            outmessage.Write((byte)PacketType.AllPlayers);
            outmessage.Write(CameraUpdate);
            outmessage.Write(gameRoom.Players.Count);
            foreach (var p in gameRoom.Players)
            {
                outmessage.Write(p.Player.Username);
                outmessage.WriteAllProperties(p.Player.Position);
            }
            server.NetServer.SendMessage(outmessage, gameRoom.Players.Select(p => p.Connection).ToList(), NetDeliveryMethod.ReliableOrdered, 0);
        }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Deletion", "Received ability to delete");
            string username = inc.ReadString();
            byte   ID       = inc.ReadByte();

            for (int i = 0; i < abilities.Count; i++)
            {
                if (abilities[i].ID == ID && abilities[i].Username == username)
                {
                    abilities.RemoveAt(i);
                    i--;

                    managerLogger.AddLogMessage("Deletion", "Sending ability to delete to clients");
                    var outmsg = server.NetServer.CreateMessage();
                    outmsg.Write((byte)PacketType.AbilityDelete);
                    outmsg.Write(username);
                    outmsg.Write(ID);

                    server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);
                }
            }
        }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            string name  = inc.ReadString();
            bool   ready = inc.ReadBoolean();

            managerLogger.AddLogMessage("Ready", "Recieved ready check");

            var player = players.FirstOrDefault(p => p.Player.Username == name);

            player.Player.Ready = ready;

            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.ReadyCheck);
            outmsg.Write(name);
            outmsg.Write(ready);
            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);

            server.NetServer.FlushSendQueue();

            bool allReady = true;

            for (int i = 0; i < players.Count; i++)
            {
                if (!players[i].Player.Ready)
                {
                    allReady = false;
                }
            }
            if (allReady)
            {
                RandomSeedCommand randomSeedCommand = new RandomSeedCommand();
                randomSeedCommand.Run(managerLogger, server, inc, playerAndConnection, players, abilities);
            }
        }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            managerLogger.AddLogMessage("Server", "Sending full player list");
            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.AllPlayers);
            outmsg.Write(players.Count);
            foreach (var p in players)
            {
                outmsg.Write(p.Player.Username);
                outmsg.Write(p.Player.XPosition);
                outmsg.Write(p.Player.YPosition);
                outmsg.Write(p.Player.Animation.XRecPos);
                outmsg.Write(p.Player.Animation.YRecPos);
                outmsg.Write(p.Player.Animation.Height);
                outmsg.Write(p.Player.Animation.Width);
                outmsg.Write(p.Player.Health);
                outmsg.Write(p.Player.IntersectingLava);
                outmsg.Write((byte)p.Player.Type);
                outmsg.Write(p.Player.OrbiterRotation);
            }
            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);
        }