1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Added Mirrored Stacker

This commit is contained in:
Christopher-Robin 2020-10-06 02:17:19 +11:00
parent 9f53d9543f
commit 0040b2d2a6
6 changed files with 46 additions and 6 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,5 +1,5 @@
$buildings: belt, cutter, miner, mixer, painter, rotater, balancer, stacker, trash, underground_belt, wire, $buildings: belt, cutter, miner, mixer, painter, rotater, balancer, stacker, stacker-mirrored, trash, underground_belt,
constant_signal, logic_gate, lever, filter, wire_tunnel, display, virtual_processor, reader, storage, wire, constant_signal, logic_gate, lever, filter, wire_tunnel, display, virtual_processor, reader, storage,
transistor, analyzer, comparator, item_producer; transistor, analyzer, comparator, item_producer;
@each $building in $buildings { @each $building in $buildings {
@ -9,8 +9,8 @@ $buildings: belt, cutter, miner, mixer, painter, rotater, balancer, stacker, tra
} }
} }
$buildingsAndVariants: belt, balancer, underground_belt, underground_belt-tier2, miner, miner-chainable, $buildingsAndVariants: belt, balancer, underground_belt, underground_belt-tier2, miner, miner-chainable, cutter,
cutter, cutter-quad, rotater, rotater-ccw, stacker, mixer, painter-double, painter-quad, trash, storage, cutter-quad, rotater, rotater-ccw, stacker, stacker-mirrored, mixer, painter-double, painter-quad, trash, storage,
reader, rotater-rotate180, display, constant_signal, wire, wire_tunnel, logic_gate-or, logic_gate-not, reader, rotater-rotate180, display, constant_signal, wire, wire_tunnel, logic_gate-or, logic_gate-not,
logic_gate-xor, analyzer, virtual_processor-rotater, virtual_processor-unstacker, item_producer, logic_gate-xor, analyzer, virtual_processor-rotater, virtual_processor-unstacker, item_producer,
virtual_processor-stacker, virtual_processor-painter, wire-second, painter, painter-mirrored, comparator; virtual_processor-stacker, virtual_processor-painter, wire-second, painter, painter-mirrored, comparator;

View File

@ -5,10 +5,13 @@ import { ItemAcceptorComponent } from "../components/item_acceptor";
import { ItemEjectorComponent } from "../components/item_ejector"; import { ItemEjectorComponent } from "../components/item_ejector";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor"; import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building"; import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
import { enumHubGoalRewards } from "../tutorial_goals"; import { enumHubGoalRewards } from "../tutorial_goals";
/** @enum {string} */
export const enumStackerVariants = { mirrored: "mirrored" };
export class MetaStackerBuilding extends MetaBuilding { export class MetaStackerBuilding extends MetaBuilding {
constructor() { constructor() {
super("stacker"); super("stacker");
@ -32,6 +35,14 @@ export class MetaStackerBuilding extends MetaBuilding {
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
/**
* @param {GameRoot} root
*/
getAvailableVariants(root) {
let variants = [defaultBuildingVariant, enumStackerVariants.mirrored];
return variants;
}
/** /**
* @param {GameRoot} root * @param {GameRoot} root
*/ */
@ -56,6 +67,7 @@ export class MetaStackerBuilding extends MetaBuilding {
slots: [{ pos: new Vector(0, 0), direction: enumDirection.top }], slots: [{ pos: new Vector(0, 0), direction: enumDirection.top }],
}) })
); );
entity.addComponent( entity.addComponent(
new ItemAcceptorComponent({ new ItemAcceptorComponent({
slots: [ slots: [
@ -73,4 +85,27 @@ export class MetaStackerBuilding extends MetaBuilding {
}) })
); );
} }
/**
*
* @param {Entity} entity
* @param {number} rotationVariant
* @param {string} variant
*/
updateVariants(entity, rotationVariant, variant) {
let inv = variant === defaultBuildingVariant ? 0 : 1;
entity.components.ItemAcceptor.setSlots([
{
pos: new Vector(inv, 0),
directions: [enumDirection.bottom],
filter: "shape",
},
{
pos: new Vector(1 - inv, 0),
directions: [enumDirection.bottom],
filter: "shape",
},
]);
entity.components.ItemEjector.setSlots([{ pos: new Vector(inv, 0), direction: enumDirection.top }])
}
} }

View File

@ -18,7 +18,7 @@ import { MetaMixerBuilding } from "./buildings/mixer";
import { enumPainterVariants, MetaPainterBuilding } from "./buildings/painter"; import { enumPainterVariants, MetaPainterBuilding } from "./buildings/painter";
import { MetaReaderBuilding } from "./buildings/reader"; import { MetaReaderBuilding } from "./buildings/reader";
import { enumRotaterVariants, MetaRotaterBuilding } from "./buildings/rotater"; import { enumRotaterVariants, MetaRotaterBuilding } from "./buildings/rotater";
import { MetaStackerBuilding } from "./buildings/stacker"; import { enumStackerVariants, MetaStackerBuilding } from "./buildings/stacker";
import { MetaStorageBuilding } from "./buildings/storage"; import { MetaStorageBuilding } from "./buildings/storage";
import { enumTransistorVariants, MetaTransistorBuilding } from "./buildings/transistor"; import { enumTransistorVariants, MetaTransistorBuilding } from "./buildings/transistor";
import { MetaTrashBuilding } from "./buildings/trash"; import { MetaTrashBuilding } from "./buildings/trash";
@ -87,6 +87,7 @@ export function initMetaBuildingRegistry() {
// Stacker // Stacker
registerBuildingVariant(14, MetaStackerBuilding); registerBuildingVariant(14, MetaStackerBuilding);
registerBuildingVariant(62, MetaStackerBuilding, enumStackerVariants.mirrored);
// Mixer // Mixer
registerBuildingVariant(15, MetaMixerBuilding); registerBuildingVariant(15, MetaMixerBuilding);

View File

@ -565,6 +565,10 @@ buildings:
name: &stacker Stacker name: &stacker Stacker
description: Combines its inputs, on the same layer if possible, otherwise the right input is stacked on top of the left input. description: Combines its inputs, on the same layer if possible, otherwise the right input is stacked on top of the left input.
mirrored:
name: *stacker
description: test
mixer: mixer:
default: default:
name: &mixer Color Mixer name: &mixer Color Mixer