Reimplement core method for crafting_queue sync

* New method avoids all dataloss and prefectly replicates the queue
* Made proper description in readme
* Added packages to make lerna build happy
* Added reference to main readme
This commit is contained in:
Daniel committed 2021-07-12 22:05:54 +02:00
1 parent 87218e4803
commit a4a667ef06
7 files changed
+91 -43

No files matched your search

@@ -3,33 +3,28 @@ function load_crafting_queue(crafting_queue, player)
local inventory = player.get_main_inventory()
-- Give player some more inventory space to avoid duplicating items
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus + 100
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus + 1000
-- Add items to inventory
for _, item in pairs(crafting_queue.ingredients) do
inventory.insert(item)
end
-- Load crafting queue
for _, queueItem in pairs(crafting_queue) do
for _, queueItem in pairs(crafting_queue.crafting_queue) do
local recipe = game.recipe_prototypes[queueItem.recipe]
game.print("Crafting "..queueItem.recipe)
-- Add items to inventory
for _, item in pairs(recipe.ingredients) do
local count = math.floor(item.amount * queueItem.count / math.max(recipe.main_product.amount, 1))
if count > 0 then
inventory.insert({
name = item.name,
count = count,
})
end
end
-- game.print("Crafting "..queueItem.recipe)
-- Start crafting (consume items)
player.begin_crafting {
count = queueItem.count,
recipe = queueItem.recipe,
silent = true, -- Fail silently if items are missing
-- silent = true, -- Fail silently if items are missing
}
end
-- Remove extra inventory slots
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus - 100
player.character_inventory_slots_bonus = player.character_inventory_slots_bonus - 1000
end
return load_crafting_queue