Beispiel #1
0
        private void PerformBotPerTickManipulation()
        {
            EachActiveBot(bt => {
                var pp                   = (PowerPackEquipmentItem)equipment.GetEquipmentTypeById(bt.Bot.GetPowerPack().EquipmentId);
                SpeedRating sr           = GetSpeedRating(bt.Speed);
                int speedBasedPowerDrain = 1;
                if (sr == SpeedRating.Stopped)
                {
                    speedBasedPowerDrain = 0;
                }
                else
                {
                    speedBasedPowerDrain = pp.GetPowerDrain(sr);
                }
                int drainForSpeed = BdConstants.EnergyDrainBaseValue * speedBasedPowerDrain;
                //bt.PowerRemaining -= 10;  // Hardcoded drain so at least some drain occurs....

                int chargeDifference = pp.ChargePerTurn - bt.ChargeRemaining;
                bt.PowerRemaining   -= chargeDifference;
                bt.PowerRemaining   -= drainForSpeed;
                if (!CheckForDepletedBot(bt))
                {
                    bt.ChargeRemaining = pp.ChargePerTurn;
                }
            });
        }
        internal int GetPowerDrain(SpeedRating speedRating)
        {
            switch (speedRating)
            {
            case SpeedRating.Slow: return(lowSpeedPowerDrain);

            case SpeedRating.Medium: return(medSpeedPowerDrain);

            case SpeedRating.Fast: return(highSpeedPowerDrain);

            default:
                throw new BdBaseException("Speed level not mapped for powerpack");
            }
        }