From 21a9027addd4fe35f5f8a1d0b9154b70c5aa0f7a Mon Sep 17 00:00:00 2001 From: isaisstillalive Date: Wed, 8 Jul 2020 09:57:06 +0900 Subject: [PATCH 1/4] Adjust processor output intervals for equality --- src/js/game/systems/item_processor.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index 8713f599..9ed0120e 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -20,10 +20,10 @@ export class ItemProcessorSystem extends GameSystemWithFilter { const ejectorComp = entity.components.ItemEjector; // First of all, process the current recipe - processorComp.secondsUntilEject = Math.max( - 0, - processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds - ); + if (processorComp.secondsUntilEject > 0) { + processorComp.secondsUntilEject = + processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds; + } if (G_IS_DEV && globalConfig.debug.instantProcessors) { processorComp.secondsUntilEject = 0; @@ -31,7 +31,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter { // Check if we have any finished items we can eject if ( - processorComp.secondsUntilEject === 0 && // it was processed in time + processorComp.secondsUntilEject <= 0 && // it was processed in time processorComp.itemsToEject.length > 0 // we have some items left to eject ) { for (let itemIndex = 0; itemIndex < processorComp.itemsToEject.length; ++itemIndex) { @@ -103,7 +103,9 @@ export class ItemProcessorSystem extends GameSystemWithFilter { } const baseSpeed = this.root.hubGoals.getProcessorBaseSpeed(processorComp.type); - processorComp.secondsUntilEject = 1 / baseSpeed; + if (processorComp.secondsUntilEject <= 0) { + processorComp.secondsUntilEject += 1 / baseSpeed; + } /** @type {Array<{item: BaseItem, requiredSlot?: number, preferredSlot?: number}>} */ const outItems = []; From 9d4f5c50fe22d6e18c397a94268d9807a31fd062 Mon Sep 17 00:00:00 2001 From: isaisstillalive Date: Wed, 8 Jul 2020 23:50:27 +0900 Subject: [PATCH 2/4] Carry forward only when processing is continuous --- src/js/game/systems/item_processor.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index 9ed0120e..27877a96 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -20,10 +20,8 @@ export class ItemProcessorSystem extends GameSystemWithFilter { const ejectorComp = entity.components.ItemEjector; // First of all, process the current recipe - if (processorComp.secondsUntilEject > 0) { - processorComp.secondsUntilEject = - processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds; - } + processorComp.secondsUntilEject = + processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds; if (G_IS_DEV && globalConfig.debug.instantProcessors) { processorComp.secondsUntilEject = 0; @@ -82,6 +80,11 @@ export class ItemProcessorSystem extends GameSystemWithFilter { } } } + + // Remove time carryover if processing is not continuous + if (processorComp.secondsUntilEject < 0) { + processorComp.secondsUntilEject = 0; + } } } From 51126c7b19feba3765dbbf3f33ba4554f5730101 Mon Sep 17 00:00:00 2001 From: isaisstillalive Date: Thu, 9 Jul 2020 00:00:43 +0900 Subject: [PATCH 3/4] The condition is omitted because it is always 0 or less --- src/js/game/systems/item_processor.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index 27877a96..be5cc844 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -106,9 +106,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter { } const baseSpeed = this.root.hubGoals.getProcessorBaseSpeed(processorComp.type); - if (processorComp.secondsUntilEject <= 0) { - processorComp.secondsUntilEject += 1 / baseSpeed; - } + processorComp.secondsUntilEject += 1 / baseSpeed; /** @type {Array<{item: BaseItem, requiredSlot?: number, preferredSlot?: number}>} */ const outItems = []; From 8b10c21aa421f634fca8d50ab28ee9fd9158e164 Mon Sep 17 00:00:00 2001 From: isaisstillalive Date: Fri, 10 Jul 2020 11:39:06 +0900 Subject: [PATCH 4/4] Fixed carryover always --- src/js/game/systems/item_processor.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index be5cc844..a1799df2 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -19,11 +19,16 @@ export class ItemProcessorSystem extends GameSystemWithFilter { const processorComp = entity.components.ItemProcessor; const ejectorComp = entity.components.ItemEjector; - // First of all, process the current recipe - processorComp.secondsUntilEject = - processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds; + if (processorComp.secondsUntilEject > 0) { + // First of all, process the current recipe + processorComp.secondsUntilEject = + processorComp.secondsUntilEject - this.root.dynamicTickrate.deltaSeconds; - if (G_IS_DEV && globalConfig.debug.instantProcessors) { + if (G_IS_DEV && globalConfig.debug.instantProcessors) { + processorComp.secondsUntilEject = 0; + } + } else { + // Remove time carryover if processing is not continuous processorComp.secondsUntilEject = 0; } @@ -80,11 +85,6 @@ export class ItemProcessorSystem extends GameSystemWithFilter { } } } - - // Remove time carryover if processing is not continuous - if (processorComp.secondsUntilEject < 0) { - processorComp.secondsUntilEject = 0; - } } }