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; }
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); }
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)); } }
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); }
internal float CalcGyroWeight(EngineDef engineDef) { // for now only used for engine details text, not for any actual tonnage calculations return((int)(engineDef.Rating / 100)); }
internal void CalcHeatSinks(EngineDef engineDef, out int minHeatSinks, out int maxHeatSinks) { maxHeatSinks = engineDef.Rating / 25; minHeatSinks = Math.Min(maxHeatSinks, 10); }
internal int CalcInstallTechCost(EngineDef engineDef) { return(Mathf.CeilToInt(Control.settings.TechCostPerEngineTon * engineDef.Def.Tonnage)); }