Remove enumLayer and enumItemType

pull/573/head
Bjorn Stromberg 4 years ago committed by tobspr
parent 75e729dac2
commit 6a447e3583

@ -1,12 +1,8 @@
import { DrawParameters } from "../core/draw_parameters";
import { BasicSerializableObject } from "../savegame/serialization";
/** @enum {string} */
export const enumItemType = {
shape: "shape",
color: "color",
boolean: "boolean",
};
/** @type {ItemType[]} **/
export const itemTypes = ["shape", "color", "boolean"];
/**
* Class for items on belts etc. Not an entity for performance reasons
@ -25,10 +21,10 @@ export class BaseItem extends BasicSerializableObject {
return {};
}
/** @returns {enumItemType} */
/** @returns {ItemType} **/
getItemType() {
abstract;
return "";
return "shape";
}
/**

@ -8,7 +8,7 @@ import { BasicSerializableObject, types } from "../savegame/serialization";
import { BaseItem } from "./base_item";
import { Entity } from "./entity";
import { typeItemSingleton } from "./item_resolver";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
const logger = createLogger("belt_path");
@ -203,7 +203,7 @@ export class BeltPath extends BasicSerializableObject {
const targetEntity = this.root.map.getLayerContentXY(
ejectSlotTargetWsTile.x,
ejectSlotTargetWsTile.y,
enumLayer.regular
"regular"
);
if (targetEntity) {

@ -3,7 +3,7 @@ import { Loader } from "../core/loader";
import { createLogger } from "../core/logging";
import { Vector } from "../core/vector";
import { Entity } from "./entity";
import { GameRoot, enumLayer } from "./root";
import { GameRoot } from "./root";
import { findNiceIntegerValue } from "../core/utils";
import { blueprintShape } from "./upgrades";
import { globalConfig } from "../core/config";
@ -20,11 +20,11 @@ export class Blueprint {
/**
* Returns the layer of this blueprint
* @returns {enumLayer}
* @returns {Layer}
*/
get layer() {
if (this.entities.length === 0) {
return enumLayer.regular;
return "regular";
}
return this.entities[0].layer;
}

@ -89,7 +89,7 @@ export class MetaBeltBaseBuilding extends MetaBuilding {
* @param {Vector} param0.tile
* @param {number} param0.rotation
* @param {string} param0.variant
* @param {string} param0.layer
* @param {Layer} param0.layer
* @return {{ rotation: number, rotationVariant: number, connectedEntities?: Array<Entity> }}
*/
computeOptimalDirectionAndRotationVariantAtTile({ root, tile, rotation, variant, layer }) {

@ -2,7 +2,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { enumLayer, GameRoot } from "../root";
import { GameRoot } from "../root";
import { ConstantSignalComponent } from "../components/constant_signal";
export class MetaConstantSignalBuilding extends MetaBuilding {
@ -22,8 +22,9 @@ export class MetaConstantSignalBuilding extends MetaBuilding {
return true;
}
/** @returns {"wires"} **/
getLayer() {
return enumLayer.wires;
return "wires";
}
getDimensions() {

@ -8,7 +8,6 @@ import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
import { enumHubGoalRewards } from "../tutorial_goals";
import { enumItemType } from "../base_item";
/** @enum {string} */
export const enumCutterVariants = { quad: "quad" };
@ -82,7 +81,7 @@ export class MetaCutterBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
filter: enumItemType.shape,
filter: "shape",
},
],
})

@ -1,5 +1,4 @@
import { enumDirection, Vector } from "../../core/vector";
import { enumItemType } from "../base_item";
import { HubComponent } from "../components/hub";
import { ItemAcceptorComponent } from "../components/item_acceptor";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
@ -68,72 +67,72 @@ export class MetaHubBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.top, enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(1, 0),
directions: [enumDirection.top],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(2, 0),
directions: [enumDirection.top],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(3, 0),
directions: [enumDirection.top, enumDirection.right],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(0, 3),
directions: [enumDirection.bottom, enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(1, 3),
directions: [enumDirection.bottom],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(2, 3),
directions: [enumDirection.bottom],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(3, 3),
directions: [enumDirection.bottom, enumDirection.right],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(0, 1),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(0, 2),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(0, 3),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(3, 1),
directions: [enumDirection.right],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(3, 2),
directions: [enumDirection.right],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(3, 3),
directions: [enumDirection.right],
filter: enumItemType.shape,
filter: "shape",
},
],
})

@ -2,7 +2,7 @@ import { enumDirection, Vector } from "../../core/vector";
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { enumLayer, GameRoot } from "../root";
import { GameRoot } from "../root";
import { enumLogicGateType, LogicGateComponent } from "../components/logic_gate";
/** @enum {string} */
@ -39,8 +39,9 @@ export class MetaLogicGateBuilding extends MetaBuilding {
return true;
}
/** @returns {"wires"} **/
getLayer() {
return enumLayer.wires;
return "wires";
}
getDimensions() {

@ -1,7 +1,6 @@
import { formatItemsPerSecond } from "../../core/utils";
import { enumDirection, Vector } from "../../core/vector";
import { T } from "../../translations";
import { enumItemType } from "../base_item";
import { ItemAcceptorComponent } from "../components/item_acceptor";
import { ItemEjectorComponent } from "../components/item_ejector";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
@ -63,12 +62,12 @@ export class MetaMixerBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
filter: enumItemType.color,
filter: "color",
},
{
pos: new Vector(1, 0),
directions: [enumDirection.bottom],
filter: enumItemType.color,
filter: "color",
},
],
})

