Exemple #1
0
            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);
            }
Exemple #2
0
            /// <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);
            }
Exemple #3
0
        /// <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);
                }
            }
        }
Exemple #4
0
            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);
            }