mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Add swapper
This commit is contained in:
parent
969b7a74d4
commit
2ebcebb6cc
@ -11,7 +11,11 @@ import { T } from "../../translations";
|
||||
import { formatItemsPerSecond } from "../../core/utils";
|
||||
|
||||
/** @enum {string} */
|
||||
export const enumSplitterVariants = { compact: "compact", compactInverse: "compact-inverse" };
|
||||
export const enumSplitterVariants = {
|
||||
compact: "compact",
|
||||
compactInverse: "compact-inverse",
|
||||
swapper: "swapper",
|
||||
};
|
||||
|
||||
export class MetaSplitterBuilding extends MetaBuilding {
|
||||
constructor() {
|
||||
@ -21,6 +25,7 @@ export class MetaSplitterBuilding extends MetaBuilding {
|
||||
getDimensions(variant) {
|
||||
switch (variant) {
|
||||
case defaultBuildingVariant:
|
||||
case enumSplitterVariants.swapper:
|
||||
return new Vector(2, 1);
|
||||
case enumSplitterVariants.compact:
|
||||
case enumSplitterVariants.compactInverse:
|
||||
@ -53,6 +58,7 @@ export class MetaSplitterBuilding extends MetaBuilding {
|
||||
defaultBuildingVariant,
|
||||
enumSplitterVariants.compact,
|
||||
enumSplitterVariants.compactInverse,
|
||||
enumSplitterVariants.swapper,
|
||||
];
|
||||
}
|
||||
return super.getAvailableVariants(root);
|
||||
@ -110,7 +116,15 @@ export class MetaSplitterBuilding extends MetaBuilding {
|
||||
*/
|
||||
updateVariants(entity, rotationVariant, variant) {
|
||||
switch (variant) {
|
||||
case defaultBuildingVariant: {
|
||||
case defaultBuildingVariant:
|
||||
case enumSplitterVariants.swapper: {
|
||||
console.log(variant);
|
||||
if (variant === enumSplitterVariants.swapper) {
|
||||
entity.components.ItemProcessor.type = enumItemProcessorTypes.swapper;
|
||||
} else {
|
||||
entity.components.ItemProcessor.type = enumItemProcessorTypes.splitter;
|
||||
}
|
||||
|
||||
entity.components.ItemAcceptor.setSlots([
|
||||
{
|
||||
pos: new Vector(0, 0),
|
||||
|
@ -7,6 +7,7 @@ import { gItemRegistry } from "../../core/global_registries";
|
||||
/** @enum {string} */
|
||||
export const enumItemProcessorTypes = {
|
||||
splitter: "splitter",
|
||||
swapper: "swapper",
|
||||
cutter: "cutter",
|
||||
cutterQuad: "cutterQuad",
|
||||
rotater: "rotater",
|
||||
|
@ -392,6 +392,7 @@ export class HubGoals extends BasicSerializableObject {
|
||||
case enumItemProcessorTypes.hub:
|
||||
return 1e30;
|
||||
case enumItemProcessorTypes.splitter:
|
||||
case enumItemProcessorTypes.swapper:
|
||||
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2;
|
||||
|
||||
case enumItemProcessorTypes.mixer:
|
||||
|
@ -121,6 +121,20 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
|
||||
break;
|
||||
}
|
||||
|
||||
// SWAPPER
|
||||
case enumItemProcessorTypes.swapper: {
|
||||
trackProduction = false;
|
||||
const availableSlots = entity.components.ItemEjector.slots.length;
|
||||
|
||||
for (let i = 0; i < items.length; ++i) {
|
||||
outItems.push({
|
||||
item: items[i].item,
|
||||
requiredSlot: (items[i].sourceSlot + 1) % availableSlots,
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// CUTTER
|
||||
case enumItemProcessorTypes.cutter: {
|
||||
const inputItem = /** @type {ShapeItem} */ (items[0].item);
|
||||
|
@ -453,6 +453,10 @@ buildings:
|
||||
name: Merger (compact)
|
||||
description: Merges two conveyor belts into one.
|
||||
|
||||
swapper:
|
||||
name: Swapper
|
||||
description: Swaps two conveyor belts. <strong>If any output stalls, all outputs will stall!</strong>
|
||||
|
||||
cutter:
|
||||
default:
|
||||
name: &cutter Cutter
|
||||
|
@ -455,6 +455,10 @@ buildings:
|
||||
name: 合流機 (コンパクト)
|
||||
description: 2本のベルトの内容を1本のベルトに合流します。
|
||||
|
||||
swapper:
|
||||
name: 入換機
|
||||
description: 2本のベルトの内容を入れ換えます。<strong>もしひとつの出力が詰まった場合、すべての出力が停止することに注意してください!</strong>
|
||||
|
||||
cutter:
|
||||
default:
|
||||
name: &cutter 切断機
|
||||
|
Loading…
Reference in New Issue
Block a user