예제 #1
0
        private void QueueAssemblyLine(InventoryComponent targetInventory, InventoryComponent actualInventory, IEnumerable <IMyAssembler> assemblers)
        {
            if (assemblers == null || assemblers.Count() == 0)
            {
                return;
            }

            IMyAssembler assembler = FindMasterAssembler(assemblers);

            if (assembler == null)
            {
                assembler = FindRandomAssembler(assemblers);
            }

            IEnumerable <ComponentType> componentTypes = actualInventory.GetKeys();

            foreach (ComponentType componentType in componentTypes)
            {
                var difference = targetInventory.GetValue(componentType) - actualInventory.GetValue(componentType);

                if (difference > 0)
                {
                    assembler.AddQueueItem(MyDefinitionId.Parse("MyObjectBuilder_BlueprintDefinition/" + componentType.ToString()), difference);
                }
            }
        }