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);
        }
Exemple #3
0
        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));
        }