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);
        }
Exemplo n.º 2
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.");
            }
        }
Exemplo n.º 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.");
            }
        }
Exemplo n.º 4
0
        public void SetPath(string newPath)
        {
            DirectoryInfo prevDir = CurrentDirectory;

            try
            {
                if (Path.IsPathRooted(newPath))
                {
                    CurrentDirectory = new DirectoryInfo(newPath);
                    UpdateContent();
                    ManagerLogger.Log("Set_Path", $"{prevDir.FullName} -> {newPath}");
                }
                else
                {
                    throw new Exception("Incorrect path");
                }
            }
            catch (Exception e)
            {
                ManagerDialogWindows.ErrorMessage(e.Message);
                ManagerLogger.Log("Set_Path_Failure", $"{e.Message}; Path - {newPath}");
                CurrentDirectory = prevDir;
            }
            ContentState = State.Default;
            MainMenu.NullPos();
        }
Exemplo n.º 5
0
 public void Rename(string newName)
 {
     try
     {
         if (MainMenu.Content.Count > 0 && newName != String.Empty)
         {
             if (MainMenu.GetCurrentElement().ToDirectoryInfo().Exists)
             {
                 newName = Path.Combine(MainMenu.GetCurrentElement().ToDirectoryInfo().Parent.FullName, newName);
             }
             else
             {
                 newName = Path.Combine(MainMenu.GetCurrentElement().ToFileInfo().DirectoryName, newName);
             }
             if ((!Directory.Exists(newName)) && (!File.Exists(newName) || FileReplace(newName)))
             {
                 MainMenu.GetCurrentElement().ToDirectoryInfo().MoveTo(newName);
             }
             UpdateContent();
             ManagerLogger.Log("Rename", $"{MainMenu.GetCurrentElement()} -> {newName}");
         }
     }
     catch (Exception e)
     {
         ManagerDialogWindows.ErrorMessage(e.Message);
         ManagerLogger.Log("Rename_Failure", $"{e.Message}; Path - {MainMenu.GetCurrentElement()} -> {newName}");
     }
 }
Exemplo n.º 6
0
 public void CreateFile(string file)
 {
     if (file != String.Empty)
     {
         if (ContentState == State.Searched || ContentState == State.History)
         {
             MoveOut();
         }
         file = Path.Combine(CurrentDirectory.FullName, file);
         if (!File.Exists(file) || FileReplace(file))
         {
             try
             {
                 using (File.Create(file)) { }
                 UpdateContent();
                 ManagerLogger.Log("Create_File", file);
             }
             catch (Exception e)
             {
                 ManagerDialogWindows.ErrorMessage(e.Message);
                 ManagerLogger.Log("File_Create_Failure", $"{e.Message}; Path - {file}");
             }
         }
     }
 }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
0
        public void Delete()
        {
            bool file = true;

            if (MainMenu.Content.Count > 0)
            {
                string name = MainMenu.GetCurrentElement().FullName;
                try
                {
                    if (ManagerDialogWindows.Confirmation($"Are you sure, you want delete {MainMenu.GetCurrentElement()}?"))
                    {
                        if (MainMenu.GetCurrentElement().ToDirectoryInfo().Exists)
                        {
                            file = false;
                            MainMenu.GetCurrentElement().ToDirectoryInfo().Delete(true);
                        }
                        else
                        {
                            MainMenu.GetCurrentElement().ToFileInfo().Delete();
                        }
                        MainMenu.ControllPos();
                        UpdateContent();
                        ManagerLogger.Log("Delete", name);
                    }
                }
                catch (Exception e)
                {
                    ManagerDialogWindows.ErrorMessage(e.Message);
                    ManagerLogger.Log($"{(file ? "File" : "Directory")}_Delete_Failure", $"{e.Message}; Path - {name}");
                }
            }
        }
Exemplo n.º 9
0
 public void CreateDirectory(string dir)
 {
     if (dir != String.Empty)
     {
         if (ContentState == State.Searched || ContentState == State.History)
         {
             MoveOut();
         }
         dir = Path.Combine(CurrentDirectory.FullName, dir);
         if (Directory.Exists(dir))
         {
             ManagerDialogWindows.ErrorMessage($"Directory called {dir} already exists");
             ManagerLogger.Log("Create_Directory_Failure", $"Directory called {dir} already exists; Path - {dir}");
         }
         else
         {
             try
             {
                 Directory.CreateDirectory(dir);
                 UpdateContent();
                 ManagerLogger.Log("Create_Directory", dir);
             }
             catch (Exception e)
             {
                 ManagerDialogWindows.Message(e.Message);
                 ManagerLogger.Log("Create_Directory_Failure", $"{e.Message}; Path - {dir}");
             }
         }
     }
 }
