internal void FastUpdate(CyclopsHelmHUDManager cyclopsHelmHUD) { if (!powerIconsInitialized) { AddStatusIcons(cyclopsHelmHUD); } else { UpdateStatusIcons(); } PowerRelay powerRelay = Cyclops.powerRelay; switch (settings.EnergyDisplay) { case HelmEnergyDisplay.PowerCellAmount: cyclopsHelmHUD.powerText.text = NumberFormatter.FormatValue(powerRelay.GetPower()); break; case HelmEnergyDisplay.PercentageOverPowerCells: float percentOver = (powerRelay.GetPower() + this.ChargeManager.GetTotalReservePower()) / powerRelay.GetMaxPower(); cyclopsHelmHUD.powerText.text = $"{NumberFormatter.FormatValue(percentOver * 100f)}%"; break; case HelmEnergyDisplay.CombinedAmount: cyclopsHelmHUD.powerText.text = NumberFormatter.FormatValue(powerRelay.GetPower() + this.ChargeManager.GetTotalReservePower()); break; default: // HelmEnergyDisplay.PowerCellPercentage: float percent = powerRelay.GetPower() / powerRelay.GetMaxPower(); cyclopsHelmHUD.powerText.text = $"{NumberFormatter.FormatValue(percent * 100f)}%"; break; } }
public void Toggle() { while (true) { isToggle = !isToggle; if (isToggle) { if (energyMixin != null && energyMixin.charge > 0f || powerRelay != null && powerRelay.GetPower() > 0f || energyInterface != null && energyInterface.TotalCanProvide(out _) > 0f) { ErrorMessage.AddMessage($"BuilderModule Enabled"); Player.main.GetPDA().Close(); uGUI_BuilderMenu.Show(); handleInputFrame = Time.frameCount; return; } else { ErrorMessage.AddMessage($"Insufficient Power"); continue; } } ErrorMessage.AddMessage($"BuilderModule Disabled"); OnDisable(); break; } }
public static void Postfix(PowerRelay __instance, ref float __result) { IPowerInterface powerInterface = __instance.inboundPowerSources.Find((x) => x is BaseInboundRelay || x is OtherConnectionRelay); if (powerInterface != null) { PowerControl powerControl = null; switch (powerInterface) { case BaseInboundRelay baseConnectionRelay: powerControl = baseConnectionRelay.gameObject.GetComponent <PowerControl>(); break; case OtherConnectionRelay otherConnectionRelay: powerControl = otherConnectionRelay.gameObject.GetComponent <PowerControl>(); break; } PowerRelay endRelay = powerControl.powerRelay.GetEndpoint(); float endPower = endRelay.GetPower(); float powerHere = powerInterface.GetPower(); if (endPower > powerHere) { __result += endPower - powerHere; } } }
internal void FastUpdate(CyclopsHelmHUDManager cyclopsHelmHUD, int lastPowerInt) { if (!cyclopsHelmHUD.LOD.IsFull() || Player.main.currentSub != Cyclops) { return; // Same early exit } if (totalPowerInfoIcons > 0) { if (!powerIconsInitialized) { AddPowerIcons(cyclopsHelmHUD); } else { UpdatePowerIcons(); } } if (lastPowerInt < 0f) { return; } PowerRelay powerRelay = Cyclops.powerRelay; switch (lastDisplay = settings.EnergyDisplay) { case HelmEnergyDisplay.PowerCellAmount: cyclopsHelmHUD.powerText.text = NumberFormatter.FormatValue(powerRelay.GetPower()); break; case HelmEnergyDisplay.PercentageOverPowerCells: float percentOver = (powerRelay.GetPower() + this.ChargeManager.GetTotalReservePower()) / powerRelay.GetMaxPower(); cyclopsHelmHUD.powerText.text = $"{NumberFormatter.FormatValue(percentOver * 100f)}%"; break; case HelmEnergyDisplay.CombinedAmount: cyclopsHelmHUD.powerText.text = NumberFormatter.FormatValue(powerRelay.GetPower() + this.ChargeManager.GetTotalReservePower()); break; default: // HelmEnergyDisplay.PowerCellPercentage: float percent = powerRelay.GetPower() / powerRelay.GetMaxPower(); cyclopsHelmHUD.powerText.text = $"{NumberFormatter.FormatValue(percent * 100f)}%"; break; } }
protected override float GetPowerConsumedPerMinute() { PowerRelay relay = filter.gameObject.GetComponentInParent <PowerRelay>(); bool powered = relay.GetPower() >= 0.85f; bool working = filter.timeRemainingWater > 0f || filter.timeRemainingSalt > 0f; float powerPerSecond = DayNightCycle.main.dayNightSpeed * 0.85f; return((working && powered) ? powerPerSecond * 60 : 0); }
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); } } }
static int getMaxAmount(TechInfo techInfo) { int maxAmount = int.MaxValue; if (GameModeUtils.RequiresIngredients()) { foreach (var ing in techInfo.ingredients) { maxAmount = Math.Min(maxAmount, getCountAvailable(ing.techType) / ing.amount); } if (currentPowerRelay?.GetPower() > 5f) { maxAmount = Math.Min(maxAmount, (int)(currentPowerRelay.GetPower() / 5f - 1f)); } } return(maxAmount); }
public static void PostUpdate(uGUI_SeaTruckHUD __instance) { if (__instance == null) { return; } if (!Main.config.bHUDAbsoluteValues) { return; } if (Player.main == null) { return; } if (!Player.main.inSeatruckPilotingChair) { return; } SeaTruckMotor motor = Player.main.GetComponentInParent <SeaTruckMotor>(); if (motor != null) { PowerRelay relay = motor.relay; if (relay != null) { float power = Mathf.Floor(relay.GetPower()); float truckhealth = Mathf.Floor(motor.liveMixin.health); __instance.textHealth.text = truckhealth.ToString(); //__instance.textHealth.fontSize = (truckhealth > 9999 ? 20 : 36); __instance.textPower.text = power.ToString(); __instance.textPower.fontSize = (power > 9999 ? 28 : 36); } } }
public float PowerAvailable() { return(Mathf.RoundToInt(_connectedRelay.GetPower())); }
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); } }
protected override float GetCharge() { return(target.GetPower()); }