From 27d340009fae71cca8032562f73e811856d89cbd Mon Sep 17 00:00:00 2001 From: Sense101 <67970865+Sense101@users.noreply.github.com> Date: Mon, 12 Jul 2021 18:48:14 +0100 Subject: [PATCH] fixed the output speed of producers being too fast sometimes --- src/js/game/buildings/constant_producer.js | 2 +- src/js/game/buildings/item_producer.js | 2 +- src/js/game/components/item_producer.js | 7 +++++++ src/js/game/systems/constant_producer.js | 17 +++++++++++++++-- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/js/game/buildings/constant_producer.js b/src/js/game/buildings/constant_producer.js index c1c502d0..4138fa30 100644 --- a/src/js/game/buildings/constant_producer.js +++ b/src/js/game/buildings/constant_producer.js @@ -36,7 +36,7 @@ export class MetaConstantProducerBuilding extends MetaBuilding { slots: [{ pos: new Vector(0, 0), direction: enumDirection.top }], }) ); - entity.addComponent(new ItemProducerComponent({})); + entity.addComponent(new ItemProducerComponent()); entity.addComponent(new ConstantSignalComponent({})); } } diff --git a/src/js/game/buildings/item_producer.js b/src/js/game/buildings/item_producer.js index 1140c8f1..477ed603 100644 --- a/src/js/game/buildings/item_producer.js +++ b/src/js/game/buildings/item_producer.js @@ -39,6 +39,6 @@ export class MetaItemProducerBuilding extends MetaBuilding { ], }) ); - entity.addComponent(new ItemProducerComponent({})); + entity.addComponent(new ItemProducerComponent()); } } diff --git a/src/js/game/components/item_producer.js b/src/js/game/components/item_producer.js index ef3571e2..ced63f47 100644 --- a/src/js/game/components/item_producer.js +++ b/src/js/game/components/item_producer.js @@ -4,4 +4,11 @@ export class ItemProducerComponent extends Component { static getId() { return "ItemProducer"; } + + constructor() { + super(); + + /** @type {number} */ + this.lastOutputTime = 0; + } } diff --git a/src/js/game/systems/constant_producer.js b/src/js/game/systems/constant_producer.js index 5c10b409..25c67646 100644 --- a/src/js/game/systems/constant_producer.js +++ b/src/js/game/systems/constant_producer.js @@ -11,17 +11,30 @@ export class ConstantProducerSystem extends GameSystemWithFilter { /** @param {GameRoot} root */ constructor(root) { super(root, [ConstantSignalComponent, ItemProducerComponent]); + + this.root = root; } update() { for (let i = 0; i < this.allEntities.length; ++i) { const entity = this.allEntities[i]; - const signalComp = entity.components.ConstantSignal; const ejectorComp = entity.components.ItemEjector; + const signalComp = entity.components.ConstantSignal; + if (!ejectorComp) { continue; } - ejectorComp.tryEject(0, signalComp.signal); + + const now = this.root.time.now(); + const secondsPerItem = 1 / (globalConfig.puzzleModeSpeed * globalConfig.beltSpeedItemsPerSecond); + + const producerComp = entity.components.ItemProducer; + + if (now - producerComp.lastOutputTime > secondsPerItem) { + if (ejectorComp.tryEject(0, signalComp.signal)) { + producerComp.lastOutputTime = now; + } + } } }