From 60a304816b80a2a5b46b4a5ea383cc14c4dff355 Mon Sep 17 00:00:00 2001 From: generalcrazy Date: Wed, 14 Oct 2020 19:30:42 -0400 Subject: [PATCH] Update item_processor.jsFix for delays in processor charge time, pervents processing delays when having more outputted items then ejectors (double painter) and delays in update ticks --- src/js/game/systems/item_processor.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index 9775afde..73bcb8d3 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -76,16 +76,23 @@ export class ItemProcessorSystem extends GameSystemWithFilter { const currentCharge = processorComp.ongoingCharges[0]; - if (currentCharge) { - // Process next charge - if (currentCharge.remainingTime > 0.0) { - currentCharge.remainingTime -= this.root.dynamicTickrate.deltaSeconds; - if (currentCharge.remainingTime < 0.0) { + // Select active charge, prevent process delayd caused when having more outputted items then ejectors (double painter) + for (let j = 0; j < processorComp.ongoingCharges.length; ++j) { + const charge = processorComp.ongoingCharges[j]; + if (charge && charge.remainingTime > 0.0) { + // Remove bonus time from charge + charge.remainingTime -= this.root.dynamicTickrate.deltaSeconds + processorComp.bonusTime; + // Reset bonus time + processorComp.bonusTime = 0; + if (charge.remainingTime < 0.0) { // Add bonus time, this is the time we spent too much - processorComp.bonusTime += -currentCharge.remainingTime; + processorComp.bonusTime += -charge.remainingTime; } + break; } + } + if (currentCharge) { // Check if it finished if (currentCharge.remainingTime <= 0.0) { const itemsToEject = currentCharge.items;