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
This commit is contained in:
@@ -73,6 +73,7 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
}
|
}
|
||||||
|
|
||||||
void clearStatuses(){
|
void clearStatuses(){
|
||||||
|
statuses.each(e -> e.effect.onRemoved(self()));
|
||||||
statuses.clear();
|
statuses.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,6 +81,7 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
void unapply(StatusEffect effect){
|
void unapply(StatusEffect effect){
|
||||||
statuses.remove(e -> {
|
statuses.remove(e -> {
|
||||||
if(e.effect == effect){
|
if(e.effect == effect){
|
||||||
|
e.effect.onRemoved(self());
|
||||||
Pools.free(e);
|
Pools.free(e);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -189,6 +191,10 @@ abstract class StatusComp implements Posc, Flyingc{
|
|||||||
entry.time = Math.max(entry.time - Time.delta, 0);
|
entry.time = Math.max(entry.time - Time.delta, 0);
|
||||||
|
|
||||||
if(entry.effect == null || (entry.time <= 0 && !entry.effect.permanent)){
|
if(entry.effect == null || (entry.time <= 0 && !entry.effect.permanent)){
|
||||||
|
if(entry.effect != null){
|
||||||
|
entry.effect.onRemoved(self());
|
||||||
|
}
|
||||||
|
|
||||||
Pools.free(entry);
|
Pools.free(entry);
|
||||||
index --;
|
index --;
|
||||||
statuses.remove(index);
|
statuses.remove(index);
|
||||||
|
|||||||
@@ -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){
|
protected void trans(StatusEffect effect, TransitionHandler handler){
|
||||||
transitions.put(effect, handler);
|
transitions.put(effect, handler);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user