public virtual void Update() { if (_connectedRelay == null) { return; } //_energyToConsume = EnergyConsumptionPerSecond * DayNightCycle.main.deltaTime; bool requiresEnergy = GameModeUtils.RequiresPower(); bool hasPowerToConsume = !requiresEnergy || (this.AvailablePower >= EnergyConsumptionPerSecond); if (hasPowerToConsume && _prevPowerState != FCSPowerStates.Powered) { OnPowerResume?.Invoke(); _prevPowerState = FCSPowerStates.Powered; } else if (!hasPowerToConsume && _prevPowerState != FCSPowerStates.Unpowered) { OnPowerOutage?.Invoke(); _prevPowerState = FCSPowerStates.Unpowered; } //if (this.NotAllowToOperate) // return; //if (!hasPowerToConsume) // return; //if (requiresEnergy) // _connectedRelay.ConsumeEnergy(_energyToConsume, out float amountConsumed); }
private void Update() { if (this.NotAllowToOperate) { return; } _energyToConsume = EnergyConsumptionPerSecond * DayNightCycle.main.deltaTime; var batteryChargePull = DayNightCycle.main.deltaTime * chargeSpeed * _powercellData.GetCapacity(); bool requiresEnergy = GameModeUtils.RequiresPower(); bool hasPowerToConsume = !requiresEnergy || (this.AvailablePower >= _energyToConsume); if (hasPowerToConsume && !_prevPowerState) { OnPowerResume?.Invoke(); _prevPowerState = true; } else if (!hasPowerToConsume && _prevPowerState) { OnPowerOutage?.Invoke(); _prevPowerState = false; } if (!hasPowerToConsume) { return; } if (requiresEnergy) { if (_connectedRelay.GetPower() <= _energyToConsume) { _powercellData.RemoveCharge(_energyToConsume); return; } if (!GetHasBreakerTripped()) { _connectedRelay.ConsumeEnergy(_energyToConsume, out float amountConsumed); } if (!_powercellData.IsFull()) { if (_connectedRelay.GetPower() >= batteryChargePull) { _chargeTimer -= Time.deltaTime; if (_chargeTimer < 0) { _connectedRelay.ConsumeEnergy(batteryChargePull, out float amountPConsumed); _powercellData.AddCharge(amountPConsumed); QuickLogger.Debug($"Charging Battery: {amountPConsumed} units", true); _chargeTimer = 5f; } } } //QuickLogger.Debug($"Power Consumed: {amountConsumed}"); _mono.DisplayManager.UpdateVisuals(_powercellData); } }