package com.cardshifter.modapi.actions.attack; import java.util.Objects; import com.cardshifter.modapi.actions.TargetableCheckEvent; import com.cardshifter.modapi.base.ECSGame; import com.cardshifter.modapi.base.ECSSystem; public abstract class SpecificActionTargetSystem implements ECSSystem { private final String actionName; public SpecificActionTargetSystem(String actionName) { this.actionName = Objects.requireNonNull(actionName); } @Override public final void startGame(ECSGame game) { game.getEvents().registerHandlerAfter(this, TargetableCheckEvent.class, this::targetableCheck); } private void targetableCheck(TargetableCheckEvent event) { if (event.getAction().getName().equals(actionName)) { this.checkTargetable(event); } } protected abstract void checkTargetable(TargetableCheckEvent event); }