Exemple #1
0
        internal EngineRef(MechComponentRef mechComponentRef, EngineDef engineDef)
        {
            this.mechComponentRef = mechComponentRef;
            this.engineDef        = engineDef;

            var text = mechComponentRef.SimGameUID;

            if (string.IsNullOrEmpty(text))
            {
                if (text != null)
                {
                    mechComponentRef.SetSimGameUID(null);
                }
                return;
            }

            var match = Regex.Match(text);

            if (!match.Success)
            {
                return;
            }

            UUID  = string.IsNullOrEmpty(match.Groups[1].Value) ? null : match.Groups[1].Value;
            IsDHS = !string.IsNullOrEmpty(match.Groups[2].Value);
            AdditionalSHSCount = !string.IsNullOrEmpty(match.Groups[3].Value) ? int.Parse(match.Groups[3].Value) : 0;
            AdditionalDHSCount = !string.IsNullOrEmpty(match.Groups[4].Value) ? int.Parse(match.Groups[4].Value) : 0;
        }
Exemple #2
0
        internal void CalcSpeeds(EngineDef engineDef, float tonnage, out float walkSpeed, out float runSpeed, out float TTWalkSpeed)
        {
            TTWalkSpeed = engineDef.Rating / tonnage;
            walkSpeed   = Calc_WalkDistance(TTWalkSpeed);
            runSpeed    = Calc_SprintDistance(TTWalkSpeed);

            //Control.mod.Logger.LogDebug("CalcSpeeds" +
            //                            " rating=" + engineDef.Rating +
            //                            " tonnage=" + tonnage +
            //                            " walkSpeed=" + walkSpeed +
            //                            " runSpeed=" + runSpeed +
            //                            " TTWalkSpeed=" + TTWalkSpeed);
        }
Exemple #3
0
        internal int CalcJumpJetCount(EngineDef engineDef, float tonnage)
        {
            float TTWalkSpeed = engineDef.Rating / tonnage;
            float AllowedJJs  = Math.Min(TTWalkSpeed, Control.settings.const_MaxNumberOfJJ);

            if (Control.settings.JJRoundUp)
            {
                return(Mathf.CeilToInt(AllowedJJs));
            }
            else
            {
                return(Mathf.FloorToInt(AllowedJJs));
            }
        }
Exemple #4
0
        internal bool CalcAvailability(EngineDef engineDef, float tonnage)
        {
            //Control.mod.Logger.LogDebug("CalcAvailability rating=" + engineDef.Rating + " tonnage=" + tonnage);

            float TTWalkDistance = engineDef.Rating / tonnage;

            //Control.mod.Logger.LogDebug("CalcAvailability" +
            //                            " rating=" + engineDef.Rating +
            //                            " tonnage=" + tonnage +
            //                            " TTWalkDistance=" + TTWalkDistance +
            //                            " Min Walk =" + Control.settings.const_MinTTWalk +
            //                            " Max Walk =" + Control.settings.const_MaxTTWalk);

            // check if over max walk distance
            if (TTWalkDistance > Control.settings.const_MaxTTWalk)
            {
                return(false);
            }

            // check if below min walk distance
            if (TTWalkDistance < Control.settings.const_MinTTWalk)
            {
                return(false);
            }

            //check if non integer TT walk values are allowed
            if (Control.settings.AllowNonIntWalkValues == false)
            {
                //if not, check that walk value is an integer
                if ((TTWalkDistance % 1f) != 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Exemple #5
0
 internal float CalcGyroWeight(EngineDef engineDef)
 {
     // for now only used for engine details text, not for any actual tonnage calculations
     return((int)(engineDef.Rating / 100));
 }
Exemple #6
0
 internal void CalcHeatSinks(EngineDef engineDef, out int minHeatSinks, out int maxHeatSinks)
 {
     maxHeatSinks = engineDef.Rating / 25;
     minHeatSinks = Math.Min(maxHeatSinks, 10);
 }
Exemple #7
0
 internal int CalcInstallTechCost(EngineDef engineDef)
 {
     return(Mathf.CeilToInt(Control.settings.TechCostPerEngineTon * engineDef.Def.Tonnage));
 }