From 9975bebf93a6a04415199c78e55d4b6276397eb5 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 12 Oct 2011 18:55:45 +0000 Subject: [PATCH] Fixing two major problems. --- .../logic/actions/SystemQueueAction.java | 31 +++++++++++++++++++ .../lotro/logic/timing/TurnProcedure.java | 24 +++++++------- ...PeoplePlayerAssignsMinionsGameProcess.java | 4 +-- ...dowPlayerAssignsHisMinionsGameProcess.java | 4 +-- 4 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java new file mode 100644 index 000000000..49eb48637 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SystemQueueAction.java @@ -0,0 +1,31 @@ +package com.gempukku.lotro.logic.actions; + +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.timing.Effect; + +public class SystemQueueAction extends AbstractCostToEffectAction { + @Override + public PhysicalCard getActionSource() { + return null; + } + + @Override + public String getText(LotroGame game) { + return null; + } + + @Override + public Effect nextEffect() { + if (!isCostFailed()) { + Effect cost = getNextCost(); + if (cost != null) + return cost; + + Effect effect = getNextEffect(); + if (effect != null) + return effect; + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TurnProcedure.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TurnProcedure.java index 9d6d25a07..c7499c7cc 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TurnProcedure.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TurnProcedure.java @@ -4,7 +4,7 @@ import com.gempukku.lotro.communication.UserFeedback; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.PlayOrder; -import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SystemQueueAction; import com.gempukku.lotro.logic.decisions.ActionSelectionDecision; import com.gempukku.lotro.logic.decisions.CardActionSelectionDecision; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; @@ -80,14 +80,14 @@ public class TurnProcedure { _checkedIsAboutToRequiredResponses = true; List requiredIsAboutToResponses = _game.getActionsEnvironment().getRequiredBeforeTriggers(_effect); if (requiredIsAboutToResponses.size() > 0) { - ActivateCardAction action = new ActivateCardAction(null); + SystemQueueAction action = new SystemQueueAction(); action.appendEffect(new PlayoutAllActionsIfEffectNotCancelledEffect(action, _effect, requiredIsAboutToResponses)); return new StackActionEffect(action); } } if (!_checkedIsAboutToOptionalResponses) { _checkedIsAboutToOptionalResponses = true; - ActivateCardAction action = new ActivateCardAction(null); + SystemQueueAction action = new SystemQueueAction(); action.appendEffect(new PlayoutOptionalBeforeResponsesEffect(action, new HashSet(), _game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_game.getGameState().getCurrentPlayerId(), true), 0, _effect)); return new StackActionEffect(action); } @@ -100,14 +100,14 @@ public class TurnProcedure { _checkedRequiredWhenResponses = true; List requiredResponses = _game.getActionsEnvironment().getRequiredAfterTriggers(_effectResults); if (requiredResponses.size() > 0) { - ActivateCardAction action = new ActivateCardAction(null); + SystemQueueAction action = new SystemQueueAction(); action.appendEffect(new PlayoutAllActionsIfEffectNotCancelledEffect(action, _effect, requiredResponses)); return new StackActionEffect(action); } } if (!_checkedOptionalWhenResponses) { _checkedOptionalWhenResponses = true; - ActivateCardAction action = new ActivateCardAction(null); + SystemQueueAction action = new SystemQueueAction(); Map> optionalAfterTriggers = new HashMap>(); for (String playerId : _game.getGameState().getPlayerOrder().getAllPlayers()) { @@ -127,13 +127,13 @@ public class TurnProcedure { } private class PlayoutOptionalBeforeResponsesEffect extends UnrespondableEffect { - private ActivateCardAction _action; + private SystemQueueAction _action; private Set _cardTriggersUsed; private PlayOrder _playOrder; private int _passCount; private Effect _effect; - private PlayoutOptionalBeforeResponsesEffect(ActivateCardAction action, Set cardTriggersUsed, PlayOrder playOrder, int passCount, Effect effect) { + private PlayoutOptionalBeforeResponsesEffect(SystemQueueAction action, Set cardTriggersUsed, PlayOrder playOrder, int passCount, Effect effect) { _action = action; _cardTriggersUsed = cardTriggersUsed; _playOrder = playOrder; @@ -184,14 +184,14 @@ public class TurnProcedure { } private class PlayoutOptionalAfterResponsesEffect extends UnrespondableEffect { - private ActivateCardAction _action; + private SystemQueueAction _action; private Map> _unplayedAfterTriggers; private PlayOrder _playOrder; private int _passCount; private Effect _effect; private EffectResult[] _effectResults; - private PlayoutOptionalAfterResponsesEffect(ActivateCardAction action, Map> unplayedAfterTriggers, PlayOrder playOrder, int passCount, Effect effect, EffectResult[] effectResults) { + private PlayoutOptionalAfterResponsesEffect(SystemQueueAction action, Map> unplayedAfterTriggers, PlayOrder playOrder, int passCount, Effect effect, EffectResult[] effectResults) { _action = action; _unplayedAfterTriggers = unplayedAfterTriggers; _playOrder = playOrder; @@ -228,7 +228,7 @@ public class TurnProcedure { if (action != null) { _game.getActionsEnvironment().addActionToStack(action); if (optionalAfterTriggers.contains(action)) - optionalAfterActions.remove(action); + optionalAfterTriggers.remove(action); _action.appendEffect(new PlayoutOptionalAfterResponsesEffect(_action, _unplayedAfterTriggers, _playOrder, 0, _effect, _effectResults)); } else { if ((_passCount + 1) < _playOrder.getPlayerCount()) { @@ -246,11 +246,11 @@ public class TurnProcedure { } private class PlayoutAllActionsIfEffectNotCancelledEffect extends UnrespondableEffect { - private ActivateCardAction _action; + private SystemQueueAction _action; private Effect _effect; private List _actions; - private PlayoutAllActionsIfEffectNotCancelledEffect(ActivateCardAction action, Effect effect, List actions) { + private PlayoutAllActionsIfEffectNotCancelledEffect(SystemQueueAction action, Effect effect, List actions) { _action = action; _effect = effect; _actions = actions; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java index afd5d1018..7e11fca58 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/FreePeoplePlayerAssignsMinionsGameProcess.java @@ -8,7 +8,7 @@ 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.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SystemQueueAction; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.decisions.PlayerAssignMinionsDecision; import com.gempukku.lotro.logic.effects.AssignmentPhaseEffect; @@ -77,7 +77,7 @@ public class FreePeoplePlayerAssignsMinionsGameProcess implements GameProcess { if (!_game.getModifiersQuerying().isValidAssignments(_game.getGameState(), Side.FREE_PEOPLE, assignments)) throw new DecisionResultInvalidException("Assignments are not valid for the effects affecting the cards"); - ActivateCardAction action = new ActivateCardAction(null); + SystemQueueAction action = new SystemQueueAction(); action.appendEffect( new AssignmentPhaseEffect(gameState.getCurrentPlayerId(), assignments, "Free People player assignments")); _game.getActionsEnvironment().addActionToStack(action); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java index 89cdc2777..be0e14864 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/assign/ShadowPlayerAssignsHisMinionsGameProcess.java @@ -9,7 +9,7 @@ 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.PlayOrder; -import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.actions.SystemQueueAction; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.decisions.PlayerAssignMinionsDecision; import com.gempukku.lotro.logic.effects.AssignmentPhaseEffect; @@ -68,7 +68,7 @@ public class ShadowPlayerAssignsHisMinionsGameProcess implements GameProcess { public void decisionMade(String result) throws DecisionResultInvalidException { Map> assignments = getAssignmentsBasedOnResponse(result); - ActivateCardAction action = new ActivateCardAction(null); + SystemQueueAction action = new SystemQueueAction(); action.appendEffect( new AssignmentPhaseEffect(_playerId, assignments, "Shadow player assignments"));