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

Replace enumItemProcessorTypes with ItemProcessorType

This commit is contained in:
Bjorn Stromberg 2020-08-17 22:06:02 +09:00
parent 1dfb5f7476
commit e236acfd22
15 changed files with 130 additions and 117 deletions

View File

@ -3,7 +3,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations"; import { T } from "../../translations";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building"; import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
@ -39,9 +39,7 @@ export class MetaCutterBuilding extends MetaBuilding {
*/ */
getAdditionalStatistics(root, variant) { getAdditionalStatistics(root, variant) {
const speed = root.hubGoals.getProcessorBaseSpeed( const speed = root.hubGoals.getProcessorBaseSpeed(
variant === enumCutterVariants.quad variant === enumCutterVariants.quad ? "cutterQuad" : "cutter"
? enumItemProcessorTypes.cutterQuad
: enumItemProcessorTypes.cutter
); );
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
@ -71,7 +69,7 @@ export class MetaCutterBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 1, inputsPerCharge: 1,
processorType: enumItemProcessorTypes.cutter, processorType: "cutter",
}) })
); );
entity.addComponent(new ItemEjectorComponent({})); entity.addComponent(new ItemEjectorComponent({}));
@ -101,7 +99,7 @@ export class MetaCutterBuilding extends MetaBuilding {
{ pos: new Vector(0, 0), direction: enumDirection.top }, { pos: new Vector(0, 0), direction: enumDirection.top },
{ pos: new Vector(1, 0), direction: enumDirection.top }, { pos: new Vector(1, 0), direction: enumDirection.top },
]); ]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.cutter; entity.components.ItemProcessor.type = "cutter";
break; break;
} }
case enumCutterVariants.quad: { case enumCutterVariants.quad: {
@ -111,7 +109,7 @@ export class MetaCutterBuilding extends MetaBuilding {
{ pos: new Vector(2, 0), direction: enumDirection.top }, { pos: new Vector(2, 0), direction: enumDirection.top },
{ pos: new Vector(3, 0), direction: enumDirection.top }, { pos: new Vector(3, 0), direction: enumDirection.top },
]); ]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.cutterQuad; entity.components.ItemProcessor.type = "cutterQuad";
break; break;
} }

View File

@ -6,7 +6,7 @@ import { GameRoot } from "../root";
import { LeverComponent } from "../components/lever"; import { LeverComponent } from "../components/lever";
import { ItemAcceptorComponent } from "../components/item_acceptor"; import { ItemAcceptorComponent } from "../components/item_acceptor";
import { ItemEjectorComponent } from "../components/item_ejector"; import { ItemEjectorComponent } from "../components/item_ejector";
import { ItemProcessorComponent, enumItemProcessorTypes } from "../components/item_processor"; import { ItemProcessorComponent } from "../components/item_processor";
export class MetaFilterBuilding extends MetaBuilding { export class MetaFilterBuilding extends MetaBuilding {
constructor() { constructor() {
@ -78,7 +78,7 @@ export class MetaFilterBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
processorType: enumItemProcessorTypes.filter, processorType: "filter",
inputsPerCharge: 1, inputsPerCharge: 1,
}) })
); );

View File

@ -1,7 +1,7 @@
import { enumDirection, Vector } from "../../core/vector"; import { enumDirection, Vector } from "../../core/vector";
import { HubComponent } from "../components/hub"; import { HubComponent } from "../components/hub";
import { ItemAcceptorComponent } from "../components/item_acceptor"; import { ItemAcceptorComponent } from "../components/item_acceptor";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor"; import { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building"; import { MetaBuilding } from "../meta_building";
import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins"; import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins";
@ -45,7 +45,7 @@ export class MetaHubBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 1, inputsPerCharge: 1,
processorType: enumItemProcessorTypes.hub, processorType: "hub",
}) })
); );

View File

