public static bool Prefix(float watts, GameUtil.WattageFormatterUnit unit, ref string __result) { if (unit != GameUtil.WattageFormatterUnit.Automatic) { return(true); } if (watts <= 1e6f) { return(true); } StringKey key; if (watts <= 1e9f) { key = MEGAWATT; watts /= 1e6f; } else if (watts <= 1e12f) { key = GIGAWATT; watts /= 1e9f; } else { key = TERAWATT; watts /= 1e12f; } __result = GameUtil.FloatToString(watts, "###0.##") + Strings.Get(key); return(false); }
/// <summary> /// Applied before GetFormattedWattage runs. /// </summary> internal static bool Prefix(float watts, GameUtil.WattageFormatterUnit unit, bool displayUnits, ref string __result) { var text = CACHED_BUILDER; text.Clear(); GetFormattedWattage(text, watts, unit, displayUnits); __result = text.ToString(); return(false); }
/// <summary> /// Formats the wattage as a string. /// </summary> /// <param name="text">The location where the wattage will be stored.</param> /// <param name="watts">The raw wattage in watts.</param> /// <param name="unit">The unit to use.</param> /// <param name="displayUnits">Whether to display the units.</param> /// <returns>The resulting wattage formatted for display.</returns> internal static void GetFormattedWattage(StringBuilder text, float watts, GameUtil.WattageFormatterUnit unit = GameUtil.WattageFormatterUnit.Automatic, bool displayUnits = true) { string unitStr; var legend = WATT_LEGEND; if (text.AppendIfInfinite(watts)) { // POWER OVERWHELMING text.Append(legend[0]); } else { switch (unit) { case GameUtil.WattageFormatterUnit.Watts: unitStr = legend[0]; break; case GameUtil.WattageFormatterUnit.Kilowatts: watts *= 0.001f; unitStr = legend[1]; break; case GameUtil.WattageFormatterUnit.Automatic: default: if (Mathf.Abs(watts) > 1000.0f) { watts *= 0.001f; unitStr = legend[1]; } else { unitStr = legend[0]; } break; } watts.ToRyuSoftString(text, 2); if (displayUnits) { text.Append(unitStr); } } }
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); }