@ -8,7 +8,6 @@ import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
import { enumHubGoalRewards } from "../tutorial_goals";
import { enumItemType } from "../base_item";
/** @enum {string} */
export const enumPainterVariants = { mirrored: "mirrored", double: "double", quad: "quad" };
@ -98,12 +97,12 @@ export class MetaPainterBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(1, 0),
directions: [enumDirection.top],
filter: enumItemType.color,
filter: "color",
},
],
})
@ -124,14 +123,14 @@ export class MetaPainterBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(1, 0),
directions: [
variant === defaultBuildingVariant ? enumDirection.top : enumDirection.bottom,
],
filter: enumItemType.color,
filter: "color",
},
]);
@ -147,17 +146,17 @@ export class MetaPainterBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(0, 1),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(1, 0),
directions: [enumDirection.top],
filter: enumItemType.color,
filter: "color",
},
]);
@ -174,27 +173,27 @@ export class MetaPainterBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.left],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
filter: enumItemType.color,
filter: "color",
},
{
pos: new Vector(1, 0),
directions: [enumDirection.bottom],
filter: enumItemType.color,
filter: "color",
},
{
pos: new Vector(2, 0),
directions: [enumDirection.bottom],
filter: enumItemType.color,
filter: "color",
},
{
pos: new Vector(3, 0),
directions: [enumDirection.bottom],
filter: enumItemType.color,
filter: "color",
},
]);

@ -8,7 +8,6 @@ import { Entity } from "../entity";
import { defaultBuildingVariant, MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
import { enumHubGoalRewards } from "../tutorial_goals";
import { enumItemType } from "../base_item";
/** @enum {string} */
export const enumRotaterVariants = { ccw: "ccw", fl: "fl" };
@ -89,7 +88,7 @@ export class MetaRotaterBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
filter: enumItemType.shape,
filter: "shape",
},
],
})

@ -8,7 +8,6 @@ import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
import { enumHubGoalRewards } from "../tutorial_goals";
import { enumItemType } from "../base_item";
export class MetaStackerBuilding extends MetaBuilding {
constructor() {
@ -63,12 +62,12 @@ export class MetaStackerBuilding extends MetaBuilding {
{
pos: new Vector(0, 0),
directions: [enumDirection.bottom],
filter: enumItemType.shape,
filter: "shape",
},
{
pos: new Vector(1, 0),
directions: [enumDirection.bottom],
filter: enumItemType.shape,
filter: "shape",
},
],
})

