From 84417b60a596e85c35ba99ef26a18bb014f52188 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 27 Jun 2020 12:50:35 +0200 Subject: [PATCH] Fix items being stuck on belts --- src/js/game/belt_path.js | 12 +++++++++++- src/js/savegame/schemas/1005.js | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/js/game/belt_path.js b/src/js/game/belt_path.js index c417a23a..ca786a97 100644 --- a/src/js/game/belt_path.js +++ b/src/js/game/belt_path.js @@ -165,7 +165,17 @@ export class BeltPath extends BasicSerializableObject { this.ejectorSlot = this.ejectorComp.slots[0]; for (let i = 0; i < this.entityPath.length; ++i) { - this.entityPath[i].components.ItemEjector.enabled = i === this.entityPath.length - 1; + const ejectorComp = this.entityPath[i].components.ItemEjector; + const isLast = i === this.entityPath.length - 1; + ejectorComp.enabled = isLast; + + // Clear all slots of non-end entities + if (!isLast) { + for (let k = 0; k < ejectorComp.slots.length; ++k) { + ejectorComp.slots[k].item = null; + ejectorComp.slots[k].progress = 0.0; + } + } } } diff --git a/src/js/savegame/schemas/1005.js b/src/js/savegame/schemas/1005.js index f86a280d..0380f8eb 100644 --- a/src/js/savegame/schemas/1005.js +++ b/src/js/savegame/schemas/1005.js @@ -25,5 +25,21 @@ export class SavegameInterface_V1005 extends SavegameInterface_V1004 { // just reset belt paths for now dump.beltPaths = []; + + const entities = dump.entities; + + // clear ejector slots + for (let i = 0; i < entities.length; ++i) { + const entity = entities[i]; + const itemEjector = entity.components.ItemEjector; + if (itemEjector) { + const slots = itemEjector.slots; + for (let k = 0; k < slots.length; ++k) { + const slot = slots[k]; + slot.item = null; + slot.progress = 0; + } + } + } } }