Example #1
0
 public override void GetObjectData(SerializationInfo info, StreamingContext context)
 {
     info.AddValue("NodeType", "Recipe");
     info.AddValue("RecipeName", BaseRecipe.Name);
     base.GetObjectData(info, context);
     info.AddValue("BeaconModules", BeaconModules.ToDictionary(x => x.Module, x => x.Count));
     info.AddValue("SpeedBonus", BeaconModules.OverrideSpeedBonus);
     info.AddValue("ProductivityBonus", BeaconModules.OverrideProductivityBonus);
     info.AddValue("ConsumptionBonus", BeaconModules.OverrideConsumptionBonus);
     if (Assembler != null)
     {
         info.AddValue("Assembler", Assembler.Name);
     }
 }
Example #2
0
        public override double GetEffectiveProductionRate()
        {
            Assembler?assembler = GetEffectiveAssembler();

            if (assembler == null)
            {
                return(0);
            }

            var modules = Modules.For(assembler, BaseRecipe, assembler.ModuleSlots).ToList();

            return(assembler.GetRate(
                       BaseRecipe.Time, BeaconModules.GetSpeedBonus(), modules));
        }
Example #3
0
        internal Dictionary <MachinePermutation, double> GetAssemblers()
        {
            Assembler?assembler = GetEffectiveAssembler();

            var results = new Dictionary <MachinePermutation, double>();

            if (assembler != null)
            {
                var modules  = Modules.For(assembler, BaseRecipe, assembler.ModuleSlots).ToList();
                var required = ActualRate / assembler.GetRate(
                    BaseRecipe.Time, BeaconModules.GetSpeedBonus(), modules);
                results.Add(new MachinePermutation(assembler, modules), required);
            }

            return(results);
        }