private void Recharge() { if (DayNightCycle.main == null || _mono.Manager == null || GetPowerSum() >= GetMaxPower()) { return; } if (_mono.GetBaseDrainProtection()) { if (GetBasePower() <= _mono.GetBasePowerProtectionGoal()) { return; } } _passedTime += DayNightCycle.main.deltaTime; if (_powerState != FCSPowerStates.Unpowered && _chargeMode == PowerToggleStates.ChargeMode && _passedTime >= 2f) { float num2 = 0f; _passedTime = num2; float num3 = DayNightCycle.main.deltaTime * LoadData.BatteryConfiguration.ChargeSpeed * LoadData.BatteryConfiguration.Capacity; if (_charge + num3 > LoadData.BatteryConfiguration.Capacity) { num3 = LoadData.BatteryConfiguration.Capacity - _charge; } num2 += num3; float num4 = 0f; if (num2 > 0f && _connectedRelay.GetPower() > num2) { _connectedRelay.ConsumeEnergy(num2, out num4); } if (num4 > 0f) { ChargeBatteries(num4); } } }