Example #1
0
 public void CombatCalcRedirect(Unit origin, Unit affected, _Ability ability)
 {
     if (gameController.GameType == GameType.SERVER || gameController.GameType == GameType.LOCAL)
     {
         combatCalc(origin, affected, ability);
     }
     if (gameController.GameType == GameType.CLIENT)
     {
         gameController.Client.ClientSender.CombatCalc(origin, affected, ability);
     }
 }
Example #2
0
        public bool CombatCalc(int clientId, string packetId, int length, int order, byte[] data)
        {
            if (packetSeries.ContainsKey(packetId) == false)
            {
                newPacketSeries(packetId, length);
            }
            if (isPacketSeriesComplete(packetId, length, order, data) == false)
            {
                return(false);
            }

            byte[][] series = packetSeries[packetId];

            Unit     attacker = (Unit)server.Serializer.Deserialize(series[0]);
            Unit     defender = (Unit)server.Serializer.Deserialize(series[1]);
            _Ability ability  = (_Ability)server.Serializer.Deserialize(series[2]);

            server.Lobbys[server.Clients[clientId].LobbyId].GameController.CombatController.CombatCalcRedirect(attacker, defender, ability);

            return(true);
        }
Example #3
0
        public void CombatCalc(Unit origin, Unit affected, _Ability ability)
        {
            //PineappleLogger.Log(LogType.INFO, $"{type} [{client.Id}] CombatCalc()");

            string id     = GetPacketId(PacketType.CombactCalc);
            int    length = 3;

            using (Packet packet = new Packet((int)PacketType.CombactCalc))
            {
                packet.Write(client.Id);
                packet.Write(id);
                packet.Write(length);
                packet.Write(0);
                packet.Write(serializer.Serialize(origin));

                SendTCPData(packet);
            }
            using (Packet packet = new Packet((int)PacketType.CombactCalc))
            {
                packet.Write(client.Id);
                packet.Write(id);
                packet.Write(length);
                packet.Write(1);
                packet.Write(serializer.Serialize(affected));

                SendTCPData(packet);
            }
            using (Packet packet = new Packet((int)PacketType.CombactCalc))
            {
                packet.Write(client.Id);
                packet.Write(id);
                packet.Write(length);
                packet.Write(2);
                packet.Write(serializer.Serialize(ability));

                SendTCPData(packet);
            }
        }
Example #4
0
        private void combatCalc(Unit origin, Unit affected, _Ability ability)
        {
            affectedUnits = new List <Unit>();

            foreach (var effect in ability.AbilityEffects)
            {
                switch (effect)
                {
                case AbilityEffect.DAMAGE:
                    DamageCalc(origin, affected, ability);
                    break;

                default:
                    throw new NotImplementedException();
                }
            }

            if (gameController.GameType == GameType.SERVER && affectedUnits.Count > 0)
            {
                //TODO send updated units to all clients
                throw new NotImplementedException();
            }
        }
Example #5
0
        private void DamageCalc(Unit origin, Unit affected, _Ability ability)
        {
            affected.AdjustHealth(ability.Damage, true);

            affectedUnits.Add(affected);
        }