private static float CalculateWeightChanges(MechDef mechDef) { var state = new BaseWeightState(mechDef); if (mechDef?.Inventory == null) { return(0); } var tonnageChanges = mechDef.Inventory .Select(r => r.Def?.GetComponent <Weights>()) .Where(w => w != null) .Sum(weights => CalculateWeightChanges(state, weights)); if (state.Engine != null) { // WORKAROUND // didn't add free heat sink tonnages to the actual cores, since RT doesn't either we fix it here var beforeTonnageChanges = tonnageChanges; tonnageChanges -= state.Engine.HeatSinkExternalFreeTonnage; //Control.mod.Logger.LogDebug($"state.Engine.HeatSinkExternalFreeTonnage={state.Engine.HeatSinkExternalFreeTonnage} tonnageChanges={tonnageChanges} beforeTonnageChanges={beforeTonnageChanges}"); } return(tonnageChanges); }
private static float CalculateWeightChanges(BaseWeightState state, Weights weights) { var tonnageChanges = 0.0f; tonnageChanges += CalculateEngineTonnageChanges(state.Engine, weights); tonnageChanges += CalcChanges(state.Armor, weights.ArmorFactor, ArmorRoundingPrecision); tonnageChanges += CalcChanges(state.Structure, weights.StructureFactor); tonnageChanges += CalcChanges(state.Chassis, weights.ChassisFactor); return(tonnageChanges); }
private static float CalculateWeightChanges(MechDef mechDef) { var state = new BaseWeightState(mechDef); if (mechDef?.Inventory == null) { return(0); } var tonnageChanges = mechDef.Inventory .Select(r => r.Def?.GetComponent <Weights>()) .Where(w => w != null) .Sum(weights => CalculateWeightChanges(state, weights)); if (state.Engine != null) { // WORKAROUND // didn't add free heat sink tonnages to the actual cores, since RT doesn't either we fix it here tonnageChanges -= state.Engine.ExternalHeatSinkFreeTonnage; } return(tonnageChanges); }
private static float CalculateWeightChanges(MechDef mechDef, Weights weights) { var state = new BaseWeightState(mechDef); return(CalculateWeightChanges(state, weights)); }