Introducing adventures.

This commit is contained in:
marcins78
2014-07-25 16:12:21 +00:00
parent 82a5250ac9
commit 29d8b773d3
2 changed files with 60 additions and 4 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}