@ -5,7 +5,7 @@ import { ItemEjectorComponent } from "../components/item_ejector";
import { enumUndergroundBeltMode, UndergroundBeltComponent } from "../components/underground_belt";
import { Entity } from "../entity";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { GameRoot, enumLayer } from "../root";
import { GameRoot } from "../root";
import { globalConfig } from "../../core/config";
import { enumHubGoalRewards } from "../tutorial_goals";
import { formatItemsPerSecond, generateMatrixRotations } from "../../core/utils";
@ -171,7 +171,7 @@ export class MetaUndergroundBeltBuilding extends MetaBuilding {
* @param {Vector} param0.tile
* @param {number} param0.rotation
* @param {string} param0.variant
* @param {string} param0.layer
* @param {Layer} param0.layer
* @return {{ rotation: number, rotationVariant: number, connectedEntities?: Array<Entity> }}
*/
computeOptimalDirectionAndRotationVariantAtTile({ root, tile, rotation, variant, layer }) {
@ -190,7 +190,7 @@ export class MetaUndergroundBeltBuilding extends MetaBuilding {
tile = tile.addScalars(searchVector.x, searchVector.y);
/* WIRES: FIXME */
const contents = root.map.getTileContent(tile, enumLayer.regular);
const contents = root.map.getTileContent(tile, "regular");
if (contents) {
const undergroundComp = contents.components.UndergroundBelt;
if (undergroundComp && undergroundComp.tier === tier) {

@ -5,7 +5,7 @@ import { SOUNDS } from "../../platform/sound";
import { enumWireType, WireComponent } from "../components/wire";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { enumLayer, GameRoot } from "../root";
import { GameRoot } from "../root";
export const arrayWireRotationVariantToType = [
enumWireType.regular,
@ -50,8 +50,9 @@ export class MetaWireBuilding extends MetaBuilding {
return true;
}
/** @returns {"wires"} **/
getLayer() {
return enumLayer.wires;
return "wires";
}
getSprite() {

@ -1,7 +1,7 @@
import { Vector } from "../../core/vector";
import { Entity } from "../entity";
import { MetaBuilding, defaultBuildingVariant } from "../meta_building";
import { GameRoot, enumLayer } from "../root";
import { GameRoot } from "../root";
import { WireTunnelComponent } from "../components/wire_tunnel";
import { generateMatrixRotations } from "../../core/utils";
@ -55,8 +55,9 @@ export class MetaWireTunnelBuilding extends MetaBuilding {
return [defaultBuildingVariant, enumWireTunnelVariants.coating];
}
/** @returns {"wires"} **/
getLayer() {
return enumLayer.wires;
return "wires";
}
getRotateAutomaticallyWhilePlacing() {

@ -1,12 +1,12 @@
import { enumDirection, enumInvertedDirections, Vector } from "../../core/vector";
import { types } from "../../savegame/serialization";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { Component } from "../component";
/** @typedef {{
* pos: Vector,
* directions: enumDirection[],
* filter?: enumItemType
* filter?: ItemType
* }} ItemAcceptorSlot */
/**
@ -20,7 +20,7 @@ import { Component } from "../component";
/** @typedef {{
* pos: Vector,
* directions: enumDirection[],
* filter?: enumItemType
* filter?: ItemType
* }} ItemAcceptorSlotConfig */
export class ItemAcceptorComponent extends Component {
@ -74,7 +74,7 @@ export class ItemAcceptorComponent extends Component {
pos: slot.pos,
directions: slot.directions,
// Which type of item to accept (shape | color | all) @see enumItemType
// Which type of item to accept (shape | color | all) @see ItemType
filter: slot.filter,
});
}

@ -1,5 +1,5 @@
import { types } from "../../savegame/serialization";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { Component } from "../component";
import { typeItemSingleton } from "../item_resolver";
import { ColorItem } from "../items/color_item";
@ -65,11 +65,11 @@ export class StorageComponent extends Component {
return false;
}
if (itemType === enumItemType.color) {
if (itemType === "color") {
return /** @type {ColorItem} */ (this.storedItem).color === /** @type {ColorItem} */ (item).color;
}
if (itemType === enumItemType.shape) {
if (itemType === "shape") {
return (
/** @type {ShapeItem} */ (this.storedItem).definition.getHash() ===
/** @type {ShapeItem} */ (item).definition.getHash()

@ -26,7 +26,7 @@ import { GameLogic } from "./logic";
import { MapView } from "./map_view";
import { defaultBuildingVariant } from "./meta_building";
import { ProductionAnalytics } from "./production_analytics";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
import { ShapeDefinitionManager } from "./shape_definition_manager";
import { SoundProxy } from "./sound_proxy";
import { GameTime } from "./time/game_time";
@ -411,7 +411,7 @@ export class GameCore {
// Green wires overlay
root.hud.parts.wiresOverlay.draw(params);
if (this.root.currentLayer === enumLayer.wires) {
if (this.root.currentLayer === "wires") {
// Static map entities
root.map.drawWiresForegroundLayer(params);

@ -3,7 +3,7 @@ import { DrawParameters } from "../core/draw_parameters";
import { Component } from "./component";
/* typehints:end */
import { GameRoot, enumLayer } from "./root";
import { GameRoot } from "./root";
import { globalConfig } from "../core/config";
import { enumDirectionToVector, enumDirectionToAngle } from "../core/vector";
import { BasicSerializableObject, types } from "../savegame/serialization";
@ -36,8 +36,9 @@ export class Entity extends BasicSerializableObject {
/**
* On which layer this entity is
* @type {Layer}
*/
this.layer = enumLayer.regular;
this.layer = "regular";
/**
* Internal entity unique id, set by the @see EntityManager

@ -3,7 +3,7 @@ import { clamp, findNiceIntegerValue, randomChoice, randomInt } from "../core/ut
import { BasicSerializableObject, types } from "../savegame/serialization";
import { enumColors } from "./colors";
import { enumItemProcessorTypes } from "./components/item_processor";
import { GameRoot, enumLayer } from "./root";
import { GameRoot } from "./root";
import { enumSubShape, ShapeDefinition } from "./shape_definition";
import { enumHubGoalRewards, tutorialGoals } from "./tutorial_goals";
import { UPGRADES } from "./upgrades";

@ -11,7 +11,6 @@ import { BaseHUDPart } from "../base_hud_part";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { Blueprint } from "../../blueprint";
import { SOUNDS } from "../../../platform/sound";
import { enumLayer } from "../../root";
export class HUDBlueprintPlacer extends BaseHUDPart {
createElements(parent) {
@ -60,7 +59,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
/**
* Called when the layer was changed
* @param {enumLayer} layer
* @param {Layer} layer
*/
onEditModeChanged(layer) {
// Check if the layer of the blueprint differs and thus we have to deselect it

@ -18,7 +18,7 @@ import { THEME } from "../../theme";
import { DynamicDomAttach } from "../dynamic_dom_attach";
import { HUDBuildingPlacerLogic } from "./building_placer_logic";
import { makeOffscreenBuffer } from "../../../core/buffer_utils";
import { enumLayer } from "../../root";
import { layers } from "../../root";
import { getCodeFromBuildingData } from "../../building_codes";
export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
@ -61,9 +61,9 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
this.currentInterpolatedCornerTile = new Vector();
this.lockIndicatorSprites = {};
for (const layerId in enumLayer) {
this.lockIndicatorSprites[layerId] = this.makeLockIndicatorSprite(layerId);
}
layers.forEach(layer => {
this.lockIndicatorSprites[layer] = this.makeLockIndicatorSprite(layer);
});
//
@ -76,7 +76,7 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
/**
* Makes the lock indicator sprite for the given layer
* @param {enumLayer} layer
* @param {Layer} layer
*/
makeLockIndicatorSprite(layer) {
const dims = 48;

@ -12,7 +12,6 @@ import { BaseHUDPart } from "../base_hud_part";
import { SOUNDS } from "../../../platform/sound";
import { MetaMinerBuilding, enumMinerVariants } from "../../buildings/miner";
import { enumHubGoalRewards } from "../../tutorial_goals";
import { enumLayer } from "../../root";
import { getBuildingDataFromCode, getCodeFromBuildingData } from "../../building_codes";
import { MetaHubBuilding } from "../../buildings/hub";
@ -133,12 +132,12 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
/**
* Called when the edit mode got changed
* @param {enumLayer} editMode
* @param {Layer} layer
*/
onEditModeChanged(editMode) {
onEditModeChanged(layer) {
const metaBuilding = this.currentMetaBuilding.get();
if (metaBuilding) {
if (metaBuilding.getLayer() !== editMode) {
if (metaBuilding.getLayer() !== layer) {
// This layer doesn't fit the edit mode anymore
this.currentMetaBuilding.set(null);
}

@ -8,7 +8,6 @@ import { MetaSplitterBuilding } from "../../buildings/splitter";
import { MetaStackerBuilding } from "../../buildings/stacker";
import { MetaTrashBuilding } from "../../buildings/trash";
import { MetaUndergroundBeltBuilding } from "../../buildings/underground_belt";
import { enumLayer } from "../../root";
import { HUDBaseToolbar } from "./base_toolbar";
import { MetaLeverBuilding } from "../../buildings/lever";
import { MetaFilterBuilding } from "../../buildings/filter";
@ -35,7 +34,7 @@ export class HUDBuildingsToolbar extends HUDBaseToolbar {
super(root, {
supportedBuildings,
visibilityCondition: () =>
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === enumLayer.regular,
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === "regular",
htmlElementId: "ingame_HUD_buildings_toolbar",
});
}

@ -7,8 +7,6 @@ import { DrawParameters } from "../../../core/draw_parameters";
import { THEME } from "../../theme";
import { globalConfig } from "../../../core/config";
import { T } from "../../../translations";
import { enumItemType } from "../../base_item";
import { enumLayer } from "../../root";
export class HUDColorBlindHelper extends BaseHUDPart {
createElements(parent) {
@ -41,7 +39,7 @@ export class HUDColorBlindHelper extends BaseHUDPart {
return null;
}
if (this.root.currentLayer !== enumLayer.regular) {
if (this.root.currentLayer !== "regular") {
// Not in regular mode
return null;
}
@ -56,7 +54,7 @@ export class HUDColorBlindHelper extends BaseHUDPart {
// Check if the belt has a color item
if (beltComp) {
const item = beltComp.assignedPath.findItemAtTile(tile);
if (item && item.getItemType() === enumItemType.color) {
if (item && item.getItemType() === "color") {
return /** @type {ColorItem} */ (item).color;
}
}
@ -66,7 +64,7 @@ export class HUDColorBlindHelper extends BaseHUDPart {
if (ejectorComp) {
for (let i = 0; i < ejectorComp.slots.length; ++i) {
const slot = ejectorComp.slots[i];
if (slot.item && slot.item.getItemType() === enumItemType.color) {
if (slot.item && slot.item.getItemType() === "color") {
return /** @type {ColorItem} */ (slot.item).color;
}
}
@ -74,7 +72,7 @@ export class HUDColorBlindHelper extends BaseHUDPart {
} else {
// We hovered a lower layer, show the color there
const lowerLayer = this.root.map.getLowerLayerContentXY(tile.x, tile.y);
if (lowerLayer && lowerLayer.getItemType() === enumItemType.color) {
if (lowerLayer && lowerLayer.getItemType() === "color") {
return /** @type {ColorItem} */ (lowerLayer).color;
}
}

@ -3,7 +3,6 @@ import { globalConfig } from "../../../core/config";
import { Loader } from "../../../core/loader";
import { Vector } from "../../../core/vector";
import { MapChunkView } from "../../map_chunk_view";
import { enumLayer } from "../../root";
import { THEME } from "../../theme";
import { BaseHUDPart } from "../base_hud_part";
@ -76,7 +75,7 @@ export class HUDLayerPreview extends BaseHUDPart {
const tileX = dx + startTileX;
const tileY = dy + startTileY;
const content = this.root.map.getLayerContentXY(tileX, tileY, enumLayer.wires);
const content = this.root.map.getLayerContentXY(tileX, tileY, "wires");
if (content) {
MapChunkView.drawSingleWiresOverviewTile({
context: this.context,
@ -104,7 +103,7 @@ export class HUDLayerPreview extends BaseHUDPart {
* @param {number} scale 1 / zoomLevel
*/
renderPreview(parameters, worldPos, scale) {
if (this.root.currentLayer !== enumLayer.regular) {
if (this.root.currentLayer !== "regular") {
// Only supporting wires right now
return;
}

@ -1,7 +1,6 @@
import { STOP_PROPAGATION } from "../../../core/signal";
import { Vector } from "../../../core/vector";
import { enumMouseButton } from "../../camera";
import { enumLayer } from "../../root";
import { BaseHUDPart } from "../base_hud_part";
export class HUDLeverToggle extends BaseHUDPart {
@ -15,7 +14,7 @@ export class HUDLeverToggle extends BaseHUDPart {
*/
downPreHandler(pos, button) {
const tile = this.root.camera.screenToWorld(pos).toTileSpace();
const contents = this.root.map.getLayerContentXY(tile.x, tile.y, enumLayer.regular);
const contents = this.root.map.getLayerContentXY(tile.x, tile.y, "regular");
if (contents) {
const leverComp = contents.components.Lever;
if (leverComp) {

@ -1,6 +1,5 @@
import { globalConfig } from "../../../core/config";
import { MapChunkView } from "../../map_chunk_view";
import { enumLayer } from "../../root";
import { WireNetwork } from "../../systems/wire";
import { THEME } from "../../theme";
import { BaseHUDPart } from "../base_hud_part";
@ -17,7 +16,7 @@ export class HUDWireInfo extends BaseHUDPart {
* @param {import("../../../core/draw_utils").DrawParameters} parameters
*/
drawOverlays(parameters) {
if (this.root.currentLayer !== enumLayer.wires) {
if (this.root.currentLayer !== "wires") {
// Not in the wires layer
return;
}
@ -30,7 +29,7 @@ export class HUDWireInfo extends BaseHUDPart {
const worldPos = this.root.camera.screenToWorld(mousePos);
const tile = worldPos.toTileSpace();
const entity = this.root.map.getLayerContentXY(tile.x, tile.y, enumLayer.wires);
const entity = this.root.map.getLayerContentXY(tile.x, tile.y, "wires");
if (!entity) {
// No entity

@ -2,7 +2,6 @@ import { makeOffscreenBuffer } from "../../../core/buffer_utils";
import { globalConfig } from "../../../core/config";
import { DrawParameters } from "../../../core/draw_parameters";
import { KEYMAPPINGS } from "../../key_action_mapper";
import { enumLayer } from "../../root";
import { THEME } from "../../theme";
import { BaseHUDPart } from "../base_hud_part";
import { Loader } from "../../../core/loader";
@ -26,10 +25,10 @@ export class HUDWiresOverlay extends BaseHUDPart {
* Switches between layers
*/
switchLayers() {
if (this.root.currentLayer === enumLayer.regular) {
this.root.currentLayer = enumLayer.wires;
if (this.root.currentLayer === "regular") {
this.root.currentLayer = "wires";
} else {
this.root.currentLayer = enumLayer.regular;
this.root.currentLayer = "regular";
}
this.root.signals.editModeChanged.dispatch(this.root.currentLayer);
}
@ -51,7 +50,7 @@ export class HUDWiresOverlay extends BaseHUDPart {
}
update() {
const desiredAlpha = this.root.currentLayer === enumLayer.wires ? 1.0 : 0.0;
const desiredAlpha = this.root.currentLayer === "wires" ? 1.0 : 0.0;
this.currentAlpha = lerp(this.currentAlpha, desiredAlpha, 0.12);
}

@ -1,4 +1,3 @@
import { enumLayer } from "../../root";
import { HUDBaseToolbar } from "./base_toolbar";
import { MetaWireBuilding } from "../../buildings/wire";
import { MetaConstantSignalBuilding } from "../../buildings/constant_signal";
@ -19,7 +18,7 @@ export class HUDWiresToolbar extends HUDBaseToolbar {
super(root, {
supportedBuildings,
visibilityCondition: () =>
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === enumLayer.wires,
!this.root.camera.getIsMapOverlayActive() && this.root.currentLayer === "wires",
htmlElementId: "ingame_HUD_wires_toolbar",
});
}

@ -1,4 +1,4 @@
import { GameRoot, enumLayer } from "../root";
import { GameRoot } from "../root";
import { globalConfig } from "../../core/config";
import { Vector, mixVector } from "../../core/vector";
import { lerp } from "../../core/utils";

@ -1,7 +1,7 @@
import { DrawParameters } from "../../core/draw_parameters";
import { Loader } from "../../core/loader";
import { types } from "../../savegame/serialization";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
export class BooleanItem extends BaseItem {
static getId() {
@ -20,8 +20,9 @@ export class BooleanItem extends BaseItem {
this.value = data;
}
/** @returns {"boolean"} **/
getItemType() {
return enumItemType.boolean;
return "boolean";
}
/**

@ -2,7 +2,7 @@ import { globalConfig } from "../../core/config";
import { smoothenDpi } from "../../core/dpi_manager";
import { DrawParameters } from "../../core/draw_parameters";
import { types } from "../../savegame/serialization";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { enumColors, enumColorsToHexCode } from "../colors";
import { THEME } from "../theme";
@ -23,8 +23,9 @@ export class ColorItem extends BaseItem {
this.color = data;
}
/** @returns {"color"} **/
getItemType() {
return enumItemType.color;
return "color";
}
/**

@ -1,6 +1,6 @@
import { DrawParameters } from "../../core/draw_parameters";
import { types } from "../../savegame/serialization";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { ShapeDefinition } from "../shape_definition";
import { THEME } from "../theme";
@ -21,8 +21,9 @@ export class ShapeItem extends BaseItem {
this.definition = ShapeDefinition.fromShortKey(data);
}
/** @returns {"shape"} **/
getItemType() {
return enumItemType.shape;
return "shape";
}
/**

@ -5,7 +5,7 @@ import { enumDirection, enumDirectionToVector, enumInvertedDirections, Vector }
import { getBuildingDataFromCode } from "./building_codes";
import { Entity } from "./entity";
import { MetaBuilding } from "./meta_building";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
import { WireNetwork } from "./systems/wire";
import { globalConfig } from "../core/config";
import { CHUNK_OVERLAY_RES } from "./map_chunk_view";
@ -347,7 +347,7 @@ export class GameLogic {
}
// Now check if there's a connectable wire
const targetEntity = this.root.map.getTileContent(tile, enumLayer.wires);
const targetEntity = this.root.map.getTileContent(tile, "wires");
if (!targetEntity) {
return enumWireEdgeFlag.empty;
}
@ -401,7 +401,7 @@ export class GameLogic {
continue;
}
const entity = this.root.map.getLayerContentXY(tile.x + dx, tile.y + dy, enumLayer.regular);
const entity = this.root.map.getLayerContentXY(tile.x + dx, tile.y + dy, "regular");
if (entity) {
let ejectorSlots = [];
let acceptorSlots = [];

@ -4,7 +4,7 @@ import { BasicSerializableObject, types } from "../savegame/serialization";
import { BaseItem } from "./base_item";
import { Entity } from "./entity";
import { MapChunkView } from "./map_chunk_view";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
export class BaseMap extends BasicSerializableObject {
static getId() {
@ -94,7 +94,7 @@ export class BaseMap extends BasicSerializableObject {
/**
* Returns the tile content of a given tile
* @param {Vector} tile
* @param {enumLayer} layer
* @param {Layer} layer
* @returns {Entity} Entity or null
*/
getTileContent(tile, layer) {
@ -119,7 +119,7 @@ export class BaseMap extends BasicSerializableObject {
* Returns the tile content of a given tile
* @param {number} x
* @param {number} y
* @param {enumLayer} layer
* @param {Layer} layer
* @returns {Entity} Entity or null
*/
getLayerContentXY(x, y, layer) {
@ -144,7 +144,7 @@ export class BaseMap extends BasicSerializableObject {
/**
* Checks if the tile is used
* @param {Vector} tile
* @param {enumLayer} layer
* @param {Layer} layer
* @returns {boolean}
*/
isTileUsed(tile, layer) {
@ -159,7 +159,7 @@ export class BaseMap extends BasicSerializableObject {
* Checks if the tile is used
* @param {number} x
* @param {number} y
* @param {enumLayer} layer
* @param {Layer} layer
* @returns {boolean}
*/
isTileUsedXY(x, y, layer) {

@ -7,7 +7,7 @@ import { BaseItem } from "./base_item";
import { enumColors } from "./colors";
import { Entity } from "./entity";
import { COLOR_ITEM_SINGLETONS } from "./items/color_item";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
import { enumSubShape } from "./shape_definition";
import { Rectangle } from "../core/rectangle";
@ -70,11 +70,11 @@ export class MapChunk {
/**
* Which entities this chunk contains, sorted by layer
* @type {Object<string, Array<Entity>>}
* @type {Record<Layer, Array<Entity>>}
*/
this.containedEntitiesByLayer = {
[enumLayer.regular]: [],
[enumLayer.wires]: [],
regular: [],
wires: [],
};
/**
@ -362,7 +362,7 @@ export class MapChunk {
* Returns the contents of this chunk from the given world space coordinates
* @param {number} worldX
* @param {number} worldY
* @param {enumLayer} layer
* @param {Layer} layer
* @returns {Entity=}
*/
getLayerContentFromWorldCoords(worldX, worldY, layer) {
@ -372,7 +372,7 @@ export class MapChunk {
assert(localY >= 0, "Local Y is < 0");
assert(localX < globalConfig.mapChunkSize, "Local X is >= chunk size");
assert(localY < globalConfig.mapChunkSize, "Local Y is >= chunk size");
if (layer === enumLayer.regular) {
if (layer === "regular") {
return this.contents[localX][localY] || null;
} else {
return this.wireContents[localX][localY] || null;
@ -425,7 +425,7 @@ export class MapChunk {
* @param {number} tileX
* @param {number} tileY
* @param {Entity=} contents
* @param {enumLayer} layer
* @param {Layer} layer
*/
setLayerContentFromWorldCords(tileX, tileY, contents, layer) {
const localX = tileX - this.tileX;
@ -436,7 +436,7 @@ export class MapChunk {
assert(localY < globalConfig.mapChunkSize, "Local Y is >= chunk size");
let oldContents;
if (layer === enumLayer.regular) {
if (layer === "regular") {
oldContents = this.contents[localX][localY];
} else {
oldContents = this.wireContents[localX][localY];
@ -450,7 +450,7 @@ export class MapChunk {
fastArrayDeleteValueIfContained(this.containedEntitiesByLayer[layer], oldContents);
}
if (layer === enumLayer.regular) {
if (layer === "regular") {
this.contents[localX][localY] = contents;
} else {
this.wireContents[localX][localY] = contents;

@ -3,7 +3,7 @@ import { DrawParameters } from "../core/draw_parameters";
import { getBuildingDataFromCode } from "./building_codes";
import { Entity } from "./entity";
import { MapChunk } from "./map_chunk";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
import { THEME } from "./theme";
import { drawSpriteClipped } from "../core/draw_utils";
@ -91,7 +91,7 @@ export class MapChunkView extends MapChunk {
parameters.context.imageSmoothingEnabled = true;
// Draw patch items
if (this.root.currentLayer === enumLayer.regular) {
if (this.root.currentLayer === "regular") {
for (let i = 0; i < this.patches.length; ++i) {
const patch = this.patches[i];
@ -193,7 +193,7 @@ export class MapChunkView extends MapChunk {
}
}
if (this.root.currentLayer === enumLayer.wires) {
if (this.root.currentLayer === "wires") {
// Draw wires overlay
context.fillStyle = THEME.map.wires.overlayColor;

@ -4,7 +4,7 @@ import { Vector } from "../core/vector";
import { SOUNDS } from "../platform/sound";
import { StaticMapEntityComponent } from "./components/static_map_entity";
import { Entity } from "./entity";
import { enumLayer, GameRoot } from "./root";
import { GameRoot } from "./root";
import { getCodeFromBuildingData } from "./building_codes";
export const defaultBuildingVariant = "default";
@ -27,10 +27,10 @@ export class MetaBuilding {
/**
* Returns the edit layer of the building
* @returns {enumLayer}
* @returns {Layer}
*/
getLayer() {
return enumLayer.regular;
return "regular";
}
/**
@ -236,7 +236,7 @@ export class MetaBuilding {
* @param {Vector} param0.tile
* @param {number} param0.rotation
* @param {string} param0.variant
* @param {string} param0.layer
* @param {Layer} param0.layer
* @return {{ rotation: number, rotationVariant: number, connectedEntities?: Array<Entity> }}
*/
computeOptimalDirectionAndRotationVariantAtTile({ root, tile, rotation, variant, layer }) {

@ -1,7 +1,7 @@
import { GameRoot } from "./root";
import { ShapeDefinition } from "./shape_definition";
import { globalConfig } from "../core/config";
import { BaseItem, enumItemType } from "./base_item";
import { BaseItem } from "./base_item";
import { ShapeItem } from "./items/shape_item";
import { BasicSerializableObject } from "../savegame/serialization";
@ -53,7 +53,7 @@ export class ProductionAnalytics extends BasicSerializableObject {
* @param {BaseItem} item
*/
onItemProduced(item) {
if (item.getItemType() === enumItemType.shape) {
if (item.getItemType() === "shape") {
const definition = /** @type {ShapeItem} */ (item).definition;
const key = definition.getHash();
const entry = this.history[enumAnalyticsDataSource.produced];

@ -1,5 +1,4 @@
/* eslint-disable no-unused-vars */
import { Signal } from "../core/signal";
import { RandomNumberGenerator } from "../core/rng";
import { createLogger } from "../core/logging";
@ -32,14 +31,8 @@ import { Vector } from "../core/vector";
const logger = createLogger("game/root");
/** @enum {string} */
export const enumLayer = {
regular: "regular",
wires: "wires",
};
/** @type {Array<enumLayer>} */
export const arrayLayers = [enumLayer.regular, enumLayer.wires];
/** @type {Array<Layer>} */
export const layers = ["regular", "wires"];
/**
* The game root is basically the whole game state at a given point,
@ -134,8 +127,8 @@ export class GameRoot {
/** @type {DynamicTickrate} */
this.dynamicTickrate = null;
/** @type {enumLayer} */
this.currentLayer = enumLayer.regular;
/** @type {Layer} */
this.currentLayer = "regular";
this.signals = {
// Entities
@ -167,7 +160,7 @@ export class GameRoot {
bulkOperationFinished: /** @type {TypedSignal<[]>} */ (new Signal()),
editModeChanged: /** @type {TypedSignal<[enumLayer]>} */ (new Signal()),
editModeChanged: /** @type {TypedSignal<[Layer]>} */ (new Signal()),
// Called to check if an entity can be placed, second parameter is an additional offset.
// Use to introduce additional placement checks

@ -1,12 +1,11 @@
import { globalConfig } from "../../core/config";
import { Loader } from "../../core/loader";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { enumColors } from "../colors";
import { DisplayComponent } from "../components/display";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { ColorItem, COLOR_ITEM_SINGLETONS } from "../items/color_item";
import { MapChunkView } from "../map_chunk_view";
import { enumLayer } from "../root";
import { BooleanItem } from "../items/boolean_item";
export class DisplaySystem extends GameSystemWithFilter {
@ -35,18 +34,18 @@ export class DisplaySystem extends GameSystemWithFilter {
}
switch (value.getItemType()) {
case enumItemType.boolean: {
case "boolean": {
return /** @type {BooleanItem} */ (value).value
? COLOR_ITEM_SINGLETONS[enumColors.white]
: null;
}
case enumItemType.color: {
case "color": {
const item = /**@type {ColorItem} */ (value);
return item.color === enumColors.uncolored ? null : item;
}
case enumItemType.shape: {
case "shape": {
return value;
}
@ -61,7 +60,7 @@ export class DisplaySystem extends GameSystemWithFilter {
* @param {MapChunkView} chunk
*/
drawChunk(parameters, chunk) {
const contents = chunk.containedEntitiesByLayer[enumLayer.regular];
const contents = chunk.containedEntitiesByLayer.regular;
for (let i = 0; i < contents.length; ++i) {
const entity = contents[i];
if (entity && entity.components.Display) {
@ -77,15 +76,15 @@ export class DisplaySystem extends GameSystemWithFilter {
}
const origin = entity.components.StaticMapEntity.origin;
if (value.getItemType() === enumItemType.color) {
if (value.getItemType() === "color") {
this.displaySprites[/** @type {ColorItem} */ (value).color].drawCachedCentered(
parameters,
(origin.x + 0.5) * globalConfig.tileSize,
(origin.y + 0.5) * globalConfig.tileSize,
globalConfig.tileSize
);
} else if (value.getItemType() === enumItemType.shape) {
value.drawCentered(
} else if (value.getItemType() === "shape") {
value.draw(
(origin.x + 0.5) * globalConfig.tileSize,
(origin.y + 0.5) * globalConfig.tileSize,
parameters,

@ -5,7 +5,6 @@ import { enumDirectionToVector } from "../../core/vector";
import { ItemAcceptorComponent } from "../components/item_acceptor";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { enumLayer } from "../root";
export class ItemAcceptorSystem extends GameSystemWithFilter {
constructor(root) {

@ -4,7 +4,6 @@ import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON } from "../items/boolean_item
import { MapChunkView } from "../map_chunk_view";
import { globalConfig } from "../../core/config";
import { Loader } from "../../core/loader";
import { enumLayer } from "../root";
export class LeverSystem extends GameSystemWithFilter {
constructor(root) {
@ -32,7 +31,7 @@ export class LeverSystem extends GameSystemWithFilter {
* @param {MapChunkView} chunk
*/
drawChunk(parameters, chunk) {
const contents = chunk.containedEntitiesByLayer[enumLayer.regular];
const contents = chunk.containedEntitiesByLayer.regular;
for (let i = 0; i < contents.length; ++i) {
const entity = contents[i];
if (entity && entity.components.Lever) {

@ -1,6 +1,6 @@
import { LogicGateComponent, enumLogicGateType } from "../components/logic_gate";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { enumPinSlotType } from "../components/wired_pins";
import { BOOL_TRUE_SINGLETON, BOOL_FALSE_SINGLETON, BooleanItem } from "../items/boolean_item";
import { enumItemProcessorTypes } from "../components/item_processor";
@ -72,7 +72,7 @@ export class LogicGateSystem extends GameSystemWithFilter {
return BOOL_FALSE_SINGLETON;
}
if (itemType === enumItemType.boolean) {
if (itemType === "boolean") {
return /** @type {BooleanItem} */ (param1).value && /** @type {BooleanItem} */ (param2).value
? BOOL_TRUE_SINGLETON
: BOOL_FALSE_SINGLETON;
@ -91,7 +91,7 @@ export class LogicGateSystem extends GameSystemWithFilter {
return BOOL_TRUE_SINGLETON;
}
if (item.getItemType() !== enumItemType.boolean) {
if (item.getItemType() !== "boolean") {
// Not a boolean actually
return BOOL_FALSE_SINGLETON;
}
@ -115,11 +115,11 @@ export class LogicGateSystem extends GameSystemWithFilter {
}
// Check for the right types
if (param1 && param1.getItemType() !== enumItemType.boolean) {
if (param1 && param1.getItemType() !== "boolean") {
return BOOL_FALSE_SINGLETON;
}
if (param2 && param2.getItemType() !== enumItemType.boolean) {
if (param2 && param2.getItemType() !== "boolean") {
return BOOL_FALSE_SINGLETON;
}
@ -144,13 +144,9 @@ export class LogicGateSystem extends GameSystemWithFilter {
}
const valueParam1 =
param1 && param1.getItemType() === enumItemType.boolean
? /** @type {BooleanItem} */ (param1).value
: 0;
param1 && param1.getItemType() === "boolean" ? /** @type {BooleanItem} */ (param1).value : 0;
const valueParam2 =
param2 && param2.getItemType() === enumItemType.boolean
? /** @type {BooleanItem} */ (param2).value
: 0;
param2 && param2.getItemType() === "boolean" ? /** @type {BooleanItem} */ (param2).value : 0;
return valueParam1 || valueParam2 ? BOOL_TRUE_SINGLETON : BOOL_FALSE_SINGLETON;
}
@ -169,7 +165,7 @@ export class LogicGateSystem extends GameSystemWithFilter {
return null;
}
if (flag.getItemType() !== enumItemType.boolean) {
if (flag.getItemType() !== "boolean") {
// Flag is not a boolean
return null;
}

@ -6,7 +6,6 @@ import { MinerComponent } from "../components/miner";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { MapChunkView } from "../map_chunk_view";
import { enumLayer } from "../root";
export class MinerSystem extends GameSystemWithFilter {
constructor(root) {
@ -75,7 +74,7 @@ export class MinerSystem extends GameSystemWithFilter {
const ejectingDirection = staticComp.localDirectionToWorld(ejectingSlot.direction);
const targetTile = ejectingPos.add(enumDirectionToVector[ejectingDirection]);
const targetContents = this.root.map.getTileContent(targetTile, enumLayer.regular);
const targetContents = this.root.map.getTileContent(targetTile, "regular");
// Check if we are connected to another miner and thus do not eject directly
if (targetContents) {

@ -13,7 +13,6 @@ import { enumUndergroundBeltMode, UndergroundBeltComponent } from "../components
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { fastArrayDelete } from "../../core/utils";
import { enumLayer } from "../root";
const logger = createLogger("tunnels");
@ -298,7 +297,7 @@ export class UndergroundBeltSystem extends GameSystemWithFilter {
) {
currentTile = currentTile.add(searchVector);
const potentialReceiver = this.root.map.getTileContent(currentTile, enumLayer.regular);
const potentialReceiver = this.root.map.getTileContent(currentTile, "regular");
if (!potentialReceiver) {
// Empty tile
continue;

@ -12,7 +12,8 @@ import {
enumInvertedDirections,
Vector,
} from "../../core/vector";
import { BaseItem, enumItemType } from "../base_item";
import { BaseItem } from "../base_item";
import { BooleanItem } from "../items/boolean_item";
import { arrayWireRotationVariantToType, MetaWireBuilding } from "../buildings/wire";
import { getCodeFromBuildingData } from "../building_codes";
import { enumWireType, WireComponent } from "../components/wire";
@ -577,17 +578,17 @@ export class WireSystem extends GameSystemWithFilter {
}
const valueType = value.getItemType();
if (valueType === enumItemType.shape) {
if (valueType === "shape") {
return {
spriteSet: this.wireSprites.shape,
opacity: 1,
};
} else if (valueType === enumItemType.color) {
} else if (valueType === "color") {
return {
spriteSet: this.wireSprites.color,
opacity: 1,
};
} else if (valueType === enumItemType.boolean) {
} else if (valueType === "boolean") {
return {
spriteSet: this.wireSprites.regular,
opacity: /** @type {BooleanItem} */ (value).value ? 1 : 0.5,

@ -5,7 +5,6 @@ import { Vector, enumDirectionToAngle } from "../../core/vector";
import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins";
import { Entity } from "../entity";
import { GameSystemWithFilter } from "../game_system_with_filter";
import { enumLayer } from "../root";
import { STOP_PROPAGATION } from "../../core/signal";
import { drawRotatedSprite } from "../../core/draw_utils";
import { GLOBAL_APP } from "../../core/globals";
@ -38,7 +37,7 @@ export class WiredPinsSystem extends GameSystemWithFilter {
// If this entity is placed on the wires layer, make sure we don't
// place it above a pin
if (entity.layer === enumLayer.wires) {
if (entity.layer === "wires") {
for (let x = rect.x; x < rect.x + rect.w; ++x) {
for (let y = rect.y; y < rect.y + rect.h; ++y) {
// Find which entities are in same tiles of both layers
@ -103,7 +102,7 @@ export class WiredPinsSystem extends GameSystemWithFilter {
}
// Check if there is any entity on that tile (Wired pins are always on the wires layer)
const collidingEntity = this.root.map.getLayerContentXY(worldPos.x, worldPos.y, enumLayer.wires);
const collidingEntity = this.root.map.getLayerContentXY(worldPos.x, worldPos.y, "wires");
// If there's an entity, and it can't get removed -> That's a collision
if (collidingEntity) {
@ -130,7 +129,7 @@ export class WiredPinsSystem extends GameSystemWithFilter {
for (let i = 0; i < pinsComp.slots.length; ++i) {
const slot = pinsComp.slots[i];
const worldPos = entity.components.StaticMapEntity.localTileToWorld(slot.pos);
const collidingEntity = this.root.map.getLayerContentXY(worldPos.x, worldPos.y, enumLayer.wires);
const collidingEntity = this.root.map.getLayerContentXY(worldPos.x, worldPos.y, "wires");
if (collidingEntity) {
assertAlways(
collidingEntity.components.StaticMapEntity.getMetaBuilding().getIsReplaceable(),

@ -193,6 +193,9 @@ declare interface TypedSignal<T extends Array<any>> {
removeAll();
}
declare type Layer = "regular" | "wires";
declare type ItemType = "shape" | "color" | "boolean";
declare module "worker-loader?inline=true&fallback=false!*" {
class WebpackWorker extends Worker {
constructor();

@ -456,7 +456,7 @@ export class TypeEnum extends BaseDataType {
*/
constructor(enumeration = {}) {
super();
this.availableValues = Object.keys(enumeration);
this.availableValues = Object.values(enumeration);
}
serialize(value) {

Loading…
Cancel
Save