From 98bbb068a736bab79fddd4a8952f4967cf8948c6 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 14 Sep 2011 11:21:12 +0000 Subject: [PATCH] A bit of working with how the actions are played and messages being displayed. --- .../lotro/logic/effects/TriggeringEffect.java | 6 ++++-- .../lotro/logic/timing/TurnProcedure.java | 20 ++++++++++--------- .../processes/turn/EndOfTurnGameProcess.java | 2 +- .../turn/StartOfTurnGameProcess.java | 2 +- .../turn/general/EndOfPhaseGameProcess.java | 2 +- .../general/SimpleTriggeringGameProcess.java | 2 +- .../turn/general/StartOfPhaseGameProcess.java | 2 +- .../com/gempukku/lotro/LotroGameMediator.java | 4 ++-- .../game/ParticipantCommunicationVisitor.java | 3 +-- .../gempukku/lotro/server/ServerResource.java | 16 +++++---------- 10 files changed, 28 insertions(+), 31 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/TriggeringEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/TriggeringEffect.java index 442a5f486..90da1bbde 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/TriggeringEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/TriggeringEffect.java @@ -6,9 +6,11 @@ import com.gempukku.lotro.logic.timing.EffectResult; public class TriggeringEffect extends AbstractEffect { private EffectResult _effectResult; + private String _text; - public TriggeringEffect(EffectResult effectResult) { + public TriggeringEffect(EffectResult effectResult, String text) { _effectResult = effectResult; + _text = text; } @Override @@ -18,7 +20,7 @@ public class TriggeringEffect extends AbstractEffect { @Override public String getText() { - return null; + return _text; } @Override 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 5c2241839..03cb3faa5 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 @@ -47,7 +47,7 @@ public class TurnProcedure { } else { Effect effect = _actionStack.getNextEffect(); if (effect != null) { - if (effect instanceof UnrespondableEffect) { + if (effect.getType() == null) { if (effect.canPlayEffect(_game)) effect.playEffect(_game); else @@ -134,7 +134,7 @@ public class TurnProcedure { Map> optionalWhenResponses = _game.getActionsEnvironment().getOptionalAfterTriggers(_game.getGameState().getPlayerOrder().getAllPlayers(), _effectResult); DefaultCostToEffectAction action = new DefaultCostToEffectAction(null, null, null); action.addEffect( - new PlayoutOptionalAfterResponsesEffect(action, optionalWhenResponses, _game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_game.getGameState().getCurrentPlayerId(), true), 0, _effectResult)); + new PlayoutOptionalAfterResponsesEffect(action, optionalWhenResponses, _game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_game.getGameState().getCurrentPlayerId(), true), 0, _effect, _effectResult)); return new StackActionEffect(action); } } @@ -167,7 +167,7 @@ public class TurnProcedure { if (possibleActions.size() > 0) { _game.getUserFeedback().sendAwaitingDecision(activePlayer, - new CardActionSelectionDecision(1, "Choose action to play or DONE", possibleActions, true) { + new CardActionSelectionDecision(1, _effect.getText() + " - Optional \"is about to\" responses", possibleActions, true) { @Override public void decisionMade(String result) throws DecisionResultInvalidException { Action action = getSelectedAction(result); @@ -196,13 +196,15 @@ public class TurnProcedure { private Map> _actionMap = new HashMap>(); private PlayOrder _playOrder; private int _passCount; + private Effect _effect; private EffectResult _effectResult; - private PlayoutOptionalAfterResponsesEffect(DefaultCostToEffectAction action, Map> actionMap, PlayOrder playOrder, int passCount, EffectResult effectResult) { + private PlayoutOptionalAfterResponsesEffect(DefaultCostToEffectAction action, Map> actionMap, PlayOrder playOrder, int passCount, Effect effect, EffectResult effectResult) { _action = action; _actionMap = actionMap; _playOrder = playOrder; _passCount = passCount; + _effect = effect; _effectResult = effectResult; } @@ -214,24 +216,24 @@ public class TurnProcedure { if (possibleActions.size() > 0) { _game.getUserFeedback().sendAwaitingDecision(activePlayer, - new CardActionSelectionDecision(1, "Choose action to play or DONE", possibleActions, true) { + new CardActionSelectionDecision(1, _effect.getText() + " - optional \"when\" responses", possibleActions, true) { @Override public void decisionMade(String result) throws DecisionResultInvalidException { Action action = getSelectedAction(result); if (action != null) { _game.getActionsEnvironment().addActionToStack(action); _actionMap.get(activePlayer).remove(action); - _action.addEffect(new PlayoutOptionalAfterResponsesEffect(_action, _actionMap, _playOrder, 0, _effectResult)); + _action.addEffect(new PlayoutOptionalAfterResponsesEffect(_action, _actionMap, _playOrder, 0, _effect, _effectResult)); } else { if ((_passCount + 1) < _playOrder.getPlayerCount()) { - _action.addEffect(new PlayoutOptionalAfterResponsesEffect(_action, _actionMap, _playOrder, _passCount + 1, _effectResult)); + _action.addEffect(new PlayoutOptionalAfterResponsesEffect(_action, _actionMap, _playOrder, _passCount + 1, _effect, _effectResult)); } } } }); } else { if ((_passCount + 1) < _playOrder.getPlayerCount()) { - _action.addEffect(new PlayoutOptionalAfterResponsesEffect(_action, _actionMap, _playOrder, _passCount + 1, _effectResult)); + _action.addEffect(new PlayoutOptionalAfterResponsesEffect(_action, _actionMap, _playOrder, _passCount + 1, _effect, _effectResult)); } } } @@ -255,7 +257,7 @@ public class TurnProcedure { _game.getActionsEnvironment().addActionToStack(_actions.get(0)); } else { _game.getUserFeedback().sendAwaitingDecision(_game.getGameState().getCurrentPlayerId(), - new ActionSelectionDecision(1, "Choose action to play now", _actions) { + new ActionSelectionDecision(1, _effect.getText() + " - required responses", _actions) { @Override public void decisionMade(String result) throws DecisionResultInvalidException { Action action = getSelectedAction(result); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/EndOfTurnGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/EndOfTurnGameProcess.java index 2a39d3337..e5d40175b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/EndOfTurnGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/EndOfTurnGameProcess.java @@ -16,7 +16,7 @@ public class EndOfTurnGameProcess implements GameProcess { @Override public void process() { - _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new EndOfTurnResult()), "End of turn")); + _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new EndOfTurnResult(), "End of turn"), "End of turn")); _game.getGameState().stopAffectingCardsForCurrentPlayer(); _game.getGameState().setCurrentPhase(Phase.BETWEEN_TURNS); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/StartOfTurnGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/StartOfTurnGameProcess.java index f4ff0dbf6..7c12977fe 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/StartOfTurnGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/StartOfTurnGameProcess.java @@ -23,7 +23,7 @@ public class StartOfTurnGameProcess implements GameProcess { _game.getGameState().startPlayerTurn(nextPlayer); _game.getGameState().startAffectingCardsForCurrentPlayer(_game.getModifiersEnvironment()); - _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new StartOfTurnResult()), "Start of turn")); + _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new StartOfTurnResult(), "Start of turn"), "Start of turn")); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/EndOfPhaseGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/EndOfPhaseGameProcess.java index 93d8490f6..86f944d1d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/EndOfPhaseGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/EndOfPhaseGameProcess.java @@ -20,7 +20,7 @@ public class EndOfPhaseGameProcess implements GameProcess { @Override public void process() { - _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new EndOfPhaseResult(_phase)), "End of " + _phase + " phase")); + _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new EndOfPhaseResult(_phase), "End of " + _phase + " phase"), "End of " + _phase + " phase")); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/SimpleTriggeringGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/SimpleTriggeringGameProcess.java index 3aa9662ce..5e6b90319 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/SimpleTriggeringGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/SimpleTriggeringGameProcess.java @@ -21,7 +21,7 @@ public class SimpleTriggeringGameProcess implements GameProcess { @Override public void process() { - _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(_effectResult), _text)); + _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(_effectResult, _text), _text)); } @Override diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/StartOfPhaseGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/StartOfPhaseGameProcess.java index aae8eafec..2f290e8df 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/StartOfPhaseGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/turn/general/StartOfPhaseGameProcess.java @@ -21,7 +21,7 @@ public class StartOfPhaseGameProcess implements GameProcess { @Override public void process() { _game.getGameState().setCurrentPhase(_phase); - _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new StartOfPhaseResult(_phase)), "Start of " + _phase + " phase")); + _game.getActionsEnvironment().addActionToStack(new SimpleEffectAction(new TriggeringEffect(new StartOfPhaseResult(_phase), "Start of " + _phase + " phase"), "Start of " + _phase + " phase")); } @Override diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/LotroGameMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/LotroGameMediator.java index 466c64c7b..33eb01e39 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/LotroGameMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/LotroGameMediator.java @@ -144,7 +144,7 @@ public class LotroGameMediator { visitor.visitWarning(warning); AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(participantId); if (awaitingDecision != null) - visitor.visitAwaitingDecision(_lotroGame.getActionStack().getTopmostAction(), awaitingDecision); + visitor.visitAwaitingDecision(awaitingDecision); Map secondsLeft = new HashMap(); for (Map.Entry playerClock : _playerClocks.entrySet()) { @@ -171,7 +171,7 @@ public class LotroGameMediator { visitor.visitWarning(warning); AwaitingDecision awaitingDecision = _userFeedback.getAwaitingDecision(participantId); if (awaitingDecision != null) - visitor.visitAwaitingDecision(_lotroGame.getActionStack().getTopmostAction(), awaitingDecision); + visitor.visitAwaitingDecision(awaitingDecision); Map secondsLeft = new HashMap(); for (Map.Entry playerClock : _playerClocks.entrySet()) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java index 31697a846..036196fdd 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/ParticipantCommunicationVisitor.java @@ -2,7 +2,6 @@ package com.gempukku.lotro.game; import com.gempukku.lotro.GameEvent; import com.gempukku.lotro.logic.decisions.AwaitingDecision; -import com.gempukku.lotro.logic.timing.Action; import java.util.Map; @@ -11,7 +10,7 @@ public interface ParticipantCommunicationVisitor { public void visitWarning(String warning); - public void visitAwaitingDecision(Action currentAction, AwaitingDecision awaitingDecision); + public void visitAwaitingDecision(AwaitingDecision awaitingDecision); public void visitGameEvent(GameEvent gameEvent); } diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java index 7d6de9171..3d5429e11 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java @@ -15,7 +15,6 @@ import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.DefaultLotroFormat; import com.gempukku.lotro.game.ParticipantCommunicationVisitor; import com.gempukku.lotro.logic.decisions.AwaitingDecision; -import com.gempukku.lotro.logic.timing.Action; import com.sun.jersey.spi.resource.Singleton; import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; @@ -417,8 +416,8 @@ public class ServerResource { } @Override - public void visitAwaitingDecision(Action currentAction, AwaitingDecision awaitingDecision) { - _element.appendChild(serializeDecision(_doc, currentAction, awaitingDecision)); + public void visitAwaitingDecision(AwaitingDecision awaitingDecision) { + _element.appendChild(serializeDecision(_doc, awaitingDecision)); } @Override @@ -439,17 +438,12 @@ public class ServerResource { return clocks; } - private Node serializeDecision(Document doc, Action currentAction, AwaitingDecision decision) { + private Node serializeDecision(Document doc, AwaitingDecision decision) { Element decisionElem = doc.createElement("decision"); decisionElem.setAttribute("id", String.valueOf(decision.getAwaitingDecisionId())); decisionElem.setAttribute("type", decision.getDecisionType().name()); - if (decision.getText() != null) { - String text = ""; - if (currentAction != null) - text += currentAction.getText() + ": "; - text += decision.getText(); - decisionElem.setAttribute("text", text); - } + if (decision.getText() != null) + decisionElem.setAttribute("text", decision.getText()); for (Map.Entry paramEntry : decision.getDecisionParameters().entrySet()) { if (paramEntry.getValue() instanceof String) { Element decisionParam = doc.createElement("parameter");