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); } }
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)); }
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); }