package com.cardshifter.modapi.phase;
import com.cardshifter.modapi.actions.ActionAllowedCheckEvent;
import com.cardshifter.modapi.base.ECSGame;
import com.cardshifter.modapi.base.ECSSystem;
import com.cardshifter.modapi.base.RetrieverSingleton;
public class PerformerMustBeCurrentPlayer implements ECSSystem {
@RetrieverSingleton
private PhaseController phases;
@Override
public void startGame(ECSGame game) {
game.getEvents().registerHandlerAfter(this, ActionAllowedCheckEvent.class, this::actionPerformerIsCurrentPlayer);
}
private void actionPerformerIsCurrentPlayer(ActionAllowedCheckEvent event) {
if (phases.getCurrentEntity() == null) {
// If current player is null, avoid preventing *all* actions
return;
}
if (event.getPerformer() != phases.getCurrentEntity()) {
event.setAllowed(false);
}
}
}