package net.zomis.cardshifter.ecs.usage;
import java.util.Objects;
import com.cardshifter.modapi.actions.ActionAllowedCheckEvent;
import com.cardshifter.modapi.actions.ActionPerformEvent;
import com.cardshifter.modapi.actions.SpecificActionSystem;
import com.cardshifter.modapi.base.ComponentRetriever;
import com.cardshifter.modapi.base.Entity;
import com.cardshifter.modapi.base.PlayerComponent;
import com.cardshifter.modapi.base.Retriever;
import com.cardshifter.modapi.cards.CardComponent;
import com.cardshifter.modapi.players.Players;
public class OpponentCannotUseSystem extends SpecificActionSystem {
private final Entity entity;
@Retriever private ComponentRetriever<CardComponent> card;
@Retriever private ComponentRetriever<PlayerComponent> player;
public OpponentCannotUseSystem(Entity whoAmI, String action) {
super(action);
this.entity = whoAmI;
}
@Override
protected void isAllowed(ActionAllowedCheckEvent event) {
final PlayerComponent me = findOwnerFor(entity);
final PlayerComponent performer = findOwnerFor(event.getEntity());
if (me != performer) {
event.setAllowed(false);
}
}
@Override
protected void onPerform(ActionPerformEvent event) {
}
private PlayerComponent findOwnerFor(Entity entity) {
Entity playerEntity = Objects.requireNonNull(Players.findOwnerFor(entity), entity + " is not a player or a card. No idea who the player is.");
return player.get(playerEntity);
}
}