Exemplo n.º 10
0
        /// <summary>
        /// The entry point of the program, where the program control starts and ends.
        /// </summary>
        /// <param name="args">The command-line arguments.</param>
        public static async Task Main(string[] args)
        {
            var logger = new ManagerLogger();

            using (var host = PrepareHost(args))
            {
                try
                {
                    await host.RunAsync();
                }
                catch (IOException e)
                {
                    logger.Error(e.Message, e);

                    logger.Info("Stopping main application.");
                    await host.StopAsync(TimeSpan.FromSeconds(5));
                }
                catch (Exception e)
                {
                    logger.Error(e.Message, e);
                }
            }

            logger.Info("Application stopped.");
        }
Exemplo n.º 11
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);
        }
Exemplo n.º 12
0
 public MainForm()
 {
     _managerLogger = new ManagerLogger();
     _managerLogger.NewLogMessageEvent += NewLogMessageEvent;
     _server = new Server(_managerLogger);
     _server.NewPlayerEvent += NewPlayerEvent;
     InitializeComponent();
 }
Exemplo n.º 13
0
 public Form1()
 {
     managerLogger = new ManagerLogger();
     managerLogger.NewLogMessageEvent += NewLogMessageEvent;
     server            = new Server(managerLogger);
     server.NewPlayer += NewPlayerEvent;
     InitializeComponent();
 }
        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);
            }
        }
Exemplo n.º 15
0
 public void Paste()
 {
     if (CopyPath == string.Empty)
     {
         ManagerDialogWindows.ErrorMessage("Buffer is empty");
     }
     else
     {
         if (ContentState == State.Searched || ContentState == State.History)
         {
             MoveOut();
         }
         string newPath = Path.Combine(CurrentDirectory.FullName, Path.GetFileName(CopyPath));
         try
         {
             if (!IsCopy && CurrentDirectory.Root.FullName == Directory.GetDirectoryRoot(CopyPath) &&
                 ((!File.Exists(newPath) && !Directory.Exists(newPath)) ||
                  (File.Exists(CopyPath) && FileReplace(newPath))))
             {
                 Directory.Move(CopyPath, newPath);
             }
             else
             {
                 if (Directory.Exists(CopyPath) &&
                     (!Directory.Exists(newPath) ||
                      ManagerDialogWindows.Confirmation($"Directory called {Path.GetFileName(CopyPath)} already exists here. Do you want to concatanate folders?")))
                 {
                     new DirectoryInfo(CopyPath).CopyTo(CurrentDirectory.FullName);
                 }
                 else if (File.Exists(CopyPath) && (!File.Exists(newPath) || FileReplace(newPath)))
                 {
                     File.Copy(CopyPath, newPath);
                 }
                 if (!IsCopy)
                 {
                     if (Directory.Exists(CopyPath))
                     {
                         Directory.Delete(CopyPath, true);
                     }
                     else
                     {
                         File.Delete(CopyPath);
                     }
                 }
             }
             ManagerLogger.Log(IsCopy ? "Copy" : "Move", $"{CopyPath} -> {Directory.GetParent(newPath)}");
             UpdateContent();
         }
         catch (Exception e)
         {
             ManagerDialogWindows.ErrorMessage(e.Message);
             ManagerLogger.Log(IsCopy ? "Copy_Failure" : "Move_Failure", $"{e.Message}; Path - {CopyPath} -> {newPath}");
         }
         CopyPath = String.Empty;
     }
 }
Exemplo n.º 16
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.");
        }
Exemplo n.º 17
0
 public Server(ManagerLogger managerLogger)
 {
     _managerLogger = managerLogger;
     _gameRooms     = new List <GameRoom>();
     _config        = new NetPeerConfiguration("networkGame")
     {
         Port = 14241
     };
     _config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
     NetServer = new NetServer(_config);
 }
Exemplo n.º 18
0
 public GameRoom(string gameRoomId, Server server, ManagerLogger logger)
 {
     GameRoomId = gameRoomId;
     _server    = server;
     Players    = new List <PlayerAndConnection>();
     Enemies    = new List <Enemy>();
     _cancellationTokenSource = new CancellationTokenSource();
     _task = new Task(Update, _cancellationTokenSource.Token);
     _task.Start();
     _logger       = logger;
     ManagerCamera = new ManagerCamera();
 }
Exemplo n.º 19
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);
     }
 }
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            int seed = Server.random.Next(1000);

            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.Seed);
            outmsg.Write(seed);
            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);

            server.NetServer.FlushSendQueue();
        }
Exemplo n.º 21
0
        public Server(ManagerLogger managerLogger)
        {
            this.managerLogger = managerLogger;
            players            = new List <PlayerAndConnection>();
            abilities          = new List <AbilityOutline>();
            config             = new NetPeerConfiguration("networkGame")
            {
                Port = 14241
            };
            config.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
            NetServer = new NetServer(config);

            random = new Random();
        }
        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);
            }
        }
