From e0196113685b9cbe2041fff439f1ed2074ca6274 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 25 Oct 2011 00:20:10 +0000 Subject: [PATCH] - Added animations for activating a card and removing a card form play. --- .../actions/DefaultActionsEnvironment.java | 13 +++++++- .../actions/AbstractCostToEffectAction.java | 11 +++++++ .../logic/actions/ActivateCardAction.java | 2 +- .../logic/actions/OptionalTriggerAction.java | 2 +- .../lotro/logic/actions/PreventSubAction.java | 10 ++++++ .../logic/actions/RequiredTriggerAction.java | 2 +- .../lotro/logic/actions/SubAction.java | 10 ++++++ .../gempukku/lotro/logic/timing/Action.java | 6 +++- .../actions/PlayerReconcilesAction.java | 9 ++++++ .../timing/actions/ResolveSkirmishAction.java | 9 ++++++ .../timing/actions/SimpleEffectAction.java | 9 ++++++ .../logic/timing/actions/SystemAction.java | 9 ++++++ .../gemp-lotr-web/src/main/webapp/game.html | 4 +++ .../src/main/webapp/includes/changeLog.html | 1 + .../src/main/webapp/js/gameAnimations.js | 32 ++++++++++++++----- 15 files changed, 116 insertions(+), 13 deletions(-) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java index bd3037a6c..1f088cf1d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java @@ -104,7 +104,11 @@ public class DefaultActionsEnvironment implements ActionsEnvironment { _lotroGame.getGameState().iterateActiveTextCards(playerId, gatherActions); - return gatherActions.getActions(); + List actionList = gatherActions.getActions(); + for (Action action : actionList) + action.setPerformingPlayer(playerId); + + return actionList; } @Override @@ -116,6 +120,7 @@ public class DefaultActionsEnvironment implements ActionsEnvironment { List result = new LinkedList(); for (Action action : gatherActions.getActions()) { + action.setPerformingPlayer(playerId); if (_lotroGame.getModifiersQuerying().canPlayAction(_lotroGame.getGameState(), playerId, action)) result.add(action); } @@ -158,6 +163,9 @@ public class DefaultActionsEnvironment implements ActionsEnvironment { } } + for (Action gatheredAction : gatheredActions) + gatheredAction.setPerformingPlayer(playerId); + return gatheredActions; } @@ -170,6 +178,7 @@ public class DefaultActionsEnvironment implements ActionsEnvironment { List result = new LinkedList(); for (Action action : gatherAfterActions.getActions()) { + action.setPerformingPlayer(playerId); if (_lotroGame.getModifiersQuerying().canPlayAction(_lotroGame.getGameState(), playerId, action)) result.add(action); } @@ -189,12 +198,14 @@ public class DefaultActionsEnvironment implements ActionsEnvironment { for (Action action : visitor.getActions()) { action.setActionTimeword(_lotroGame.getGameState().getCurrentPhase()); + action.setPerformingPlayer(playerId); if (_lotroGame.getModifiersQuerying().canPlayAction(_lotroGame.getGameState(), playerId, action)) playableActions.add(action); } for (Action action : stackedVisitor.getActions()) { action.setActionTimeword(_lotroGame.getGameState().getCurrentPhase()); + action.setPerformingPlayer(playerId); if (_lotroGame.getModifiersQuerying().canPlayAction(_lotroGame.getGameState(), playerId, action)) playableActions.add(action); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java index b571f620c..106e92cb8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/AbstractCostToEffectAction.java @@ -13,6 +13,7 @@ public abstract class AbstractCostToEffectAction implements CostToEffectAction { private LinkedList _effects = new LinkedList(); private Phase _actionTimeword; + private String _performingPlayer; @Override public Phase getActionTimeword() { @@ -24,6 +25,16 @@ public abstract class AbstractCostToEffectAction implements CostToEffectAction { _actionTimeword = phase; } + @Override + public void setPerformingPlayer(String playerId) { + _performingPlayer = playerId; + } + + @Override + public String getPerformingPlayer() { + return _performingPlayer; + } + @Override public final void appendCost(Effect cost) { _costs.add(cost); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java index 9f01b50e2..230282e3c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/ActivateCardAction.java @@ -45,7 +45,7 @@ public class ActivateCardAction extends AbstractCostToEffectAction { public Effect nextEffect(LotroGame game) { if (!_sentMessage && _physicalCard != null) { _sentMessage = true; - game.getGameState().activatedCard(_physicalCard.getOwner(), _physicalCard); + game.getGameState().activatedCard(getPerformingPlayer(), _physicalCard); return new SendMessageEffect(getMessage()); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java index 7fc762736..e1b3b0375 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/OptionalTriggerAction.java @@ -47,7 +47,7 @@ public class OptionalTriggerAction extends AbstractCostToEffectAction { public Effect nextEffect(LotroGame game) { if (!_sentMessage && _physicalCard != null) { _sentMessage = true; - game.getGameState().activatedCard(_physicalCard.getOwner(), _physicalCard); + game.getGameState().activatedCard(getPerformingPlayer(), _physicalCard); return new SendMessageEffect(getMessage()); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java index 25463814f..94858d1f5 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/PreventSubAction.java @@ -50,6 +50,16 @@ public class PreventSubAction implements Action { _action.setActionTimeword(phase); } + @Override + public String getPerformingPlayer() { + return _action.getPerformingPlayer(); + } + + @Override + public void setPerformingPlayer(String playerId) { + _action.setPerformingPlayer(playerId); + } + @Override public String getText(LotroGame game) { return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java index d474676c4..d6b07a2f0 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/RequiredTriggerAction.java @@ -42,7 +42,7 @@ public class RequiredTriggerAction extends AbstractCostToEffectAction { public Effect nextEffect(LotroGame game) { if (!_sentMessage && _physicalCard != null) { _sentMessage = true; - game.getGameState().activatedCard(null, _physicalCard); + game.getGameState().activatedCard(getPerformingPlayer(), _physicalCard); return new SendMessageEffect(getMessage()); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java index 92714c2f6..790ee9002 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/actions/SubAction.java @@ -40,6 +40,16 @@ public class SubAction implements Action { _action.setActionTimeword(phase); } + @Override + public String getPerformingPlayer() { + return _action.getPerformingPlayer(); + } + + @Override + public void setPerformingPlayer(String playerId) { + _action.setPerformingPlayer(playerId); + } + @Override public String getText(LotroGame game) { return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java index ccf94d784..4fb8b3c71 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Action.java @@ -7,9 +7,13 @@ import com.gempukku.lotro.game.state.LotroGame; public interface Action { public PhysicalCard getActionSource(); + public void setActionTimeword(Phase phase); + public PhysicalCard getActionAttachedToCard(); - public void setActionTimeword(Phase phase); + public void setPerformingPlayer(String playerId); + + public String getPerformingPlayer(); public Phase getActionTimeword(); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java index a139b130e..4b51a5304 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/PlayerReconcilesAction.java @@ -37,6 +37,15 @@ public class PlayerReconcilesAction implements Action { public void setActionTimeword(Phase phase) { } + @Override + public String getPerformingPlayer() { + return null; + } + + @Override + public void setPerformingPlayer(String playerId) { + } + @Override public PhysicalCard getActionSource() { return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java index c1dc81763..72cf22c4f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/ResolveSkirmishAction.java @@ -37,6 +37,15 @@ public class ResolveSkirmishAction implements Action { public void setActionTimeword(Phase phase) { } + @Override + public String getPerformingPlayer() { + return null; + } + + @Override + public void setPerformingPlayer(String playerId) { + } + @Override public PhysicalCard getActionSource() { return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java index 01e07b8fa..5b01767ed 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SimpleEffectAction.java @@ -24,6 +24,15 @@ public class SimpleEffectAction implements Action { public void setActionTimeword(Phase phase) { } + @Override + public String getPerformingPlayer() { + return null; + } + + @Override + public void setPerformingPlayer(String playerId) { + } + @Override public PhysicalCard getActionSource() { return null; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java index daa311cd0..5f5f07f8b 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/actions/SystemAction.java @@ -25,6 +25,15 @@ public abstract class SystemAction implements Action { public void setActionTimeword(Phase phase) { } + @Override + public void setPerformingPlayer(String playerId) { + } + + @Override + public String getPerformingPlayer() { + return null; + } + @Override public String getText(LotroGame game) { throw new UnsupportedOperationException("System action has no text"); diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/game.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/game.html index 2050f1c7f..ab3768713 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/game.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/game.html @@ -15,6 +15,10 @@ border: solid #000000; } + .highlightBorderOverlay { + border: solid #ffffff; + } + .foilOverlay { opacity: 0.2; } diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index b27d5400b..3b183756b 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -10,6 +10,7 @@ a site. - Added multi-deck support (ugly but hopefully working). - "We Are the Fighting Uruk-hai" correctly adds bonuses to the Uruk-hai. - Liberating a site should no longer freeze the game. +- Added animations for activating a card and removing a card form play. 23 Oct. 2011 - "Hornburg Causeway" now adds +2 to archery for each unbound companion over 3, instead of +1. diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameAnimations.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameAnimations.js index 846489e75..9a870cfff 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameAnimations.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameAnimations.js @@ -4,6 +4,7 @@ var GameAnimations = Class.extend({ putCardIntoPlayDuration: 1500, cardAffectsCardDuration: 1200, cardActivatedDuration: 1200, + removeCardFromPlayDuration: 600, init: function(gameUI) { this.game = gameUI; @@ -23,12 +24,12 @@ var GameAnimations = Class.extend({ $("#main").queue( function(next) { $(".borderOverlay", cardDiv) - .animate({borderColor: "#ffffff"}, that.cardActivatedDuration / 6) - .animate({borderColor: "#000000"}, that.cardActivatedDuration / 6) - .animate({borderColor: "#ffffff"}, that.cardActivatedDuration / 6) - .animate({borderColor: "#000000"}, that.cardActivatedDuration / 6) - .animate({borderColor: "#ffffff"}, that.cardActivatedDuration / 6) - .animate({borderColor: "#000000"}, that.cardActivatedDuration / 6); + .switchClass("borderOverlay", "highlightBorderOverlay", that.cardActivatedDuration / 6) + .switchClass("highlightBorderOverlay", "borderOverlay", that.cardActivatedDuration / 6) + .switchClass("borderOverlay", "highlightBorderOverlay", that.cardActivatedDuration / 6) + .switchClass("highlightBorderOverlay", "borderOverlay", that.cardActivatedDuration / 6) + .switchClass("borderOverlay", "highlightBorderOverlay", that.cardActivatedDuration / 6) + .switchClass("highlightBorderOverlay", "borderOverlay", that.cardActivatedDuration / 6); setTimeout(next, that.cardActivatedDuration); }); } @@ -205,6 +206,8 @@ var GameAnimations = Class.extend({ targetCardData.attachedCards.push(cardDiv); } + that.game.layoutUI(false); + next(); }); @@ -214,8 +217,6 @@ var GameAnimations = Class.extend({ $("#main").queue( function(next) { - that.game.layoutUI(false); - var cardDiv = $(".card:cardId(" + cardId + ")"); var card = cardDiv.data("card"); var pos = cardDiv.position(); @@ -340,6 +341,21 @@ var GameAnimations = Class.extend({ removeCardFromPlay: function(element, animate) { var that = this; + if (animate) { + $("#main").queue( + function(next) { + var cardRemovedIds = element.getAttribute("otherCardIds").split(","); + $(".card:cardId(" + cardRemovedIds + ")") + .animate( + { + opacity: 0}, + { + duration: that.removeCardFromPlayDuration, + easing: "easeOutQuart", + queue: false}); + setTimeout(next, that.removeCardFromPlayDuration); + }); + } $("#main").queue( function(next) { var cardRemovedIds = element.getAttribute("otherCardIds").split(",");