package net.zomis.cardshifter.ecs.effects; import com.cardshifter.modapi.actions.ActionPerformEvent; import com.cardshifter.modapi.base.Component; import com.cardshifter.modapi.base.CopyableComponent; import com.cardshifter.modapi.base.Entity; public class EffectComponent extends Component implements CopyableComponent { private final GameEffect effect; private final String description; public EffectComponent(String description, GameEffect effect) { this.description = description; this.effect = effect; } public void perform(ActionPerformEvent event) { effect.accept(event.getEntity(), event); } public void perform(Entity entity) { effect.accept(entity, null); } public String getDescription() { return description; } @Override public Component copy(Entity copyTo) { return new EffectComponent(description, effect); } public Component and(EffectComponent next) { return new EffectComponent(description + "\n" + next.description, (entity, event) -> effect.andThen(next.effect).accept(entity, event)); } public GameEffect getEffect() { return effect; } }