package com.asteria.game.character.combat.effect;
import com.asteria.game.character.CharacterNode;
import com.asteria.task.Task;
/**
* The {@link Task} implementation that provides processing for
* {@link CombatEffect}s.
*
* @author lare96 <http://github.org/lare96>
*/
public final class CombatEffectTask extends Task {
/**
* The character that this task is for.
*/
private final CharacterNode c;
/**
* The combat effect that is being processed.
*/
private final CombatEffect effect;
/**
* Creates a new {@link CombatEffectTask}.
*
* @param c
* the character that this task is for.
* @param effect
* the combat effect that is being processed.
*/
public CombatEffectTask(CharacterNode c, CombatEffect effect) {
super(effect.getDelay(), false);
super.attach(c);
this.c = c;
this.effect = effect;
}
@Override
public void execute() {
if (effect.removeOn(c) || !c.isRegistered()) {
this.cancel();
return;
}
effect.process(c);
}
}