Introducing adventures.
This commit is contained in:
@@ -14,6 +14,9 @@ import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.pregame.SetupSoloAdventureGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.ShadowPhaseOfAIPlayerGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.ai.AIPlayerAssignsArcheryTotalGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.ai.AIPlayerAssignsMinionsGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.regroup.DiscardAllMinionsGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.turn.regroup.ReturnFollowersToSupportGameProcess;
|
||||
import com.gempukku.lotro.logic.timing.results.PlayCardResult;
|
||||
|
||||
import java.util.Set;
|
||||
@@ -74,21 +77,22 @@ public class DefaultSoloAdventure extends SoloAdventure {
|
||||
|
||||
@Override
|
||||
public GameProcess getAfterFellowshipAssignmentGameProcess(Set<PhysicalCard> leftoverMinions, GameProcess followingProcess) {
|
||||
return null;
|
||||
return new AIPlayerAssignsMinionsGameProcess(leftoverMinions, followingProcess);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GameProcess getBeforeFellowshipChooseToMoveGameProcess(GameProcess followingProcess) {
|
||||
return null;
|
||||
return followingProcess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GameProcess getPlayerStaysGameProcess(LotroGame game, GameProcess followingProcess) {
|
||||
return null;
|
||||
return new ReturnFollowersToSupportGameProcess(
|
||||
new DiscardAllMinionsGameProcess(followingProcess));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSolo() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.gempukku.lotro.logic.timing.processes.turn.ai;
|
||||
|
||||
import com.gempukku.lotro.common.CardType;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.GameState;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.SystemQueueAction;
|
||||
import com.gempukku.lotro.logic.effects.AssignmentPhaseEffect;
|
||||
import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class AIPlayerAssignsMinionsGameProcess implements GameProcess {
|
||||
private Set<PhysicalCard> _leftoverMinions;
|
||||
private GameProcess _followingGameProcess;
|
||||
|
||||
public AIPlayerAssignsMinionsGameProcess(Set<PhysicalCard> leftoverMinions, GameProcess followingGameProcess) {
|
||||
_leftoverMinions = leftoverMinions;
|
||||
_followingGameProcess = followingGameProcess;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void process(LotroGame game) {
|
||||
GameState gameState = game.getGameState();
|
||||
Filter minionFilter = Filters.and(CardType.MINION, Filters.owner("AI"), Filters.in(_leftoverMinions));
|
||||
|
||||
final Set<PhysicalCard> minions = new HashSet<PhysicalCard>(Filters.filterActive(gameState, game.getModifiersQuerying(), minionFilter, Filters.assignableToSkirmish(Side.SHADOW, true, false)));
|
||||
if (minions.size() > 0) {
|
||||
final PhysicalCard ringBearer = game.getGameState().getRingBearer(game.getGameState().getCurrentPlayerId());
|
||||
Map<PhysicalCard, Set<PhysicalCard>> assignments = Collections.singletonMap(ringBearer, minions);
|
||||
|
||||
if (game.getModifiersQuerying().isValidAssignments(game.getGameState(), Side.SHADOW, assignments)) {
|
||||
SystemQueueAction action = new SystemQueueAction();
|
||||
action.appendEffect(
|
||||
new AssignmentPhaseEffect("AI", assignments, "Shadow player assignments"));
|
||||
|
||||
game.getActionsEnvironment().addActionToStack(action);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public GameProcess getNextProcess() {
|
||||
return _followingGameProcess;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user