Beispiel #1
0
        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);
            }
        }