Exemplo n.º 23
0
 public void History()
 {
     MainMenu.Content = ManagerLogger.History().Inverse();
     if (MainMenu.Content.Count == 0)
     {
         ManagerDialogWindows.ErrorMessage("History is empty");
         UpdateContent();
     }
     else
     {
         ContentState = State.History;
     }
     MainMenu.NullPos();
 }
Exemplo n.º 24
0
        bool FileReplace(string file)
        {
            bool conf = ManagerDialogWindows.Confirmation($"File called {file} already exists. Are you sure, you want delete and replace it?");

            if (conf)
            {
                try { File.Delete(file); }
                catch (Exception e)
                {
                    ManagerDialogWindows.ErrorMessage(e.Message);
                    ManagerLogger.Log("File_Delete_Failure", $"{e.Message}; Path - {file}");
                }
            }
            return(conf);
        }
        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);
        }
        private void SendAbility(Server server, AbilityOutline ability, ManagerLogger managerLogger)
        {
            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.AbilityUpdate);
            outmsg.Write(ability.Username);
            outmsg.Write(ability.ID);
            outmsg.Write(ability.XPosition);
            outmsg.Write(ability.YPosition);
            outmsg.Write(ability.Animation.XRecPos);
            outmsg.Write(ability.Animation.YRecPos);
            outmsg.Write(ability.Animation.Width);
            outmsg.Write(ability.Animation.Height);

            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);
        }
Exemplo n.º 27
0
        public void Run(ManagerLogger managerLogger, Server server, NetIncomingMessage inc,
                        PlayerAndConnection playerAndConnection, List <PlayerAndConnection> players, List <AbilityOutline> abilities)
        {
            var outmsg = server.NetServer.CreateMessage();

            outmsg.Write((byte)PacketType.PlayerPosition);
            outmsg.Write(playerAndConnection.Player.Username);
            outmsg.Write(playerAndConnection.Player.XPosition);
            outmsg.Write(playerAndConnection.Player.YPosition);
            outmsg.Write(playerAndConnection.Player.Animation.XRecPos);
            outmsg.Write(playerAndConnection.Player.Animation.YRecPos);
            outmsg.Write(playerAndConnection.Player.Animation.Height);
            outmsg.Write(playerAndConnection.Player.Animation.Width);
            outmsg.Write(playerAndConnection.Player.Health);
            outmsg.Write(playerAndConnection.Player.IntersectingLava);
            outmsg.Write((byte)playerAndConnection.Player.Type);
            outmsg.Write(playerAndConnection.Player.OrbiterRotation);

            server.NetServer.SendToAll(outmsg, NetDeliveryMethod.ReliableOrdered);
        }
Exemplo n.º 28
0
        public void MoveOut()
        {
            DirectoryInfo prevDir = CurrentDirectory;

            try
            {
                if (ContentState == State.Default)
                {
                    CurrentDirectory = CurrentDirectory.Parent;
                }
                ContentState = State.Default;
                UpdateContent();
                MainMenu.NullPos();
                ManagerLogger.Log("Move_Out", prevDir.FullName);
            }
            catch
            {
                ManagerDialogWindows.ErrorMessage("There is no way out");
                CurrentDirectory = prevDir;
            }
        }
Exemplo n.º 29
0
 public void MoveIn(Menu menu)
 {
     try
     {
         if (menu.GetCurrentElement().ToDirectoryInfo().Exists)
         {
             DirectoryInfo prevDir = CurrentDirectory;
             try
             {
                 CurrentDirectory = menu.GetCurrentElement().ToDirectoryInfo();
                 ContentState     = State.Default;
                 UpdateContent();
                 MainMenu.NullPos();
                 ManagerLogger.Log("Move_In", CurrentDirectory.FullName);
             }
             catch (Exception e)
             {
                 CurrentDirectory = prevDir;
                 throw e;
             }
         }
         else
         {
             if (FileOpeningPriorities().ContainsKey(menu.GetCurrentElement().Extension))
             {
                 System.Diagnostics.Process.Start(FileOpeningPriorities()[menu.GetCurrentElement().Extension], menu.GetCurrentElement().FullName);
             }
             else
             {
                 System.Diagnostics.Process.Start(menu.GetCurrentElement().FullName);
             }
             ManagerLogger.Log("Move_In", menu.GetCurrentElement().FullName);
         }
     }
     catch (Exception e)
     {
         ManagerDialogWindows.ErrorMessage(e.Message);
         ManagerLogger.Log("Move_In_Failure", $"{e.Message}; Path - {MainMenu.GetCurrentElement()}");
     }
 }
Exemplo n.º 30
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);
        }