From d175105f85858c732169a607f9cbaef16e677190 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sun, 18 Sep 2011 20:39:30 +0000 Subject: [PATCH] Winning when getting to site 9 should work fine now. --- .../gempukku/lotro/game/state/LotroGame.java | 2 +- .../lotro/logic/timing/DefaultLotroGame.java | 8 +---- .../gempukku/lotro/logic/timing/RuleSet.java | 2 ++ .../lotro/logic/timing/TurnProcedure.java | 2 +- .../logic/timing/rules/WinConditionRule.java | 33 +++++++++++++++++++ 5 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/WinConditionRule.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java index f050a490e..714bc77a9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java @@ -16,7 +16,7 @@ public interface LotroGame { public UserFeedback getUserFeedback(); - public void checkWinLoseConditions(); + public void checkLoseConditions(); public void playerWon(String currentPlayerId, String reason); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java index e23981e1e..28d4921b6 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java @@ -142,7 +142,7 @@ public class DefaultLotroGame implements LotroGame { } @Override - public void checkWinLoseConditions() { + public void checkLoseConditions() { GameState gameState = getGameState(); if (gameState != null && gameState.getCurrentPhase() != Phase.GAME_SETUP) { // Ring-bearer death @@ -158,12 +158,6 @@ public class DefaultLotroGame implements LotroGame { return; } } - // Fellowship in regroup at the last site - if (getGameState().getCurrentPhase() == Phase.REGROUP - && getGameState().getCurrentSiteNumber() == 9) { - playerWon(getGameState().getCurrentPlayerId(), "Surviving to Regroup phase on site 9"); - return; - } } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java index 5d848d4fb..f0748b39d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java @@ -26,5 +26,7 @@ public class RuleSet { new CharacterDeathRule(_actionsEnvironment).applyRule(); new SanctuaryRule(_actionsEnvironment).applyRule(); + + new WinConditionRule(_actionsEnvironment).applyRule(); } } 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 773cab870..d45795e56 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 @@ -57,7 +57,7 @@ public class TurnProcedure { } } } - _game.checkWinLoseConditions(); + _game.checkLoseConditions(); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/WinConditionRule.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/WinConditionRule.java new file mode 100644 index 000000000..6a9e5bf48 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/WinConditionRule.java @@ -0,0 +1,33 @@ +package com.gempukku.lotro.logic.timing.rules; + +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.game.AbstractActionProxy; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.game.state.actions.DefaultActionsEnvironment; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.List; + +public class WinConditionRule { + private DefaultActionsEnvironment _actionsEnvironment; + + public WinConditionRule(DefaultActionsEnvironment actionsEnvironment) { + _actionsEnvironment = actionsEnvironment; + } + + public void applyRule() { + _actionsEnvironment.addAlwaysOnActionProxy( + new AbstractActionProxy() { + @Override + public List getRequiredBeforeTriggers(LotroGame lotroGame, Effect effect) { + if (effect.getType() == EffectResult.Type.START_OF_PHASE + && lotroGame.getGameState().getCurrentPhase() == Phase.REGROUP + && lotroGame.getGameState().getCurrentSiteNumber() == 9) + lotroGame.playerWon(lotroGame.getGameState().getCurrentPlayerId(), "Surviving to Regroup phase on site 9"); + return null; + } + }); + } +}