From d9ea8beae2d0206e235f935e0aeded12b59d5a61 Mon Sep 17 00:00:00 2001 From: Uenhe <119563256+Uenhe@users.noreply.github.com> Date: Thu, 2 May 2024 21:41:59 +0800 Subject: [PATCH] Call onRemoved() in StatusEffect.java when an effect is removed (#9801) * Call onRemoved() in StatusEffect.java when an effect is removed * Call onRemoved() in StatusEffect.java when an effect is removed * cleanup * cleanup --- core/src/mindustry/entities/comp/StatusComp.java | 6 ++++++ core/src/mindustry/type/StatusEffect.java | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/core/src/mindustry/entities/comp/StatusComp.java b/core/src/mindustry/entities/comp/StatusComp.java index 56b7559455..4d3dd11dd0 100644 --- a/core/src/mindustry/entities/comp/StatusComp.java +++ b/core/src/mindustry/entities/comp/StatusComp.java @@ -73,6 +73,7 @@ abstract class StatusComp implements Posc, Flyingc{ } void clearStatuses(){ + statuses.each(e -> e.effect.onRemoved(self())); statuses.clear(); } @@ -80,6 +81,7 @@ abstract class StatusComp implements Posc, Flyingc{ void unapply(StatusEffect effect){ statuses.remove(e -> { if(e.effect == effect){ + e.effect.onRemoved(self()); Pools.free(e); return true; } @@ -189,6 +191,10 @@ abstract class StatusComp implements Posc, Flyingc{ entry.time = Math.max(entry.time - Time.delta, 0); if(entry.effect == null || (entry.time <= 0 && !entry.effect.permanent)){ + if(entry.effect != null){ + entry.effect.onRemoved(self()); + } + Pools.free(entry); index --; statuses.remove(index); diff --git a/core/src/mindustry/type/StatusEffect.java b/core/src/mindustry/type/StatusEffect.java index 4ffb7a6183..2e79ed00e7 100644 --- a/core/src/mindustry/type/StatusEffect.java +++ b/core/src/mindustry/type/StatusEffect.java @@ -142,6 +142,11 @@ public class StatusEffect extends UnlockableContent{ } } + /** Called when status effect is removed. */ + public void onRemoved(Unit unit){ + + } + protected void trans(StatusEffect effect, TransitionHandler handler){ transitions.put(effect, handler); }