From 1022ea989cffa02b485c700a9899d50ccf204f8e Mon Sep 17 00:00:00 2001 From: DJ1TJOO Date: Mon, 22 Nov 2021 15:28:37 +0100 Subject: [PATCH] Fixed missing belt on corners of hub, splitter and merger --- src/js/game/buildings/balancer.js | 16 ++++++++ src/js/game/buildings/hub.js | 48 ++++++++++++++++++++++++ src/js/game/components/belt_underlays.js | 3 ++ src/js/game/systems/belt_underlays.js | 10 ++++- 4 files changed, 75 insertions(+), 2 deletions(-) diff --git a/src/js/game/buildings/balancer.js b/src/js/game/buildings/balancer.js index 38a568e1..98b11375 100644 --- a/src/js/game/buildings/balancer.js +++ b/src/js/game/buildings/balancer.js @@ -197,6 +197,14 @@ export class MetaBalancerBuilding extends MetaBuilding { entity.components.BeltUnderlays.underlays = [ { pos: new Vector(0, 0), direction: enumDirection.top }, + { + pos: new Vector(0, 0), + direction: + variant === enumBalancerVariants.mergerInverse + ? enumDirection.right + : enumDirection.left, + corner: true, + }, ]; break; @@ -226,6 +234,14 @@ export class MetaBalancerBuilding extends MetaBuilding { entity.components.BeltUnderlays.underlays = [ { pos: new Vector(0, 0), direction: enumDirection.top }, + { + pos: new Vector(0, 0), + direction: + variant === enumBalancerVariants.splitterInverse + ? enumDirection.left + : enumDirection.right, + corner: true, + }, ]; break; diff --git a/src/js/game/buildings/hub.js b/src/js/game/buildings/hub.js index b9929b31..1d6662ac 100644 --- a/src/js/game/buildings/hub.js +++ b/src/js/game/buildings/hub.js @@ -5,6 +5,7 @@ import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/it import { Entity } from "../entity"; import { MetaBuilding } from "../meta_building"; import { WiredPinsComponent, enumPinSlotType } from "../components/wired_pins"; +import { BeltUnderlaysComponent } from "../components/belt_underlays"; export class MetaHubBuilding extends MetaBuilding { constructor() { @@ -137,5 +138,52 @@ export class MetaHubBuilding extends MetaBuilding { ], }) ); + + entity.addComponent( + new BeltUnderlaysComponent({ + underlays: [ + { + pos: new Vector(0, 0), + direction: enumDirection.right, + corner: true, + }, + { + pos: new Vector(0, 0), + direction: enumDirection.bottom, + corner: true, + }, + { + pos: new Vector(0, 3), + direction: enumDirection.right, + corner: true, + }, + { + pos: new Vector(0, 3), + direction: enumDirection.top, + corner: true, + }, + { + pos: new Vector(3, 0), + direction: enumDirection.left, + corner: true, + }, + { + pos: new Vector(3, 0), + direction: enumDirection.bottom, + corner: true, + }, + { + pos: new Vector(3, 3), + direction: enumDirection.left, + corner: true, + }, + { + pos: new Vector(3, 3), + direction: enumDirection.top, + corner: true, + }, + ], + }) + ); } } diff --git a/src/js/game/components/belt_underlays.js b/src/js/game/components/belt_underlays.js index 63b265d0..fbd254a9 100644 --- a/src/js/game/components/belt_underlays.js +++ b/src/js/game/components/belt_underlays.js @@ -14,6 +14,8 @@ export const enumClippedBeltUnderlayType = { full: "full", bottomOnly: "bottomOnly", topOnly: "topOnly", + topCorner: "topCorner", + bottomCorner: "bottomCorner", none: "none", }; @@ -21,6 +23,7 @@ export const enumClippedBeltUnderlayType = { * @typedef {{ * pos: Vector, * direction: enumDirection, + * corner?: boolean, * cachedType?: enumClippedBeltUnderlayType * }} BeltUnderlayTile */ diff --git a/src/js/game/systems/belt_underlays.js b/src/js/game/systems/belt_underlays.js index c5c69d26..a8bef57a 100644 --- a/src/js/game/systems/belt_underlays.js +++ b/src/js/game/systems/belt_underlays.js @@ -29,6 +29,8 @@ const enumUnderlayTypeToClipRect = { [enumClippedBeltUnderlayType.full]: FULL_CLIP_RECT, [enumClippedBeltUnderlayType.topOnly]: new Rectangle(0, 0, 1, 0.5), [enumClippedBeltUnderlayType.bottomOnly]: new Rectangle(0, 0.5, 1, 0.5), + [enumClippedBeltUnderlayType.topCorner]: new Rectangle(0, 0, 1, 0.04), + [enumClippedBeltUnderlayType.bottomCorner]: new Rectangle(0, 0.96, 1, 0.04), }; export class BeltUnderlaysSystem extends GameSystemWithFilter { @@ -208,9 +210,13 @@ export class BeltUnderlaysSystem extends GameSystemWithFilter { if (connectedTop && connectedBottom) { flag = enumClippedBeltUnderlayType.full; } else if (connectedTop) { - flag = enumClippedBeltUnderlayType.topOnly; + flag = underlayTile.corner + ? enumClippedBeltUnderlayType.topCorner + : enumClippedBeltUnderlayType.topOnly; } else if (connectedBottom) { - flag = enumClippedBeltUnderlayType.bottomOnly; + flag = underlayTile.corner + ? enumClippedBeltUnderlayType.bottomCorner + : enumClippedBeltUnderlayType.bottomOnly; } return (underlayTile.cachedType = flag);