public static bool Prefix(Wire __instance, ref StatusItem ___WireCircuitStatus, ref StatusItem ___WireMaxWattageStatus) { if (___WireCircuitStatus == null) { ___WireCircuitStatus = new StatusItem("WireCircuitStatus", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID).SetResolveStringCallback(delegate(string str, object data) { Wire wire2 = (Wire)data; int cell2 = Grid.PosToCell(wire2.transform.GetPosition()); CircuitManager circuitManager2 = Game.Instance.circuitManager; ushort circuitID2 = circuitManager2.GetCircuitID(cell2); float wattsUsedByCircuit = circuitManager2.GetWattsUsedByCircuit(circuitID2); GameUtil.WattageFormatterUnit unit2 = wire2.MaxWattageRating.GetFormatterUnit(); float maxWattageAsFloat2 = Wire.GetMaxWattageAsFloat(wire2.MaxWattageRating); float wattsNeededWhenActive2 = circuitManager2.GetWattsNeededWhenActive(circuitID2); string wireLoadColor = GameUtil.GetWireLoadColor(wattsUsedByCircuit, maxWattageAsFloat2, wattsNeededWhenActive2); str = str.Replace("{CurrentLoadAndColor}", (wireLoadColor == Color.white.ToHexString()) ? GameUtil.GetFormattedWattage(wattsUsedByCircuit, unit2) : ("<color=#" + wireLoadColor + ">" + GameUtil.GetFormattedWattage(wattsUsedByCircuit, unit2) + "</color>")); str = str.Replace("{MaxLoad}", GameUtil.GetFormattedWattage(maxWattageAsFloat2, unit2)); str = str.Replace("{WireType}", __instance.GetProperName()); return(str); }); } if (___WireMaxWattageStatus == null) { ___WireMaxWattageStatus = new StatusItem("WireMaxWattageStatus", "BUILDING", string.Empty, StatusItem.IconType.Info, NotificationType.Neutral, false, OverlayModes.None.ID).SetResolveStringCallback(delegate(string str, object data) { Wire wire = (Wire)data; GameUtil.WattageFormatterUnit unit = wire.MaxWattageRating.GetFormatterUnit(); int cell = Grid.PosToCell(wire.transform.GetPosition()); CircuitManager circuitManager = Game.Instance.circuitManager; ushort circuitID = circuitManager.GetCircuitID(cell); float wattsNeededWhenActive = circuitManager.GetWattsNeededWhenActive(circuitID); float maxWattageAsFloat = Wire.GetMaxWattageAsFloat(wire.MaxWattageRating); str = str.Replace("{TotalPotentialLoadAndColor}", (wattsNeededWhenActive > maxWattageAsFloat) ? ("<color=#" + new Color(251f / 255f, 176f / 255f, 59f / 255f).ToHexString() + ">" + GameUtil.GetFormattedWattage(wattsNeededWhenActive, unit) + "</color>") : GameUtil.GetFormattedWattage(wattsNeededWhenActive, unit)); str = str.Replace("{MaxLoad}", GameUtil.GetFormattedWattage(maxWattageAsFloat, unit)); return(str); }); } return(true); }
private void Refresh() { if (!((Object)selectedTarget == (Object)null)) { foreach (KeyValuePair <string, GameObject> overviewLabel in overviewLabels) { overviewLabel.Value.SetActive(false); } foreach (KeyValuePair <string, GameObject> generatorsLabel in generatorsLabels) { generatorsLabel.Value.SetActive(false); } foreach (KeyValuePair <string, GameObject> consumersLabel in consumersLabels) { consumersLabel.Value.SetActive(false); } foreach (KeyValuePair <string, GameObject> batteriesLabel in batteriesLabels) { batteriesLabel.Value.SetActive(false); } CircuitManager circuitManager = Game.Instance.circuitManager; ushort num = ushort.MaxValue; EnergyConsumer component = selectedTarget.GetComponent <EnergyConsumer>(); if ((Object)component != (Object)null) { num = component.CircuitID; } else { Generator component2 = selectedTarget.GetComponent <Generator>(); if ((Object)component2 != (Object)null) { num = component2.CircuitID; } } if (num == 65535) { int cell = Grid.PosToCell(selectedTarget.transform.GetPosition()); num = circuitManager.GetCircuitID(cell); } if (num != 65535) { overviewPanel.SetActive(true); generatorsPanel.SetActive(true); consumersPanel.SetActive(true); batteriesPanel.SetActive(true); float joulesAvailableOnCircuit = circuitManager.GetJoulesAvailableOnCircuit(num); GameObject gameObject = AddOrGetLabel(overviewLabels, overviewPanel, "joulesAvailable"); gameObject.GetComponent <LocText>().text = string.Format(UI.DETAILTABS.ENERGYGENERATOR.AVAILABLE_JOULES, GameUtil.GetFormattedJoules(joulesAvailableOnCircuit, "F1", GameUtil.TimeSlice.None)); gameObject.GetComponent <ToolTip>().toolTip = UI.DETAILTABS.ENERGYGENERATOR.AVAILABLE_JOULES_TOOLTIP; gameObject.SetActive(true); float wattsGeneratedByCircuit = circuitManager.GetWattsGeneratedByCircuit(num); float potentialWattsGeneratedByCircuit = circuitManager.GetPotentialWattsGeneratedByCircuit(num); gameObject = AddOrGetLabel(overviewLabels, overviewPanel, "wattageGenerated"); string text = null; text = ((wattsGeneratedByCircuit != potentialWattsGeneratedByCircuit) ? $"{GameUtil.GetFormattedWattage(wattsGeneratedByCircuit, GameUtil.WattageFormatterUnit.Automatic)} / {GameUtil.GetFormattedWattage(potentialWattsGeneratedByCircuit, GameUtil.WattageFormatterUnit.Automatic)}" : GameUtil.GetFormattedWattage(wattsGeneratedByCircuit, GameUtil.WattageFormatterUnit.Automatic)); gameObject.GetComponent <LocText>().text = string.Format(UI.DETAILTABS.ENERGYGENERATOR.WATTAGE_GENERATED, text); gameObject.GetComponent <ToolTip>().toolTip = UI.DETAILTABS.ENERGYGENERATOR.WATTAGE_GENERATED_TOOLTIP; gameObject.SetActive(true); gameObject = AddOrGetLabel(overviewLabels, overviewPanel, "wattageConsumed"); gameObject.GetComponent <LocText>().text = string.Format(UI.DETAILTABS.ENERGYGENERATOR.WATTAGE_CONSUMED, GameUtil.GetFormattedWattage(circuitManager.GetWattsUsedByCircuit(num), GameUtil.WattageFormatterUnit.Automatic)); gameObject.GetComponent <ToolTip>().toolTip = UI.DETAILTABS.ENERGYGENERATOR.WATTAGE_CONSUMED_TOOLTIP; gameObject.SetActive(true); gameObject = AddOrGetLabel(overviewLabels, overviewPanel, "potentialWattageConsumed"); gameObject.GetComponent <LocText>().text = string.Format(UI.DETAILTABS.ENERGYGENERATOR.POTENTIAL_WATTAGE_CONSUMED, GameUtil.GetFormattedWattage(circuitManager.GetWattsNeededWhenActive(num), GameUtil.WattageFormatterUnit.Automatic)); gameObject.GetComponent <ToolTip>().toolTip = UI.DETAILTABS.ENERGYGENERATOR.POTENTIAL_WATTAGE_CONSUMED_TOOLTIP; gameObject.SetActive(true); gameObject = AddOrGetLabel(overviewLabels, overviewPanel, "maxSafeWattage"); gameObject.GetComponent <LocText>().text = string.Format(UI.DETAILTABS.ENERGYGENERATOR.MAX_SAFE_WATTAGE, GameUtil.GetFormattedWattage(circuitManager.GetMaxSafeWattageForCircuit(num), GameUtil.WattageFormatterUnit.Automatic)); gameObject.GetComponent <ToolTip>().toolTip = UI.DETAILTABS.ENERGYGENERATOR.MAX_SAFE_WATTAGE_TOOLTIP; gameObject.SetActive(true); ReadOnlyCollection <Generator> generatorsOnCircuit = circuitManager.GetGeneratorsOnCircuit(num); ReadOnlyCollection <IEnergyConsumer> consumersOnCircuit = circuitManager.GetConsumersOnCircuit(num); List <Battery> batteriesOnCircuit = circuitManager.GetBatteriesOnCircuit(num); ReadOnlyCollection <Battery> transformersOnCircuit = circuitManager.GetTransformersOnCircuit(num); if (generatorsOnCircuit.Count > 0) { foreach (Generator item in generatorsOnCircuit) { if ((Object)item != (Object)null && (Object)item.GetComponent <Battery>() == (Object)null) { gameObject = AddOrGetLabel(generatorsLabels, generatorsPanel, item.gameObject.GetInstanceID().ToString()); Operational component3 = item.GetComponent <Operational>(); if (component3.IsActive) { gameObject.GetComponent <LocText>().text = $"{item.GetComponent<KSelectable>().entityName}: {GameUtil.GetFormattedWattage(item.WattageRating, GameUtil.WattageFormatterUnit.Automatic)}"; } else { gameObject.GetComponent <LocText>().text = $"{item.GetComponent<KSelectable>().entityName}: {GameUtil.GetFormattedWattage(0f, GameUtil.WattageFormatterUnit.Automatic)} / {GameUtil.GetFormattedWattage(item.WattageRating, GameUtil.WattageFormatterUnit.Automatic)}"; } gameObject.SetActive(true); gameObject.GetComponent <LocText>().fontStyle = (((Object)item.gameObject == (Object)selectedTarget) ? FontStyles.Bold : FontStyles.Normal); } } } else { gameObject = AddOrGetLabel(generatorsLabels, generatorsPanel, "nogenerators"); gameObject.GetComponent <LocText>().text = UI.DETAILTABS.ENERGYGENERATOR.NOGENERATORS; gameObject.SetActive(true); } if (consumersOnCircuit.Count > 0 || transformersOnCircuit.Count > 0) { foreach (IEnergyConsumer item2 in consumersOnCircuit) { AddConsumerInfo(item2, gameObject); } foreach (Battery item3 in transformersOnCircuit) { AddConsumerInfo(item3, gameObject); } } else { gameObject = AddOrGetLabel(consumersLabels, consumersPanel, "noconsumers"); gameObject.GetComponent <LocText>().text = UI.DETAILTABS.ENERGYGENERATOR.NOCONSUMERS; gameObject.SetActive(true); } if (batteriesOnCircuit.Count > 0) { foreach (Battery item4 in batteriesOnCircuit) { if ((Object)item4 != (Object)null) { gameObject = AddOrGetLabel(batteriesLabels, batteriesPanel, item4.gameObject.GetInstanceID().ToString()); gameObject.GetComponent <LocText>().text = string.Format("{0}: {1}", item4.GetComponent <KSelectable>().entityName, GameUtil.GetFormattedJoules(item4.JoulesAvailable, "F1", GameUtil.TimeSlice.None)); gameObject.SetActive(true); gameObject.GetComponent <LocText>().fontStyle = (((Object)item4.gameObject == (Object)selectedTarget) ? FontStyles.Bold : FontStyles.Normal); } } } else { gameObject = AddOrGetLabel(batteriesLabels, batteriesPanel, "nobatteries"); gameObject.GetComponent <LocText>().text = UI.DETAILTABS.ENERGYGENERATOR.NOBATTERIES; gameObject.SetActive(true); } } else { overviewPanel.SetActive(true); generatorsPanel.SetActive(false); consumersPanel.SetActive(false); batteriesPanel.SetActive(false); GameObject gameObject2 = AddOrGetLabel(overviewLabels, overviewPanel, "nocircuit"); gameObject2.GetComponent <LocText>().text = UI.DETAILTABS.ENERGYGENERATOR.DISCONNECTED; gameObject2.SetActive(true); } } }
/// <summary> /// Updates the circuit summary information. /// </summary> /// <param name="manager">The circuit manager to query.</param> /// <param name="circuitID">The circuit to look up.</param> private void RefreshSummary(CircuitManager manager, ushort circuitID) { var text = CACHED_BUILDER; // Available text.Clear().Append(ENERGYGENERATOR.AVAILABLE_JOULES).Replace("{0}", GameUtil. GetFormattedJoules(manager.GetJoulesAvailableOnCircuit(circuitID))); joulesAvailable.text.SetText(text); // Generated float generated = GetWattageGenerated(manager, circuitID, out float potential); text.Clear(); if (Mathf.Approximately(generated, potential)) { FormatStringPatches.GetFormattedWattage(text, generated); } else { FormatStringPatches.GetFormattedWattage(text, generated); text.Append(" / "); FormatStringPatches.GetFormattedWattage(text, potential); } string ratio = text.ToString(); text.Clear().Append(ENERGYGENERATOR.WATTAGE_GENERATED).Replace("{0}", ratio); wattageGenerated.text.SetText(text); // Consumed text.Clear().Append(ENERGYGENERATOR.WATTAGE_CONSUMED).Replace("{0}", GameUtil.GetFormattedWattage(manager.GetWattsUsedByCircuit(circuitID))); wattageConsumed.text.SetText(text); // Max consumed text.Clear().Append(ENERGYGENERATOR.POTENTIAL_WATTAGE_CONSUMED).Replace("{0}", GameUtil.GetFormattedWattage(GetWattsNeededWhenActive(manager, circuitID))); potentialWattageConsumed.text.SetText(text); // Max safe text.Clear().Append(ENERGYGENERATOR.MAX_SAFE_WATTAGE).Replace("{0}", GameUtil.GetFormattedWattage(manager.GetMaxSafeWattageForCircuit(circuitID))); maxSafeWattage.text.SetText(text); }