@ -3,7 +3,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations"; import { T } from "../../translations";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building"; import { MetaBuilding } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
@ -35,7 +35,7 @@ export class MetaMixerBuilding extends MetaBuilding {
* @returns {Array<[string, string]>} * @returns {Array<[string, string]>}
*/ */
getAdditionalStatistics(root, variant) { getAdditionalStatistics(root, variant) {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.mixer); const speed = root.hubGoals.getProcessorBaseSpeed("mixer");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
@ -47,7 +47,7 @@ export class MetaMixerBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 2, inputsPerCharge: 2,
processorType: enumItemProcessorTypes.mixer, processorType: "mixer",
}) })
); );

View File

@ -3,7 +3,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations"; import { T } from "../../translations";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building"; import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
@ -44,15 +44,15 @@ export class MetaPainterBuilding extends MetaBuilding {
switch (variant) { switch (variant) {
case defaultBuildingVariant: case defaultBuildingVariant:
case enumPainterVariants.mirrored: { case enumPainterVariants.mirrored: {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.painter); const speed = root.hubGoals.getProcessorBaseSpeed("painter");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
case enumPainterVariants.double: { case enumPainterVariants.double: {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.painterDouble); const speed = root.hubGoals.getProcessorBaseSpeed("painterDouble");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed, true)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed, true)]];
} }
case enumPainterVariants.quad: { case enumPainterVariants.quad: {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.painterQuad); const speed = root.hubGoals.getProcessorBaseSpeed("painterQuad");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
} }
@ -84,7 +84,12 @@ export class MetaPainterBuilding extends MetaBuilding {
* @param {Entity} entity * @param {Entity} entity
*/ */
setupEntityComponents(entity) { setupEntityComponents(entity) {
entity.addComponent(new ItemProcessorComponent({})); entity.addComponent(
new ItemProcessorComponent({
inputsPerCharge: 1,
processorType: "splitter",
})
);
entity.addComponent( entity.addComponent(
new ItemEjectorComponent({ new ItemEjectorComponent({
@ -134,7 +139,7 @@ export class MetaPainterBuilding extends MetaBuilding {
}, },
]); ]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.painter; entity.components.ItemProcessor.type = "painter";
entity.components.ItemProcessor.inputsPerCharge = 2; entity.components.ItemProcessor.inputsPerCharge = 2;
entity.components.ItemEjector.setSlots([ entity.components.ItemEjector.setSlots([
{ pos: new Vector(1, 0), direction: enumDirection.right }, { pos: new Vector(1, 0), direction: enumDirection.right },
@ -160,7 +165,7 @@ export class MetaPainterBuilding extends MetaBuilding {
}, },
]); ]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.painterDouble; entity.components.ItemProcessor.type = "painterDouble";
entity.components.ItemProcessor.inputsPerCharge = 3; entity.components.ItemProcessor.inputsPerCharge = 3;
entity.components.ItemEjector.setSlots([ entity.components.ItemEjector.setSlots([
@ -197,7 +202,7 @@ export class MetaPainterBuilding extends MetaBuilding {
}, },
]); ]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.painterQuad; entity.components.ItemProcessor.type = "painterQuad";
entity.components.ItemProcessor.inputsPerCharge = 5; entity.components.ItemProcessor.inputsPerCharge = 5;
entity.components.ItemEjector.setSlots([ entity.components.ItemEjector.setSlots([

View File

@ -3,7 +3,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations"; import { T } from "../../translations";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building"; import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
@ -29,15 +29,15 @@ export class MetaRotaterBuilding extends MetaBuilding {
getAdditionalStatistics(root, variant) { getAdditionalStatistics(root, variant) {
switch (variant) { switch (variant) {
case defaultBuildingVariant: { case defaultBuildingVariant: {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.rotater); const speed = root.hubGoals.getProcessorBaseSpeed("rotater");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
case enumRotaterVariants.ccw: { case enumRotaterVariants.ccw: {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.rotaterCCW); const speed = root.hubGoals.getProcessorBaseSpeed("rotaterCCW");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
case enumRotaterVariants.fl: { case enumRotaterVariants.fl: {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.rotaterFL); const speed = root.hubGoals.getProcessorBaseSpeed("rotaterFL");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
} }
@ -73,7 +73,7 @@ export class MetaRotaterBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 1, inputsPerCharge: 1,
processorType: enumItemProcessorTypes.rotater, processorType: "rotater",
}) })
); );
@ -104,15 +104,15 @@ export class MetaRotaterBuilding extends MetaBuilding {
updateVariants(entity, rotationVariant, variant) { updateVariants(entity, rotationVariant, variant) {
switch (variant) { switch (variant) {
case defaultBuildingVariant: { case defaultBuildingVariant: {
entity.components.ItemProcessor.type = enumItemProcessorTypes.rotater; entity.components.ItemProcessor.type = "rotater";
break; break;
} }
case enumRotaterVariants.ccw: { case enumRotaterVariants.ccw: {
entity.components.ItemProcessor.type = enumItemProcessorTypes.rotaterCCW; entity.components.ItemProcessor.type = "rotaterCCW";
break; break;
} }
case enumRotaterVariants.fl: { case enumRotaterVariants.fl: {
entity.components.ItemProcessor.type = enumItemProcessorTypes.rotaterFL; entity.components.ItemProcessor.type = "rotaterFL";
break; break;
} }
default: default:

View File

@ -1,7 +1,7 @@
import { enumDirection, Vector } from "../../core/vector"; import { enumDirection, Vector } from "../../core/vector";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building"; import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
@ -36,7 +36,7 @@ export class MetaSplitterBuilding extends MetaBuilding {
* @returns {Array<[string, string]>} * @returns {Array<[string, string]>}
*/ */
getAdditionalStatistics(root, variant) { getAdditionalStatistics(root, variant) {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.splitter); const speed = root.hubGoals.getProcessorBaseSpeed("splitter");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
@ -79,7 +79,7 @@ export class MetaSplitterBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 1, inputsPerCharge: 1,
processorType: enumItemProcessorTypes.splitter, processorType: "splitter",
}) })
); );

View File

@ -3,7 +3,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations"; import { T } from "../../translations";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building"; import { MetaBuilding } from "../meta_building";
import { GameRoot } from "../root"; import { GameRoot } from "../root";
@ -28,7 +28,7 @@ export class MetaStackerBuilding extends MetaBuilding {
* @returns {Array<[string, string]>} * @returns {Array<[string, string]>}
*/ */
getAdditionalStatistics(root, variant) { getAdditionalStatistics(root, variant) {
const speed = root.hubGoals.getProcessorBaseSpeed(enumItemProcessorTypes.stacker); const speed = root.hubGoals.getProcessorBaseSpeed("stacker");
return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]]; return [[T.ingame.buildingPlacement.infoTexts.speed, formatItemsPerSecond(speed)]];
} }
@ -47,7 +47,7 @@ export class MetaStackerBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 2, inputsPerCharge: 2,
processorType: enumItemProcessorTypes.stacker, processorType: "stacker",
}) })
); );

View File

@ -3,7 +3,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations"; import { T } from "../../translations";
import { ItemAcceptorComponent } from "../components/item_acceptor"; 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 { ItemProcessorComponent } from "../components/item_processor";
import { StorageComponent } from "../components/storage"; import { StorageComponent } from "../components/storage";
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins"; import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity"; import { Entity } from "../entity";
@ -111,7 +111,7 @@ export class MetaTrashBuilding extends MetaBuilding {
entity.addComponent( entity.addComponent(
new ItemProcessorComponent({ new ItemProcessorComponent({
inputsPerCharge: 1, inputsPerCharge: 1,
processorType: enumItemProcessorTypes.trash, processorType: "trash",
}) })
); );
} }
@ -134,7 +134,7 @@ export class MetaTrashBuilding extends MetaBuilding {
}, },
]); ]);
entity.components.ItemEjector.setSlots([]); entity.components.ItemEjector.setSlots([]);
entity.components.ItemProcessor.type = enumItemProcessorTypes.trash; entity.components.ItemProcessor.type = "trash";
break; break;
} }
case enumTrashVariants.storage: { case enumTrashVariants.storage: {

View File

@ -3,24 +3,24 @@ import { BaseItem } from "../base_item";
import { Component } from "../component"; import { Component } from "../component";
import { typeItemSingleton } from "../item_resolver"; import { typeItemSingleton } from "../item_resolver";
/** @enum {string} */ /** @enum {ItemProcessorType[]} */
export const enumItemProcessorTypes = { export const itemProcessorTypes = [
splitter: "splitter", "splitter",
splitterWires: "splitterWires", "splitterWires",
cutter: "cutter", "cutter",
cutterQuad: "cutterQuad", "cutterQuad",
rotater: "rotater", "rotater",
rotaterCCW: "rotaterCCW", "rotaterCCW",
rotaterFL: "rotaterFL", "rotaterFL",
stacker: "stacker", "stacker",
trash: "trash", "trash",
mixer: "mixer", "mixer",
painter: "painter", "painter",
painterDouble: "painterDouble", "painterDouble",
painterQuad: "painterQuad", "painterQuad",
hub: "hub", "hub",
filter: "filter", "filter",
}; ];
export class ItemProcessorComponent extends Component { export class ItemProcessorComponent extends Component {
static getId() { static getId() {
@ -47,21 +47,14 @@ export class ItemProcessorComponent extends Component {
}; };
} }
duplicateWithoutContents() {
return new ItemProcessorComponent({
processorType: this.type,
inputsPerCharge: this.inputsPerCharge,
});
}
/** /**
* *
* @param {object} param0 * @param {object} param0
* @param {enumItemProcessorTypes=} param0.processorType Which type of processor this is * @param {ItemProcessorType} param0.processorType Which type of processor this is
* @param {number=} param0.inputsPerCharge How many items this machine needs until it can start working * @param {number} param0.inputsPerCharge How many items this machine needs until it can start working
* *
*/ */
constructor({ processorType = enumItemProcessorTypes.splitter, inputsPerCharge = 1 }) { constructor({ processorType, inputsPerCharge }) {
super(); super();
// Which slot to emit next, this is only a preference and if it can't emit // Which slot to emit next, this is only a preference and if it can't emit
@ -95,13 +88,20 @@ export class ItemProcessorComponent extends Component {
this.secondsUntilEject = 0; this.secondsUntilEject = 0;
} }
duplicateWithoutContents() {
return new ItemProcessorComponent({
processorType: this.type,
inputsPerCharge: this.inputsPerCharge,
});
}
/** /**
* Tries to take the item * Tries to take the item
* @param {BaseItem} item * @param {BaseItem} item
* @param {number} sourceSlot * @param {number} sourceSlot
*/ */
tryTakeItem(item, sourceSlot) { tryTakeItem(item, sourceSlot) {
if (this.type === enumItemProcessorTypes.hub || this.type === enumItemProcessorTypes.trash) { if (["hub", "trash"].includes(this.type)) {
// Hub has special logic .. not really nice but efficient. // Hub has special logic .. not really nice but efficient.
this.inputSlots.push({ item, sourceSlot }); this.inputSlots.push({ item, sourceSlot });
return true; return true;

View File

@ -2,7 +2,6 @@ import { globalConfig } from "../core/config";
import { clamp, findNiceIntegerValue, randomChoice, randomInt } from "../core/utils"; import { clamp, findNiceIntegerValue, randomChoice, randomInt } from "../core/utils";
import { BasicSerializableObject, types } from "../savegame/serialization"; import { BasicSerializableObject, types } from "../savegame/serialization";
import { enumColors } from "./colors"; import { enumColors } from "./colors";
import { enumItemProcessorTypes } from "./components/item_processor";
import { GameRoot } from "./root"; import { GameRoot } from "./root";
import { enumSubShape, ShapeDefinition } from "./shape_definition"; import { enumSubShape, ShapeDefinition } from "./shape_definition";
import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals"; import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals";
@ -391,55 +390,52 @@ export class HubGoals extends BasicSerializableObject {
/** /**
* Processor speed * Processor speed
* @param {enumItemProcessorTypes} processorType * @param {ItemProcessorType} itemProcessorType
* @returns {number} items / sec * @returns {number} items / sec
*/ */
getProcessorBaseSpeed(processorType) { getProcessorBaseSpeed(itemProcessorType) {
switch (processorType) { switch (itemProcessorType) {
case enumItemProcessorTypes.splitterWires: case "splitterWires":
return globalConfig.wiresSpeedItemsPerSecond * 2; return globalConfig.wiresSpeedItemsPerSecond * 2;
case "trash":
case enumItemProcessorTypes.trash: case "hub":
case enumItemProcessorTypes.hub:
return 1e30; return 1e30;
case enumItemProcessorTypes.splitter: case "splitter":
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2; return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt * 2;
case enumItemProcessorTypes.filter: case "filter":
return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt; return globalConfig.beltSpeedItemsPerSecond * this.upgradeImprovements.belt;
case "mixer":
case enumItemProcessorTypes.mixer: case "painter":
case enumItemProcessorTypes.painter: case "painterDouble":
case enumItemProcessorTypes.painterDouble: case "painterQuad": {
case enumItemProcessorTypes.painterQuad: {
assert( assert(
globalConfig.buildingSpeeds[processorType], globalConfig.buildingSpeeds.hasOwnProperty(itemProcessorType),
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType "Processor type has no speed set in globalConfig.buildingSpeeds: " + itemProcessorType
); );
return ( return (
globalConfig.beltSpeedItemsPerSecond * globalConfig.beltSpeedItemsPerSecond *
this.upgradeImprovements.painting * this.upgradeImprovements.painting *
globalConfig.buildingSpeeds[processorType] globalConfig.buildingSpeeds[itemProcessorType]
); );
} }
case "cutter":
case enumItemProcessorTypes.cutter: case "cutterQuad":
case enumItemProcessorTypes.cutterQuad: case "rotater":
case enumItemProcessorTypes.rotater: case "rotaterCCW":
case enumItemProcessorTypes.rotaterCCW: case "rotaterFL":
case enumItemProcessorTypes.rotaterFL: case "stacker": {
case enumItemProcessorTypes.stacker: {
assert( assert(
globalConfig.buildingSpeeds[processorType], globalConfig.buildingSpeeds.hasOwnProperty(itemProcessorType),
"Processor type has no speed set in globalConfig.buildingSpeeds: " + processorType "Processor type has no speed set in globalConfig.buildingSpeeds: " + itemProcessorType
); );
return ( return (
globalConfig.beltSpeedItemsPerSecond * globalConfig.beltSpeedItemsPerSecond *
this.upgradeImprovements.processors * this.upgradeImprovements.processors *
globalConfig.buildingSpeeds[processorType] globalConfig.buildingSpeeds[itemProcessorType]
); );
} }
default: default:
assertAlways(false, "invalid processor type: " + processorType); assertAlways(false, "invalid processor type: " + itemProcessorType);
} }
return 1 / globalConfig.beltSpeedItemsPerSecond; return 1 / globalConfig.beltSpeedItemsPerSecond;

View File

@ -7,7 +7,6 @@ import { BaseItem } from "../base_item";
import { ItemEjectorComponent } from "../components/item_ejector"; import { ItemEjectorComponent } from "../components/item_ejector";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter"; import { GameSystemWithFilter } from "../game_system_with_filter";
import { enumItemProcessorTypes } from "../components/item_processor";
import { MapChunkView } from "../map_chunk_view"; import { MapChunkView } from "../map_chunk_view";
const logger = createLogger("systems/ejector"); const logger = createLogger("systems/ejector");
@ -287,7 +286,7 @@ export class ItemEjectorSystem extends GameSystemWithFilter {
if (itemProcessorComp) { if (itemProcessorComp) {
// @todo HACK // @todo HACK
// Check if there are pins, and if so if they are connected // Check if there are pins, and if so if they are connected
if (itemProcessorComp.type === enumItemProcessorTypes.filter) { if (itemProcessorComp.type === "filter") {
const pinsComp = receiver.components.WiredPins; const pinsComp = receiver.components.WiredPins;
if (pinsComp && pinsComp.slots.length === 1) { if (pinsComp && pinsComp.slots.length === 1) {
const network = pinsComp.slots[0].linkedNetwork; const network = pinsComp.slots[0].linkedNetwork;

View File

@ -1,7 +1,7 @@
import { globalConfig } from "../../core/config"; import { globalConfig } from "../../core/config";
import { BaseItem } from "../base_item"; import { BaseItem } from "../base_item";
import { enumColorMixingResults } from "../colors"; import { enumColorMixingResults } from "../colors";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor"; import { ItemProcessorComponent } from "../components/item_processor";
import { Entity } from "../entity"; import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter"; import { GameSystemWithFilter } from "../game_system_with_filter";
import { BOOL_TRUE_SINGLETON } from "../items/boolean_item"; import { BOOL_TRUE_SINGLETON } from "../items/boolean_item";
@ -107,8 +107,8 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
switch (processorComp.type) { switch (processorComp.type) {
// SPLITTER // SPLITTER
case enumItemProcessorTypes.splitterWires: case "splitterWires":
case enumItemProcessorTypes.splitter: { case "splitter": {
trackProduction = false; trackProduction = false;
const availableSlots = entity.components.ItemEjector.slots.length; const availableSlots = entity.components.ItemEjector.slots.length;
@ -123,7 +123,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
// CUTTER // CUTTER
case enumItemProcessorTypes.cutter: { case "cutter": {
const inputItem = /** @type {ShapeItem} */ (items[0].item); const inputItem = /** @type {ShapeItem} */ (items[0].item);
assert(inputItem instanceof ShapeItem, "Input for cut is not a shape"); assert(inputItem instanceof ShapeItem, "Input for cut is not a shape");
const inputDefinition = inputItem.definition; const inputDefinition = inputItem.definition;
@ -144,7 +144,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
// CUTTER (Quad) // CUTTER (Quad)
case enumItemProcessorTypes.cutterQuad: { case "cutterQuad": {
const inputItem = /** @type {ShapeItem} */ (items[0].item); const inputItem = /** @type {ShapeItem} */ (items[0].item);
assert(inputItem instanceof ShapeItem, "Input for cut is not a shape"); assert(inputItem instanceof ShapeItem, "Input for cut is not a shape");
const inputDefinition = inputItem.definition; const inputDefinition = inputItem.definition;
@ -165,7 +165,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
// ROTATER // ROTATER
case enumItemProcessorTypes.rotater: { case "rotater": {
const inputItem = /** @type {ShapeItem} */ (items[0].item); const inputItem = /** @type {ShapeItem} */ (items[0].item);
assert(inputItem instanceof ShapeItem, "Input for rotation is not a shape"); assert(inputItem instanceof ShapeItem, "Input for rotation is not a shape");
const inputDefinition = inputItem.definition; const inputDefinition = inputItem.definition;
@ -178,7 +178,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
// ROTATER (CCW) // ROTATER (CCW)
case enumItemProcessorTypes.rotaterCCW: { case "rotaterCCW": {
const inputItem = /** @type {ShapeItem} */ (items[0].item); const inputItem = /** @type {ShapeItem} */ (items[0].item);
assert(inputItem instanceof ShapeItem, "Input for rotation is not a shape"); assert(inputItem instanceof ShapeItem, "Input for rotation is not a shape");
const inputDefinition = inputItem.definition; const inputDefinition = inputItem.definition;
@ -191,7 +191,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
// ROTATER (FL) // ROTATER (FL)
case enumItemProcessorTypes.rotaterFL: { case "rotaterFL": {
const inputItem = /** @type {ShapeItem} */ (items[0].item); const inputItem = /** @type {ShapeItem} */ (items[0].item);
assert(inputItem instanceof ShapeItem, "Input for rotation is not a shape"); assert(inputItem instanceof ShapeItem, "Input for rotation is not a shape");
const inputDefinition = inputItem.definition; const inputDefinition = inputItem.definition;
@ -205,7 +205,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// STACKER // STACKER
case enumItemProcessorTypes.stacker: { case "stacker": {
const lowerItem = /** @type {ShapeItem} */ (itemsBySlot[0].item); const lowerItem = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const upperItem = /** @type {ShapeItem} */ (itemsBySlot[1].item); const upperItem = /** @type {ShapeItem} */ (itemsBySlot[1].item);
@ -224,14 +224,14 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// TRASH // TRASH
case enumItemProcessorTypes.trash: { case "trash": {
// Well this one is easy .. simply do nothing with the item // Well this one is easy .. simply do nothing with the item
break; break;
} }
// MIXER // MIXER
case enumItemProcessorTypes.mixer: { case "mixer": {
// Find both colors and combine them // Find both colors and combine them
const item1 = /** @type {ColorItem} */ (items[0].item); const item1 = /** @type {ColorItem} */ (items[0].item);
const item2 = /** @type {ColorItem} */ (items[1].item); const item2 = /** @type {ColorItem} */ (items[1].item);
@ -256,7 +256,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// PAINTER // PAINTER
case enumItemProcessorTypes.painter: { case "painter": {
const shapeItem = /** @type {ShapeItem} */ (itemsBySlot[0].item); const shapeItem = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const colorItem = /** @type {ColorItem} */ (itemsBySlot[1].item); const colorItem = /** @type {ColorItem} */ (itemsBySlot[1].item);
@ -274,7 +274,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// PAINTER (DOUBLE) // PAINTER (DOUBLE)
case enumItemProcessorTypes.painterDouble: { case "painterDouble": {
const shapeItem1 = /** @type {ShapeItem} */ (itemsBySlot[0].item); const shapeItem1 = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const shapeItem2 = /** @type {ShapeItem} */ (itemsBySlot[1].item); const shapeItem2 = /** @type {ShapeItem} */ (itemsBySlot[1].item);
const colorItem = /** @type {ColorItem} */ (itemsBySlot[2].item); const colorItem = /** @type {ColorItem} */ (itemsBySlot[2].item);
@ -305,7 +305,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// PAINTER (QUAD) // PAINTER (QUAD)
case enumItemProcessorTypes.painterQuad: { case "painterQuad": {
const shapeItem = /** @type {ShapeItem} */ (itemsBySlot[0].item); const shapeItem = /** @type {ShapeItem} */ (itemsBySlot[0].item);
const colorItem1 = /** @type {ColorItem} */ (itemsBySlot[1].item); const colorItem1 = /** @type {ColorItem} */ (itemsBySlot[1].item);
const colorItem2 = /** @type {ColorItem} */ (itemsBySlot[2].item); const colorItem2 = /** @type {ColorItem} */ (itemsBySlot[2].item);
@ -331,7 +331,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
} }
// FILTER // FILTER
case enumItemProcessorTypes.filter: { case "filter": {
// TODO // TODO
trackProduction = false; trackProduction = false;
@ -364,7 +364,7 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
// HUB // HUB
case enumItemProcessorTypes.hub: { case "hub": {
trackProduction = false; trackProduction = false;
const hubComponent = entity.components.Hub; const hubComponent = entity.components.Hub;

View File

@ -3,7 +3,6 @@ import { GameSystemWithFilter } from "../game_system_with_filter";
import { BaseItem } from "../base_item"; import { BaseItem } from "../base_item";
import { enumPinSlotType } from "../components/wired_pins"; import { enumPinSlotType } from "../components/wired_pins";
import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON, BooleanItem } from "../items/boolean_item"; import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON, BooleanItem } from "../items/boolean_item";
import { enumItemProcessorTypes } from "../components/item_processor";
export class LogicGateSystem extends GameSystemWithFilter { export class LogicGateSystem extends GameSystemWithFilter {
constructor(root) { constructor(root) {

18
src/js/globals.d.ts vendored
View File

@ -193,8 +193,24 @@ declare interface TypedSignal<T extends Array<any>> {
removeAll(); removeAll();
} }
declare type Layer = "regular" | "wires"; declare type ItemProcessorType =
| "splitter"
| "splitterWires"
| "cutter"
| "cutterQuad"
| "rotater"
| "rotaterCCW"
| "rotaterFL"
| "stacker"
| "trash"
| "mixer"
| "painter"
| "painterDouble"
| "painterQuad"
| "hub"
| "filter";
declare type ItemType = "shape" | "color" | "boolean"; declare type ItemType = "shape" | "color" | "boolean";
declare type Layer = "regular" | "wires";
declare module "worker-loader?inline=true&fallback=false!*" { declare module "worker-loader?inline=true&fallback=false!*" {
class WebpackWorker extends Worker { class WebpackWorker extends Worker {