Moving cards possible (transfer possession and the like).
This commit is contained in:
@@ -9,6 +9,8 @@ import java.util.List;
|
||||
public interface GameStateListener {
|
||||
public void cardCreated(PhysicalCard card);
|
||||
|
||||
public void cardMoved(PhysicalCard card);
|
||||
|
||||
public void cardRemoved(PhysicalCard card);
|
||||
|
||||
public void setPlayerOrder(List<String> playerIds);
|
||||
|
||||
@@ -180,6 +180,8 @@ public class GameState {
|
||||
addCardToZone(card, Zone.ATTACHED);
|
||||
}
|
||||
((PhysicalCardImpl) card).attachTo((PhysicalCardImpl) transferTo);
|
||||
for (GameStateListener listener : getAllGameStateListeners())
|
||||
listener.cardMoved(card);
|
||||
}
|
||||
|
||||
public void attachCard(PhysicalCard card, PhysicalCard attachTo) {
|
||||
|
||||
@@ -11,7 +11,7 @@ import java.util.List;
|
||||
public class GameEvent {
|
||||
public enum Type {
|
||||
PARTICIPANT, GAME_PHASE_CHANGE, TURN_CHANGE, PLAYER_POSITION, TWILIGHT_POOL,
|
||||
PUT_CARD_IN_PLAY, REMOVE_CARD_FROM_PLAY, ATTACH_CARD,
|
||||
PUT_CARD_IN_PLAY, MOVE_CARD_IN_PLAY, REMOVE_CARD_FROM_PLAY, ATTACH_CARD,
|
||||
ADD_ASSIGNMENT, REMOVE_ASSIGNMENT,
|
||||
START_SKIRMISH, END_SKIRMISH,
|
||||
ADD_TOKENS, REMOVE_TOKENS
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.gempukku.lotro;
|
||||
|
||||
import static com.gempukku.lotro.GameEvent.Type.*;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Token;
|
||||
import com.gempukku.lotro.communication.GameStateListener;
|
||||
@@ -9,6 +8,8 @@ import com.gempukku.lotro.game.PhysicalCard;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.gempukku.lotro.GameEvent.Type.*;
|
||||
|
||||
public class GatheringParticipantCommunicationChannel implements GameStateListener {
|
||||
private List<GameEvent> _events = new LinkedList<GameEvent>();
|
||||
private String _self;
|
||||
@@ -62,6 +63,11 @@ public class GatheringParticipantCommunicationChannel implements GameStateListen
|
||||
_events.add(new GameEvent(PUT_CARD_IN_PLAY).card(card));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cardMoved(PhysicalCard card) {
|
||||
_events.add(new GameEvent(MOVE_CARD_IN_PLAY).card(card));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cardRemoved(PhysicalCard card) {
|
||||
_events.add(new GameEvent(REMOVE_CARD_FROM_PLAY).card(card));
|
||||
|
||||
@@ -275,6 +275,8 @@ var GempLotrGameUI = Class.extend({
|
||||
var eventType = gameEvent.getAttribute("type");
|
||||
if (eventType == "PUT_CARD_IN_PLAY") {
|
||||
this.putCardInPlay(gameEvent);
|
||||
} else if (eventType == "MOVE_CARD_IN_PLAY") {
|
||||
this.moveCardInPlay(gameEvent);
|
||||
} else if (eventType == "PARTICIPANT") {
|
||||
this.participant(gameEvent);
|
||||
} else if (eventType == "REMOVE_CARD_FROM_PLAY") {
|
||||
@@ -437,6 +439,38 @@ var GempLotrGameUI = Class.extend({
|
||||
}
|
||||
},
|
||||
|
||||
moveCardInPlay: function(element) {
|
||||
var cardId = element.getAttribute("cardId");
|
||||
var zone = element.getAttribute("zone");
|
||||
var targetCardId = element.getAttribute("targetCardId");
|
||||
|
||||
// Remove from where it was already attached
|
||||
$(".card").each(
|
||||
function() {
|
||||
var cardData = $(this).data("card");
|
||||
var index = -1;
|
||||
for (var i = 0; i < cardData.attachedCards.length; i++)
|
||||
if (cardData.attachedCards[i].data("card").cardId == cardId) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
if (index != -1)
|
||||
cardData.attachedCards.splice(index, 1);
|
||||
}
|
||||
);
|
||||
|
||||
var card = $(".card:cardId(" + cardId + ")");
|
||||
var cardData = card.data("card");
|
||||
// move to new zone
|
||||
cardData.zone = zone;
|
||||
|
||||
if (targetCardId != null) {
|
||||
// attach to new card if it's attached
|
||||
var targetCardData = $(".card:cardId(" + targetCardId + ")").data("card");
|
||||
targetCardData.attachedCards.push(cardDiv);
|
||||
}
|
||||
},
|
||||
|
||||
layoutZones: function() {
|
||||
this.advPathGroup.layoutCards();
|
||||
this.charactersPlayer.layoutCards();
|
||||
|
||||
Reference in New Issue
Block a user