From 527e2ee09c89ba4f200751c2a0870654a4af5843 Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Thu, 6 Feb 2025 10:23:11 -0800 Subject: [PATCH] Fix loop sound persisting after the payload carrier is removed. (#8034) * Properly remove units and blocks in the case that the carrier dies * added = false --------- Co-authored-by: Anuken --- core/src/mindustry/entities/comp/BuildingComp.java | 4 ++++ core/src/mindustry/entities/comp/PayloadComp.java | 7 +++++++ core/src/mindustry/world/blocks/payloads/BuildPayload.java | 5 +++++ core/src/mindustry/world/blocks/payloads/Payload.java | 2 ++ 4 files changed, 18 insertions(+) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 5fe15f9698..cdb4d7303a 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -2089,6 +2089,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, @Override public void remove(){ + stopSound(); + } + + public void stopSound(){ if(sound != null){ sound.stop(); } diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 223716d9bd..b6812991dd 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -61,6 +61,13 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{ } @Override + public void remove(){ + for(Payload pay : payloads){ + pay.remove(); + } + payloads.clear(); + } + public void destroy(){ if(Vars.state.rules.unitPayloadsExplode) payloads.each(Payload::destroyed); } diff --git a/core/src/mindustry/world/blocks/payloads/BuildPayload.java b/core/src/mindustry/world/blocks/payloads/BuildPayload.java index 57d0812e8c..524cdf75aa 100644 --- a/core/src/mindustry/world/blocks/payloads/BuildPayload.java +++ b/core/src/mindustry/world/blocks/payloads/BuildPayload.java @@ -82,6 +82,11 @@ public class BuildPayload implements Payload{ return build.block.size * tilesize; } + @Override + public void remove(){ + build.stopSound(); + } + @Override public void write(Writes write){ write.b(payloadBlock); diff --git a/core/src/mindustry/world/blocks/payloads/Payload.java b/core/src/mindustry/world/blocks/payloads/Payload.java index b1e6f90ff5..6b96c78e89 100644 --- a/core/src/mindustry/world/blocks/payloads/Payload.java +++ b/core/src/mindustry/world/blocks/payloads/Payload.java @@ -75,6 +75,8 @@ public interface Payload extends Position{ return y(); } + default void remove(){} + static void write(@Nullable Payload payload, Writes write){ if(payload == null){ write.bool(false);