From 3cdacff6bb58d06700fcaa0ee7c5ffb823994d3e Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 24 Oct 2011 23:24:43 +0000 Subject: [PATCH] Card activation now has an animation. --- .../communication/GameStateListener.java | 4 ++- .../gempukku/lotro/game/state/GameEvent.java | 2 +- .../gempukku/lotro/game/state/GameState.java | 5 ++++ ...heringParticipantCommunicationChannel.java | 14 +++++---- .../logic/actions/ActivateCardAction.java | 1 + .../logic/actions/OptionalTriggerAction.java | 1 + .../logic/actions/RequiredTriggerAction.java | 1 + .../logic/effects/CardAffectsCardEffect.java | 29 ------------------- .../src/main/webapp/js/gameAnimations.js | 28 ++++++++++++++++++ .../src/main/webapp/js/gameUi.js | 2 ++ 10 files changed, 51 insertions(+), 36 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/CardAffectsCardEffect.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/communication/GameStateListener.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/communication/GameStateListener.java index 961573595..e03ade483 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/communication/GameStateListener.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/communication/GameStateListener.java @@ -43,9 +43,11 @@ public interface GameStateListener { public void setSite(PhysicalCard card); + public void sendGameStats(GameStats gameStats); + public void cardAffectedByCard(String playerPerforming, PhysicalCard card, Collection affectedCard); public void eventPlayed(PhysicalCard card); - public void sendGameStats(GameStats gameStats); + public void cardActivated(String playerPerforming, PhysicalCard card); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java index c4a918704..3f8a39a77 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameEvent.java @@ -18,7 +18,7 @@ public class GameEvent { AT, RT, M, W, GS, - CAC, EP + CAC, EP, CA } private String _message; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index ad1bda873..897b7ffea 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -319,6 +319,11 @@ public class GameState { listener.eventPlayed(card); } + public void activatedCard(String playerPerforming, PhysicalCard card) { + for (GameStateListener listener : getAllGameStateListeners()) + listener.cardActivated(playerPerforming, card); + } + public void setRingBearer(PhysicalCard card) { _ringBearers.put(card.getOwner(), card); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java index 469343187..a5db83bd9 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GatheringParticipantCommunicationChannel.java @@ -4,6 +4,7 @@ import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Token; import com.gempukku.lotro.communication.GameStateListener; import com.gempukku.lotro.game.PhysicalCard; +import static com.gempukku.lotro.game.state.GameEvent.Type.*; import com.gempukku.lotro.logic.timing.GameStats; import java.util.Collection; @@ -11,8 +12,6 @@ import java.util.Date; import java.util.LinkedList; import java.util.List; -import static com.gempukku.lotro.game.state.GameEvent.Type.*; - public class GatheringParticipantCommunicationChannel implements GameStateListener { private List _events = new LinkedList(); private String _self; @@ -123,9 +122,14 @@ public class GatheringParticipantCommunicationChannel implements GameStateListen _events.add(new GameEvent(PCIP).card(card).index(card.getBlueprint().getSiteNumber())); } + @Override + public void sendGameStats(GameStats gameStats) { + _events.add(new GameEvent(GS).gameStats(gameStats.makeACopy())); + } + @Override public void cardAffectedByCard(String playerPerforming, PhysicalCard card, Collection affectedCards) { - _events.add(new GameEvent(CAC).participantId(playerPerforming).card(card).otherCardIds(getCardIds(affectedCards))); + _events.add(new GameEvent(CAC).card(card).participantId(playerPerforming).otherCardIds(getCardIds(affectedCards))); } @Override @@ -134,8 +138,8 @@ public class GatheringParticipantCommunicationChannel implements GameStateListen } @Override - public void sendGameStats(GameStats gameStats) { - _events.add(new GameEvent(GS).gameStats(gameStats.makeACopy())); + public void cardActivated(String playerPerforming, PhysicalCard card) { + _events.add(new GameEvent(CA).card(card).participantId(playerPerforming)); } public List consumeGameEvents() { 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 5842d4881..9f01b50e2 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,6 +45,7 @@ public class ActivateCardAction extends AbstractCostToEffectAction { public Effect nextEffect(LotroGame game) { if (!_sentMessage && _physicalCard != null) { _sentMessage = true; + game.getGameState().activatedCard(_physicalCard.getOwner(), _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 22edb4891..7fc762736 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,6 +47,7 @@ public class OptionalTriggerAction extends AbstractCostToEffectAction { public Effect nextEffect(LotroGame game) { if (!_sentMessage && _physicalCard != null) { _sentMessage = true; + game.getGameState().activatedCard(_physicalCard.getOwner(), _physicalCard); return new SendMessageEffect(getMessage()); } 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 78e90f21d..d474676c4 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,6 +42,7 @@ public class RequiredTriggerAction extends AbstractCostToEffectAction { public Effect nextEffect(LotroGame game) { if (!_sentMessage && _physicalCard != null) { _sentMessage = true; + game.getGameState().activatedCard(null, _physicalCard); return new SendMessageEffect(getMessage()); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/CardAffectsCardEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/CardAffectsCardEffect.java deleted file mode 100644 index 4a289d7e0..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/CardAffectsCardEffect.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.gempukku.lotro.logic.effects; - -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.timing.UnrespondableEffect; - -import java.util.Collection; -import java.util.Collections; - -public class CardAffectsCardEffect extends UnrespondableEffect { - private String _playerPerforming; - private PhysicalCard _card; - private Collection _affectedCards; - - public CardAffectsCardEffect(String playerPerforming, PhysicalCard card, PhysicalCard affectedCard) { - this(playerPerforming, card, Collections.singleton(affectedCard)); - } - - public CardAffectsCardEffect(String playerPerforming, PhysicalCard card, Collection affectedCards) { - _playerPerforming = playerPerforming; - _card = card; - _affectedCards = affectedCards; - } - - @Override - protected void doPlayEffect(LotroGame game) { - game.getGameState().cardAffectsCard(_playerPerforming, _card, _affectedCards); - } -} 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 1ed77d25e..846489e75 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 @@ -3,11 +3,39 @@ var GameAnimations = Class.extend({ playEventDuration: 1500, putCardIntoPlayDuration: 1500, cardAffectsCardDuration: 1200, + cardActivatedDuration: 1200, init: function(gameUI) { this.game = gameUI; }, + cardActivated: function(element, animate) { + if (animate) { + var that = this; + + var participantId = element.getAttribute("participantId"); + var cardId = element.getAttribute("cardId"); + + // Play-out game event animation only if it's not the player who initiated it + if (this.game.spectatorMode || (participantId != this.game.bottomPlayerId)) { + var cardDiv = $(".card:cardId(" + cardId + ")"); + if (cardDiv != null) { + $("#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); + setTimeout(next, that.cardActivatedDuration); + }); + } + } + } + }, + eventPlayed: function(element, animate) { if (animate) { var that = this; diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameUi.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameUi.js index ce1570d23..28d49c901 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameUi.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gameUi.js @@ -540,6 +540,8 @@ var GempLotrGameUI = Class.extend({ this.animations.cardAffectsCard(gameEvent, animate); } else if (eventType == "EP") { this.animations.eventPlayed(gameEvent, animate); + } else if (eventType == "CA") { + this.animations.cardActivated(gameEvent, animate); } }