Exemplo n.º 1
0
        /// <summary>
        /// Gets the formatted remaining rocket range.
        /// </summary>
        /// <param name="engine">The rocket's engine.</param>
        /// <param name="fuelMass">The fuel mass remaining.</param>
        /// <param name="oxyMass">The oxidizer mass remaining.</param>
        /// <param name="fuelPerDist">The fuel consumed per tile travelled.</param>
        /// <returns>The range tool tip text. The range title is in CACHED_BUILDER.</returns>
        private static string GetRangeLeft(RocketEngineCluster engine, float fuelMass,
                                           float oxyMass, float fuelPerDist)
        {
            var    text = CACHED_BUILDER;
            string fuelUsage, fuelLeft;
            float  burnable = fuelMass, usage = fuelPerDist * Constants.SECONDS_PER_CYCLE;
            bool   oxidizerNeeded = false;

            if (engine == null)
            {
                // You cheater!
                fuelUsage = "0";
                fuelLeft  = "0";
            }
            else if (engine.TryGetComponent(out HEPFuelTank _))
            {
                fuelUsage = GameUtil.GetFormattedHighEnergyParticles(usage);
                fuelLeft  = GameUtil.GetFormattedHighEnergyParticles(fuelMass);
                // Radbolt engine does not require oxidizer
            }
            else
            {
                fuelUsage      = GameUtil.GetFormattedMass(usage);
                fuelLeft       = GameUtil.GetFormattedMass(fuelMass);
                oxidizerNeeded = engine.requireOxidizer;
                if (oxidizerNeeded)
                {
                    burnable = Mathf.Min(burnable, oxyMass);
                }
            }
            text.Clear().AppendLine(ROCKETS.RANGE.TOOLTIP).Append(Constants.
                                                                  TABBULLETSTRING).AppendLine(ROCKETS.FUEL_PER_HEX.NAME).Replace("{0}",
                                                                                                                                 fuelUsage).Append(Constants.TABBULLETSTRING).Append(ROCKETS.FUEL_REMAINING.
                                                                                                                                                                                     NAME).Append(fuelLeft);
            if (oxidizerNeeded)
            {
                text.AppendLine().Append(Constants.TABBULLETSTRING).Append(ROCKETS.
                                                                           OXIDIZER_REMAINING.NAME);
                FormatStringPatches.GetFormattedMass(text, oxyMass);
            }
            string tooltip = text.ToString();

            text.Clear().Append(ROCKETS.RANGE.NAME);
            float range = (fuelPerDist == 0.0f) ? 0.0f : burnable / fuelPerDist;

            FormatStringPatches.GetFormattedRocketRange(text, range, TimeSlice.None, true);
            return(tooltip);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets the formatted rocket speed.
        /// </summary>
        /// <param name="rocket">The currently selected rocket.</param>
        /// <param name="enginePower">The rocket engine power.</param>
        /// <param name="burden">The total rocket burden.</param>
        /// <returns>The speed tool tip text. The speed title is in CACHED_BUILDER.</returns>
        private static string GetSpeed(CraftModuleInterface rocket, float enginePower,
                                       float burden)
        {
            var clustercraft = rocket.m_clustercraft;
            var text         = CACHED_BUILDER;

            text.Clear().AppendLine(ROCKETS.SPEED.TOOLTIP).Append(Constants.TABBULLETSTRING).
            Append(ROCKETS.POWER_TOTAL.NAME);
            enginePower.ToRyuHardString(text, 0);
            text.AppendLine().Append(Constants.TABBULLETSTRING).Append(ROCKETS.BURDEN_TOTAL.
                                                                       NAME);
            burden.ToRyuHardString(text, 0);
            string tooltip = text.ToString();

            text.Clear().Append(ROCKETS.SPEED.NAME);
            float speed = (clustercraft == null || burden == 0.0f) ? 0.0f : enginePower *
                          clustercraft.AutoPilotMultiplier * clustercraft.PilotSkillMultiplier / burden;

            FormatStringPatches.GetFormattedRocketRange(text, speed, TimeSlice.PerCycle, true);
            return(tooltip);
        }