From a046f0f11b15fba243f03e25dc95d6c90a75cdee Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Wed, 8 Mar 2023 06:16:07 -0800 Subject: [PATCH] Non-hexagonal force projectors (#8358) --- .../world/blocks/defense/ForceProjector.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/world/blocks/defense/ForceProjector.java b/core/src/mindustry/world/blocks/defense/ForceProjector.java index fd9ad80508..169e72eef0 100644 --- a/core/src/mindustry/world/blocks/defense/ForceProjector.java +++ b/core/src/mindustry/world/blocks/defense/ForceProjector.java @@ -30,6 +30,8 @@ public class ForceProjector extends Block{ public float phaseRadiusBoost = 80f; public float phaseShieldBoost = 400f; public float radius = 101.7f; + public int sides = 6; + public float shieldRotation = 0f; public float shieldHealth = 700f; public float cooldownNormal = 1.75f; public float cooldownLiquid = 1.5f; @@ -46,7 +48,7 @@ public class ForceProjector extends Block{ protected static ForceBuild paramEntity; protected static Effect paramEffect; protected static final Cons shieldConsumer = bullet -> { - if(bullet.team != paramEntity.team && bullet.type.absorbable && Intersector.isInsideHexagon(paramEntity.x, paramEntity.y, paramEntity.realRadius() * 2f, bullet.x, bullet.y)){ + if(bullet.team != paramEntity.team && bullet.type.absorbable && Intersector.isInRegularPolygon(((ForceProjector)(paramEntity.block)).sides, paramEntity.x, paramEntity.y, paramEntity.realRadius() * 2f, ((ForceProjector)(paramEntity.block)).shieldRotation, bullet.x, bullet.y)){ bullet.absorb(); paramEffect.at(bullet); paramEntity.hit = 1f; @@ -109,10 +111,10 @@ public class ForceProjector extends Block{ Draw.color(Pal.gray); Lines.stroke(3f); - Lines.poly(x * tilesize + offset, y * tilesize + offset, 6, radius); + Lines.poly(x * tilesize + offset, y * tilesize + offset, sides, radius, shieldRotation); Draw.color(player.team().color); Lines.stroke(1f); - Lines.poly(x * tilesize + offset, y * tilesize + offset, 6, radius); + Lines.poly(x * tilesize + offset, y * tilesize + offset, sides, radius, shieldRotation); Draw.color(); } @@ -246,13 +248,13 @@ public class ForceProjector extends Block{ Draw.color(team.color, Color.white, Mathf.clamp(hit)); if(renderer.animateShields){ - Fill.poly(x, y, 6, radius); + Fill.poly(x, y, sides, radius, shieldRotation); }else{ Lines.stroke(1.5f); Draw.alpha(0.09f + Mathf.clamp(0.08f * hit)); - Fill.poly(x, y, 6, radius); + Fill.poly(x, y, sides, radius, shieldRotation); Draw.alpha(1f); - Lines.poly(x, y, 6, radius); + Lines.poly(x, y, sides, radius, shieldRotation); Draw.reset(); } }