示例#1
0
        private void CalculateHitpoints(Ship ship)
        {
            double maxHP = ship.Hitpoints;

            foreach (double amount in ship.Boosts.Where(x => x.Type == BoosterType.HITPOINTS).Select(x => x.Amount))
            {
                maxHP *= amount;
            }

            bool isFullDroneDesign = Drones.GroupBy(x => x.StatsDesignID).Count() == 1;

            if (isFullDroneDesign)
            {
                maxHP *= Math.Max(1, Drones.First().StatsDesignID.FromDroneDesigns().Full.Where(x => x.Type == BoosterType.HITPOINTS).Sum(x => x.Amount));
            }
            else
            {
                maxHP *= Math.Max(1, Drones.Sum(x => x.StatsDesignID.FromDroneDesigns().Single.Where(y => y.Type == BoosterType.HITPOINTS).Sum(y => y.Amount)));
            }

            MaxHitpoints = (int)maxHP;
        }