From 10db2af21caf6a366cc7742a1cae2c95b7a912f0 Mon Sep 17 00:00:00 2001 From: EmeraldBlock Date: Tue, 23 Nov 2021 23:08:49 -0600 Subject: [PATCH] remove belt underlays component --- src/js/game/buildings/balancer.js | 16 -- src/js/game/buildings/reader.js | 218 +++++++++++------------ src/js/game/component_registry.js | 2 - src/js/game/components/belt_underlays.js | 41 ----- src/js/game/entity_components.js | 4 - src/js/game/systems/acceptor_belt.js | 20 +-- src/js/game/systems/ejector_belt.js | 20 +-- 7 files changed, 105 insertions(+), 216 deletions(-) delete mode 100644 src/js/game/components/belt_underlays.js diff --git a/src/js/game/buildings/balancer.js b/src/js/game/buildings/balancer.js index 38a568e1..fceae40a 100644 --- a/src/js/game/buildings/balancer.js +++ b/src/js/game/buildings/balancer.js @@ -8,7 +8,6 @@ import { GameRoot } from "../root"; import { enumHubGoalRewards } from "../tutorial_goals"; import { T } from "../../translations"; import { formatItemsPerSecond, generateMatrixRotations } from "../../core/utils"; -import { BeltUnderlaysComponent } from "../components/belt_underlays"; /** @enum {string} */ export const enumBalancerVariants = { @@ -138,8 +137,6 @@ export class MetaBalancerBuilding extends MetaBuilding { renderFloatingItems: false, }) ); - - entity.addComponent(new BeltUnderlaysComponent({ underlays: [] })); } /** @@ -167,11 +164,6 @@ export class MetaBalancerBuilding extends MetaBuilding { { pos: new Vector(1, 0), direction: enumDirection.top }, ]); - entity.components.BeltUnderlays.underlays = [ - { pos: new Vector(0, 0), direction: enumDirection.top }, - { pos: new Vector(1, 0), direction: enumDirection.top }, - ]; - break; } case enumBalancerVariants.merger: @@ -195,10 +187,6 @@ export class MetaBalancerBuilding extends MetaBuilding { { pos: new Vector(0, 0), direction: enumDirection.top }, ]); - entity.components.BeltUnderlays.underlays = [ - { pos: new Vector(0, 0), direction: enumDirection.top }, - ]; - break; } case enumBalancerVariants.splitter: @@ -224,10 +212,6 @@ export class MetaBalancerBuilding extends MetaBuilding { }, ]); - entity.components.BeltUnderlays.underlays = [ - { pos: new Vector(0, 0), direction: enumDirection.top }, - ]; - break; } default: diff --git a/src/js/game/buildings/reader.js b/src/js/game/buildings/reader.js index 006d6582..0af95b6d 100644 --- a/src/js/game/buildings/reader.js +++ b/src/js/game/buildings/reader.js @@ -1,115 +1,103 @@ -import { enumDirection, Vector } from "../../core/vector"; -import { ItemAcceptorComponent } from "../components/item_acceptor"; -import { ItemEjectorComponent } from "../components/item_ejector"; -import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor"; -import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins"; -import { Entity } from "../entity"; -import { MetaBuilding } from "../meta_building"; -import { GameRoot } from "../root"; -import { BeltUnderlaysComponent } from "../components/belt_underlays"; -import { BeltReaderComponent } from "../components/belt_reader"; -import { enumHubGoalRewards } from "../tutorial_goals"; -import { generateMatrixRotations } from "../../core/utils"; - -const overlayMatrix = generateMatrixRotations([0, 1, 0, 0, 1, 0, 0, 1, 0]); - -export class MetaReaderBuilding extends MetaBuilding { - constructor() { - super("reader"); - } - - getSilhouetteColor() { - return "#25fff2"; - } - - /** - * @param {GameRoot} root - */ - getIsUnlocked(root) { - return root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_belt_reader); - } - - getDimensions() { - return new Vector(1, 1); - } - - getShowWiresLayerPreview() { - return true; - } - - /** - * @param {number} rotation - * @param {number} rotationVariant - * @param {string} variant - * @param {Entity} entity - * @returns {Array|null} - */ - getSpecialOverlayRenderMatrix(rotation, rotationVariant, variant, entity) { - return overlayMatrix[rotation]; - } - - /** - * Creates the entity at the given location - * @param {Entity} entity - */ - setupEntityComponents(entity) { - entity.addComponent( - new WiredPinsComponent({ - slots: [ - { - pos: new Vector(0, 0), - direction: enumDirection.right, - type: enumPinSlotType.logicalEjector, - }, - { - pos: new Vector(0, 0), - direction: enumDirection.left, - type: enumPinSlotType.logicalEjector, - }, - ], - }) - ); - - entity.addComponent( - new ItemAcceptorComponent({ - slots: [ - { - pos: new Vector(0, 0), - directions: [enumDirection.bottom], - }, - ], - }) - ); - - entity.addComponent( - new ItemEjectorComponent({ - slots: [ - { - pos: new Vector(0, 0), - direction: enumDirection.top, - }, - ], - }) - ); - - entity.addComponent( - new ItemProcessorComponent({ - processorType: enumItemProcessorTypes.reader, - inputsPerCharge: 1, - }) - ); - - entity.addComponent( - new BeltUnderlaysComponent({ - underlays: [ - { - pos: new Vector(0, 0), - direction: enumDirection.top, - }, - ], - }) - ); - - entity.addComponent(new BeltReaderComponent()); - } -} +import { enumDirection, Vector } from "../../core/vector"; +import { ItemAcceptorComponent } from "../components/item_acceptor"; +import { ItemEjectorComponent } from "../components/item_ejector"; +import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor"; +import { enumPinSlotType, WiredPinsComponent } from "../components/wired_pins"; +import { Entity } from "../entity"; +import { MetaBuilding } from "../meta_building"; +import { GameRoot } from "../root"; +import { BeltReaderComponent } from "../components/belt_reader"; +import { enumHubGoalRewards } from "../tutorial_goals"; +import { generateMatrixRotations } from "../../core/utils"; + +const overlayMatrix = generateMatrixRotations([0, 1, 0, 0, 1, 0, 0, 1, 0]); + +export class MetaReaderBuilding extends MetaBuilding { + constructor() { + super("reader"); + } + + getSilhouetteColor() { + return "#25fff2"; + } + + /** + * @param {GameRoot} root + */ + getIsUnlocked(root) { + return root.hubGoals.isRewardUnlocked(enumHubGoalRewards.reward_belt_reader); + } + + getDimensions() { + return new Vector(1, 1); + } + + getShowWiresLayerPreview() { + return true; + } + + /** + * @param {number} rotation + * @param {number} rotationVariant + * @param {string} variant + * @param {Entity} entity + * @returns {Array|null} + */ + getSpecialOverlayRenderMatrix(rotation, rotationVariant, variant, entity) { + return overlayMatrix[rotation]; + } + + /** + * Creates the entity at the given location + * @param {Entity} entity + */ + setupEntityComponents(entity) { + entity.addComponent( + new WiredPinsComponent({ + slots: [ + { + pos: new Vector(0, 0), + direction: enumDirection.right, + type: enumPinSlotType.logicalEjector, + }, + { + pos: new Vector(0, 0), + direction: enumDirection.left, + type: enumPinSlotType.logicalEjector, + }, + ], + }) + ); + + entity.addComponent( + new ItemAcceptorComponent({ + slots: [ + { + pos: new Vector(0, 0), + directions: [enumDirection.bottom], + }, + ], + }) + ); + + entity.addComponent( + new ItemEjectorComponent({ + slots: [ + { + pos: new Vector(0, 0), + direction: enumDirection.top, + }, + ], + }) + ); + + entity.addComponent( + new ItemProcessorComponent({ + processorType: enumItemProcessorTypes.reader, + inputsPerCharge: 1, + }) + ); + + entity.addComponent(new BeltReaderComponent()); + } +} diff --git a/src/js/game/component_registry.js b/src/js/game/component_registry.js index 9c9247e6..daba7987 100644 --- a/src/js/game/component_registry.js +++ b/src/js/game/component_registry.js @@ -9,7 +9,6 @@ import { UndergroundBeltComponent } from "./components/underground_belt"; import { HubComponent } from "./components/hub"; import { StorageComponent } from "./components/storage"; import { WiredPinsComponent } from "./components/wired_pins"; -import { BeltUnderlaysComponent } from "./components/belt_underlays"; import { WireComponent } from "./components/wire"; import { ConstantSignalComponent } from "./components/constant_signal"; import { LogicGateComponent } from "./components/logic_gate"; @@ -32,7 +31,6 @@ export function initComponentRegistry() { gComponentRegistry.register(HubComponent); gComponentRegistry.register(StorageComponent); gComponentRegistry.register(WiredPinsComponent); - gComponentRegistry.register(BeltUnderlaysComponent); gComponentRegistry.register(WireComponent); gComponentRegistry.register(ConstantSignalComponent); gComponentRegistry.register(LogicGateComponent); diff --git a/src/js/game/components/belt_underlays.js b/src/js/game/components/belt_underlays.js deleted file mode 100644 index 63b265d0..00000000 --- a/src/js/game/components/belt_underlays.js +++ /dev/null @@ -1,41 +0,0 @@ -import { enumDirection, Vector } from "../../core/vector"; -import { Component } from "../component"; - -/** - * Store which type an underlay is, this is cached so we can easily - * render it. - * - * Full: Render underlay at top and bottom of tile - * Bottom Only: Only render underlay at the bottom half - * Top Only: - * @enum {string} - */ -export const enumClippedBeltUnderlayType = { - full: "full", - bottomOnly: "bottomOnly", - topOnly: "topOnly", - none: "none", -}; - -/** - * @typedef {{ - * pos: Vector, - * direction: enumDirection, - * cachedType?: enumClippedBeltUnderlayType - * }} BeltUnderlayTile - */ - -export class BeltUnderlaysComponent extends Component { - static getId() { - return "BeltUnderlays"; - } - - /** - * @param {object} param0 - * @param {Array=} param0.underlays Where to render belt underlays - */ - constructor({ underlays = [] }) { - super(); - this.underlays = underlays; - } -} diff --git a/src/js/game/entity_components.js b/src/js/game/entity_components.js index 163be9f9..f0bd2a06 100644 --- a/src/js/game/entity_components.js +++ b/src/js/game/entity_components.js @@ -1,6 +1,5 @@ /* typehints:start */ import { BeltComponent } from "./components/belt"; -import { BeltUnderlaysComponent } from "./components/belt_underlays"; import { HubComponent } from "./components/hub"; import { ItemAcceptorComponent } from "./components/item_acceptor"; import { ItemEjectorComponent } from "./components/item_ejector"; @@ -60,9 +59,6 @@ export class EntityComponentStorage { /** @type {WiredPinsComponent} */ this.WiredPins; - /** @type {BeltUnderlaysComponent} */ - this.BeltUnderlays; - /** @type {WireComponent} */ this.Wire; diff --git a/src/js/game/systems/acceptor_belt.js b/src/js/game/systems/acceptor_belt.js index 7c8ecfdd..f8e2e3e4 100644 --- a/src/js/game/systems/acceptor_belt.js +++ b/src/js/game/systems/acceptor_belt.js @@ -2,25 +2,12 @@ import { globalConfig } from "../../core/config"; import { DrawParameters } from "../../core/draw_parameters"; import { Loader } from "../../core/loader"; import { Rectangle } from "../../core/rectangle"; -import { FULL_CLIP_RECT } from "../../core/sprites"; import { enumDirectionToAngle, enumInvertedDirections } from "../../core/vector"; -import { enumClippedBeltUnderlayType } from "../components/belt_underlays"; import { ItemAcceptorComponent } from "../components/item_acceptor"; import { GameSystemWithFilter } from "../game_system_with_filter"; import { MapChunkView } from "../map_chunk_view"; import { BELT_ANIM_COUNT } from "./belt"; -/** - * Mapping from underlay type to clip rect - * @type {Object} - */ -const enumUnderlayTypeToClipRect = { - [enumClippedBeltUnderlayType.none]: null, - [enumClippedBeltUnderlayType.full]: FULL_CLIP_RECT, - [enumClippedBeltUnderlayType.topOnly]: new Rectangle(0, 0, 1, 0.5), - [enumClippedBeltUnderlayType.bottomOnly]: new Rectangle(0, 0.5, 1, 0.5), -}; - export class AcceptorBeltSystem extends GameSystemWithFilter { constructor(root) { super(root, [ItemAcceptorComponent]); @@ -86,12 +73,7 @@ export class AcceptorBeltSystem extends GameSystemWithFilter { const worldDirection = staticComp.localDirectionToWorld(direction); const angle = enumDirectionToAngle[enumInvertedDirections[worldDirection]]; - const underlayType = enumClippedBeltUnderlayType.bottomOnly; - const clipRect = enumUnderlayTypeToClipRect[underlayType]; - if (!clipRect) { - // Empty - continue; - } + const clipRect = new Rectangle(0, 0.5, 1, 0.5); // Actually draw the sprite const x = destX + globalConfig.halfTileSize; diff --git a/src/js/game/systems/ejector_belt.js b/src/js/game/systems/ejector_belt.js index cb0c86fa..18ef4981 100644 --- a/src/js/game/systems/ejector_belt.js +++ b/src/js/game/systems/ejector_belt.js @@ -2,25 +2,12 @@ import { globalConfig } from "../../core/config"; import { DrawParameters } from "../../core/draw_parameters"; import { Loader } from "../../core/loader"; import { Rectangle } from "../../core/rectangle"; -import { FULL_CLIP_RECT } from "../../core/sprites"; import { enumDirectionToAngle } from "../../core/vector"; -import { enumClippedBeltUnderlayType } from "../components/belt_underlays"; import { ItemEjectorComponent } from "../components/item_ejector"; import { GameSystemWithFilter } from "../game_system_with_filter"; import { MapChunkView } from "../map_chunk_view"; import { BELT_ANIM_COUNT } from "./belt"; -/** - * Mapping from underlay type to clip rect - * @type {Object} - */ -const enumUnderlayTypeToClipRect = { - [enumClippedBeltUnderlayType.none]: null, - [enumClippedBeltUnderlayType.full]: FULL_CLIP_RECT, - [enumClippedBeltUnderlayType.topOnly]: new Rectangle(0, 0, 1, 0.5), - [enumClippedBeltUnderlayType.bottomOnly]: new Rectangle(0, 0.5, 1, 0.5), -}; - export class EjectorBeltSystem extends GameSystemWithFilter { constructor(root) { super(root, [ItemEjectorComponent]); @@ -83,12 +70,7 @@ export class EjectorBeltSystem extends GameSystemWithFilter { const worldDirection = staticComp.localDirectionToWorld(direction); const angle = enumDirectionToAngle[worldDirection]; - const underlayType = enumClippedBeltUnderlayType.topOnly; - const clipRect = enumUnderlayTypeToClipRect[underlayType]; - if (!clipRect) { - // Empty - continue; - } + const clipRect = new Rectangle(0, 0, 1, 0.5); // Actually draw the sprite const x = destX + globalConfig.halfTileSize;