private ReplayAction(ActionPerformEvent event) { this.entity = event.getEntity().getId(); this.performer = event.getPerformer().getId(); this.actionName = event.getAction().getName(); this.targets = event.getAction().getTargetSets().stream() .map(targetSet -> targetSet.getChosenTargets().stream() .map(e -> e.getId()).collect(Collectors.toList())) .collect(Collectors.toList()); }
private void onCardPlayed(ActionPerformEvent event) { if (event.getAction().getName().equals(actionName)) { return; } this.cardsPlayedThisTurn++; if (this.cardsPlayedThisTurn >= limit) { if (actionName == null) { PhaseController phases = Retrievers.singleton(event.getEntity().getGame(), PhaseController.class); phases.nextPhase(); } else { ECSAction action = Actions.getAction(event.getPerformer(), actionName); action.perform(event.getPerformer()); } cardsPlayedThisTurn = 0; } }
@Override public void startGame(ECSGame game) { game.getEvents().registerHandlerBefore(TCGGame.this, ActionPerformEvent.class, action -> { UseAbilityMessage useAbilityMessage = new UseAbilityMessage(getId(), action.getEntity().getId(), action.getAction().getName(), action.getAction().getAllTargets().mapToInt(e -> e.getId()).toArray()); send(useAbilityMessage.withPerformer(action.getPerformer().getId())); }); } });