From 1dab9539bf812f839b2c56076b1291922495dc27 Mon Sep 17 00:00:00 2001 From: dengr1065 Date: Fri, 14 Aug 2020 14:10:57 +0300 Subject: [PATCH] Add storage shape ejector pin (#568) --- src/js/game/buildings/trash.js | 15 +++++++++++++++ src/js/game/systems/storage.js | 3 +++ 2 files changed, 18 insertions(+) diff --git a/src/js/game/buildings/trash.js b/src/js/game/buildings/trash.js index bed195e5..dc0b55d0 100644 --- a/src/js/game/buildings/trash.js +++ b/src/js/game/buildings/trash.js @@ -9,6 +9,7 @@ import { GameRoot } from "../root"; import { StorageComponent } from "../components/storage"; import { T } from "../../translations"; import { formatBigNumber } from "../../core/utils"; +import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins"; /** @enum {string} */ export const enumTrashVariants = { storage: "storage" }; @@ -117,6 +118,9 @@ export class MetaTrashBuilding extends MetaBuilding { if (entity.components.Storage) { entity.removeComponent(StorageComponent); } + if (entity.components.WiredPins) { + entity.removeComponent(WiredPinsComponent); + } entity.components.ItemAcceptor.setSlots([ { @@ -140,6 +144,17 @@ export class MetaTrashBuilding extends MetaBuilding { if (!entity.components.Storage) { entity.addComponent(new StorageComponent({})); } + if (!entity.components.WiredPins) { + entity.addComponent(new WiredPinsComponent({ + slots: [ + { + pos: new Vector(1, 1), + direction: enumDirection.right, + type: enumPinSlotType.logicalEjector + } + ] + })); + } entity.components.Storage.maximumStorage = trashSize; entity.components.ItemAcceptor.setSlots([ diff --git a/src/js/game/systems/storage.js b/src/js/game/systems/storage.js index b6f62d46..4ec2b8fe 100644 --- a/src/js/game/systems/storage.js +++ b/src/js/game/systems/storage.js @@ -17,6 +17,7 @@ export class StorageSystem extends GameSystemWithFilter { for (let i = 0; i < this.allEntities.length; ++i) { const entity = this.allEntities[i]; const storageComp = entity.components.Storage; + const pinsComp = entity.components.WiredPins; // Eject from storage if (storageComp.storedItem && storageComp.storedCount > 0) { @@ -36,6 +37,8 @@ export class StorageSystem extends GameSystemWithFilter { let targetAlpha = storageComp.storedCount > 0 ? 1 : 0; storageComp.overlayOpacity = lerp(storageComp.overlayOpacity, targetAlpha, 0.05); + + pinsComp.slots[0].value = storageComp.storedItem; } }