From 58d6b3e2d6a646698b88a0d09490e2a0e32259dd Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Sat, 6 Apr 2024 06:52:39 -0700 Subject: [PATCH] Make ChildComp work with turrets (#9706) --- .../mindustry/entities/comp/ChildComp.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/core/src/mindustry/entities/comp/ChildComp.java b/core/src/mindustry/entities/comp/ChildComp.java index f34a9198c9..03465fbf78 100644 --- a/core/src/mindustry/entities/comp/ChildComp.java +++ b/core/src/mindustry/entities/comp/ChildComp.java @@ -4,6 +4,7 @@ import arc.math.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.gen.*; +import mindustry.world.blocks.defense.turrets.BaseTurret.*; @Component abstract class ChildComp implements Posc, Rotc{ @@ -18,9 +19,14 @@ abstract class ChildComp implements Posc, Rotc{ if(parent != null){ offsetX = x - parent.getX(); offsetY = y - parent.getY(); - if(rotWithParent && parent instanceof Rotc r){ - offsetPos = -r.rotation(); - offsetRot = rotation - r.rotation(); + if(rotWithParent){ + if(parent instanceof Rotc r){ + offsetPos = -r.rotation(); + offsetRot = rotation - r.rotation(); + }else if(parent instanceof BaseTurretBuild build){ + offsetPos = -build.rotation; + offsetRot = rotation - build.rotation; + } } } } @@ -28,10 +34,16 @@ abstract class ChildComp implements Posc, Rotc{ @Override public void update(){ if(parent != null){ - if(rotWithParent && parent instanceof Rotc r){ - x = parent.getX() + Angles.trnsx(r.rotation() + offsetPos, offsetX, offsetY); - y = parent.getY() + Angles.trnsy(r.rotation() + offsetPos, offsetX, offsetY); - rotation = r.rotation() + offsetRot; + if(rotWithParent){ + if(parent instanceof Rotc r){ + x = parent.getX() + Angles.trnsx(r.rotation() + offsetPos, offsetX, offsetY); + y = parent.getY() + Angles.trnsy(r.rotation() + offsetPos, offsetX, offsetY); + rotation = r.rotation() + offsetRot; + }else if(parent instanceof BaseTurretBuild build){ + x = parent.getX() + Angles.trnsx(build.rotation + offsetPos, offsetX, offsetY); + y = parent.getY() + Angles.trnsy(build.rotation + offsetPos, offsetX, offsetY); + rotation = build.rotation + offsetRot; + } }else{ x = parent.getX() + offsetX; y = parent.getY() + offsetY;