mirror of
https://github.com/tobspr/shapez.io.git
synced 2026-02-12 10:59:23 +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";
|
import { formatItemsPerSecond } from "../../core/utils";
|
||||||
|
|
||||||
/** @enum {string} */
|
/** @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 {
|
export class MetaSplitterBuilding extends MetaBuilding {
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -21,6 +25,7 @@ export class MetaSplitterBuilding extends MetaBuilding {
|
|||||||
getDimensions(variant) {
|
getDimensions(variant) {
|
||||||
switch (variant) {
|
switch (variant) {
|
||||||
case defaultBuildingVariant:
|
case defaultBuildingVariant:
|
||||||
|
case enumSplitterVariants.swapper:
|
||||||
return new Vector(2, 1);
|
return new Vector(2, 1);
|
||||||
case enumSplitterVariants.compact:
|
case enumSplitterVariants.compact:
|
||||||
case enumSplitterVariants.compactInverse:
|
case enumSplitterVariants.compactInverse:
|
||||||
@ -53,6 +58,7 @@ export class MetaSplitterBuilding extends MetaBuilding {
|
|||||||
defaultBuildingVariant,
|
defaultBuildingVariant,
|
||||||
enumSplitterVariants.compact,
|
enumSplitterVariants.compact,
|
||||||
enumSplitterVariants.compactInverse,
|
enumSplitterVariants.compactInverse,
|
||||||
|
enumSplitterVariants.swapper,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return super.getAvailableVariants(root);
|
return super.getAvailableVariants(root);
|
||||||
@ -110,7 +116,15 @@ export class MetaSplitterBuilding extends MetaBuilding {
|
|||||||
*/
|
*/
|
||||||
updateVariants(entity, rotationVariant, variant) {
|
updateVariants(entity, rotationVariant, variant) {
|
||||||
switch (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([
|
entity.components.ItemAcceptor.setSlots([
|
||||||
{
|
{
|
||||||
pos: new Vector(0, 0),
|
pos: new Vector(0, 0),
|
||||||
|
|||||||
@ -7,6 +7,7 @@ import { gItemRegistry } from "../../core/global_registries";
|
|||||||
/** @enum {string} */
|
/** @enum {string} */
|
||||||
export const enumItemProcessorTypes = {
|
export const enumItemProcessorTypes = {
|
||||||
splitter: "splitter",
|
splitter: "splitter",
|
||||||
|
swapper: "swapper",
|
||||||
cutter: "cutter",
|
cutter: "cutter",
|
||||||
cutterQuad: "cutterQuad",
|
cutterQuad: "cutterQuad",
|
||||||
rotater: "rotater",
|
rotater: "rotater",
|
||||||
|
|||||||
@ -392,6 +392,7 @@ export class HubGoals extends BasicSerializableObject {
|
|||||||
case enumItemProcessorTypes.hub:
|
case enumItemProcessorTypes.hub:
|
||||||
return 1e30;
|
return 1e30;
|
||||||
case enumItemProcessorTypes.splitter:
|
case enumItemProcessorTypes.splitter:
|
||||||
|
case enumItemProcessorTypes.swapper:
|
||||||
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2;
|
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2;
|
||||||
|
|
||||||
case enumItemProcessorTypes.mixer:
|
case enumItemProcessorTypes.mixer:
|
||||||
|
|||||||
@ -121,6 +121,20 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
|
|||||||
break;
|
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
|
// CUTTER
|
||||||
case enumItemProcessorTypes.cutter: {
|
case enumItemProcessorTypes.cutter: {
|
||||||
const inputItem = /** @type {ShapeItem} */ (items[0].item);
|
const inputItem = /** @type {ShapeItem} */ (items[0].item);
|
||||||
|
|||||||
@ -453,6 +453,10 @@ buildings:
|
|||||||
name: Merger (compact)
|
name: Merger (compact)
|
||||||
description: Merges two conveyor belts into one.
|
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:
|
cutter:
|
||||||
default:
|
default:
|
||||||
name: &cutter Cutter
|
name: &cutter Cutter
|
||||||
|
|||||||
@ -455,6 +455,10 @@ buildings:
|
|||||||
name: 合流機 (コンパクト)
|
name: 合流機 (コンパクト)
|
||||||
description: 2本のベルトの内容を1本のベルトに合流します。
|
description: 2本のベルトの内容を1本のベルトに合流します。
|
||||||
|
|
||||||
|
swapper:
|
||||||
|
name: 入換機
|
||||||
|
description: 2本のベルトの内容を入れ換えます。<strong>もしひとつの出力が詰まった場合、すべての出力が停止することに注意してください!</strong>
|
||||||
|
|
||||||
cutter:
|
cutter:
|
||||||
default:
|
default:
|
||||||
name: &cutter 切断機
|
name: &cutter 切断機
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user