Exemplo n.º 1
0
        public float PotentialProduction(CompPowerTrader comp)
        {
#if DEBUG
            CompPowerPlant    _plant         = comp as CompPowerPlant;
            CompRefuelable    _refuelable    = _plant?.parent.RefuelableComp();
            CompBreakdownable _breakdownable = _plant?.parent.BreakdownableComp();

            string msg = comp.parent.def.defName;
            msg += $"\n\tpowerplant: {_plant != null}";
            if (_plant != null)
            {
                msg += $"\n\trefuelable: {_refuelable != null}";
                msg += $"\n\tfueled: {_refuelable?.HasFuel}";
                msg += $"\n\tbreakdownable: {_breakdownable != null}";
                msg += $"\n\tbroken: {_breakdownable?.BrokenDown}";
                msg += $"\n\tdesired: {_plant.DesiredOutput()}";
                msg += $"\n\tcurrent: {_plant.PowerOutput}";
            }

            Log.Message(msg);
#endif

            if (!(comp is CompPowerPlant plant))
            {
                return(0);
            }

            CompRefuelable refuelable = plant.parent.RefuelableComp();
            if (refuelable != null && !refuelable.HasFuel)
            {
                return(0);
            }

            CompBreakdownable breakdownable = plant.parent.BreakdownableComp();
            if (breakdownable != null && breakdownable.BrokenDown)
            {
                return(0);
            }

            // TODO: check how this interacts with variable power output buildings, e.g. solar, wind.
            return(Mathf.Max(plant.DesiredOutput(), plant.PowerOutput, 0));
        }
Exemplo n.º 2
0
/*
 *      public override void CompTick()
 *      {
 *          if (GenTicks.TicksGame % GenTicks.TickLongInterval == 0)
 *          {
 *              HistoricalPowerUsage.Add(GenTicks.TicksGame, PowerUsage);
 *              HistoricalUptime.Add(GenTicks.TicksGame, Uptime);
 *              HistoricalUsetime.Add(GenTicks.TicksGame, Usetime);
 *          }
 *      }
 *
 *      public override void CompTickRare()
 *      {
 *          if (GenTicks.TicksGame % GenTicks.TickLongInterval == 0)
 *          {
 *              HistoricalPowerUsage.Add(GenTicks.TicksGame, PowerUsage);
 *              HistoricalUptime.Add(GenTicks.TicksGame, Uptime);
 *              HistoricalUsetime.Add(GenTicks.TicksGame, Usetime);
 *          }
 *      }
 */
        public override void Initialize(CompProperties props)
        {
            CompPowerBattery powerBattery = parent.GetComp <CompPowerBattery>();

            if (powerBattery != null)
            {
                intMaxPowerUsage = Math.Max(Math.Abs(powerBattery.Props.storedEnergyMax), maxPowerUsage);
            }

            CompPowerPlant powerPlant = parent.GetComp <CompPowerPlant>();

            if (powerPlant != null)
            {
                intMaxPowerUsage = Math.Max(Math.Abs(powerPlant.Props.basePowerConsumption), maxPowerUsage);
            }

            CompPowerTrader powerTrader = parent.GetComp <CompPowerTrader>();

            if (powerTrader != null)
            {
                intMaxPowerUsage = Math.Max(Math.Abs(powerTrader.Props.basePowerConsumption), maxPowerUsage);
            }
        }
Exemplo n.º 3
0
 public static float DesiredOutput(this CompPowerPlant plant)
 {
     return((float)_desiredOutputGetter_MI.Invoke(plant, null));
 }