From 007aeaafd25d719b5b321db6054d2d731b38f657 Mon Sep 17 00:00:00 2001 From: Frode Austvik Date: Tue, 8 Dec 2020 03:13:38 +0100 Subject: [PATCH] Add a separate field for whether an ejector slot is buffered --- src/js/game/components/item_ejector.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/js/game/components/item_ejector.js b/src/js/game/components/item_ejector.js index b62a44ab..7605fd1a 100644 --- a/src/js/game/components/item_ejector.js +++ b/src/js/game/components/item_ejector.js @@ -12,7 +12,8 @@ import { typeItemSingleton } from "../item_resolver"; * direction: enumDirection, * item: BaseItem, * progress: number?, - * nextItem?: BaseItem, + * buffered: boolean, + * nextItem: BaseItem, * cachedDestSlot?: import("./item_acceptor").ItemAcceptorLocatedSlot, * cachedBeltPath?: BeltPath, * cachedTargetEntity?: Entity @@ -62,7 +63,8 @@ export class ItemEjectorComponent extends Component { direction: slot.direction, item: null, progress: 0, - nextItem: slot.buffered ? null : undefined, + buffered: slot.buffered, + nextItem: null, cachedDestSlot: null, cachedTargetEntity: null, }); @@ -99,7 +101,8 @@ export class ItemEjectorComponent extends Component { */ canEjectOnSlot(slotIndex) { assert(slotIndex >= 0 && slotIndex < this.slots.length, "Invalid ejector slot: " + slotIndex); - return !this.slots[slotIndex].item || this.slots[slotIndex].nextItem === null; + const slot = this.slots[slotIndex]; + return !slot.item || (slot.buffered && !slot.nextItem); } /** @@ -142,11 +145,11 @@ export class ItemEjectorComponent extends Component { takeSlotItem(slotIndex) { const slot = this.slots[slotIndex]; const item = slot.item; - if (slot.nextItem === undefined) { - slot.item = null; - } else { + if (slot.buffered) { slot.item = slot.nextItem; slot.nextItem = null; + } else { + slot.item = null; } slot.progress = 0.0; return item;