private void DeleteAbility(byte ID, string username)
 {
     for (int i = 0; i < ServerAbilities.Count; i++)
     {
         if (ServerAbilities[i].ID == ID && ServerAbilities[i].Username == username)
         {
             ServerAbilities.RemoveAt(i);
             i--;
         }
     }
 }
        private void ReceiveAbilityUpdate(NetIncomingMessage inc)
        {
            var  name = inc.ReadString();
            byte ID   = inc.ReadByte();

            var oldAbility = ServerAbilities.FirstOrDefault(a => a.ID == ID && a.Username == name);

            if (oldAbility != null)
            {
                oldAbility.Username          = name;
                oldAbility.ID                = ID;
                oldAbility.XPosition         = inc.ReadInt16();
                oldAbility.YPosition         = inc.ReadInt16();
                oldAbility.Animation.XRecPos = inc.ReadInt16();
                oldAbility.Animation.YRecPos = inc.ReadInt16();
                oldAbility.Animation.Width   = inc.ReadInt16();
                oldAbility.Animation.Height  = inc.ReadInt16();
            }
        }
        private void ReceiveAbilityCreate(NetIncomingMessage inc)
        {
            var  name = inc.ReadString();
            byte ID   = inc.ReadByte();

            if (!ServerAbilities.Any(a => a.ID == ID && a.Username == Username))
            {
                var newAbility = new AbilityOutline();
                newAbility.Username  = name;
                newAbility.ID        = ID;
                newAbility.Type      = (AbilityOutline.AbilityType)inc.ReadByte();
                newAbility.XPosition = inc.ReadInt16();
                newAbility.YPosition = inc.ReadInt16();
                newAbility.Direction = inc.ReadDouble();
                newAbility.Damage    = inc.ReadSByte();

                ServerAbilities.Add(newAbility);
            }
        }