public bool FillModules(RecipeParameters recipeParams, Recipe recipe, Entity entity, Goods fuel, out ModuleEffects effects, out RecipeParameters.UsedModule used) { effects = new ModuleEffects(); var beaconedModules = 0; var nonBeaconedModules = 0; Item nonBeacon = null; foreach (var module in list) { float multiplier; if (module.inBeacon) { if (beacon != null) { beaconedModules += module.fixedCount; multiplier = beacon.beaconEfficiency * module.fixedCount; } else { multiplier = 0f; } } else { var count = module.fixedCount > 0 ? module.fixedCount : Math.Max(0, entity.moduleSlots - nonBeaconedModules); multiplier = count; nonBeaconedModules += count; if (nonBeacon == null) { nonBeacon = module.module; } } effects.AddModules(module.module.module, multiplier); } used = new RecipeParameters.UsedModule { module = nonBeacon, count = nonBeaconedModules }; if (beaconedModules > 0 && beacon != null) { used.beacon = beacon; used.beaconCount = ((beaconedModules - 1) / beacon.moduleSlots + 1); } return(list.Count > 0); }
public void GetModulesInfo(RecipeParameters recipeParams, Recipe recipe, Entity entity, Goods fuel, ref ModuleEffects effects, ref RecipeParameters.UsedModule used) { ModuleFillerParameters filler = null; if (modules == null || modules.beacon == null) { filler = GetModuleFiller(); } if (modules == null) { filler?.GetModulesInfo(recipeParams, recipe, entity, fuel, ref effects, ref used); } else { modules.GetModulesInfo(recipeParams, recipe, entity, fuel, ref effects, ref used, filler); } }