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"); } }