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 interface GameStateListener {
|
||||||
public void cardCreated(PhysicalCard card);
|
public void cardCreated(PhysicalCard card);
|
||||||
|
|
||||||
|
public void cardMoved(PhysicalCard card);
|
||||||
|
|
||||||
public void cardRemoved(PhysicalCard card);
|
public void cardRemoved(PhysicalCard card);
|
||||||
|
|
||||||
public void setPlayerOrder(List<String> playerIds);
|
public void setPlayerOrder(List<String> playerIds);
|
||||||
|
|||||||
@@ -180,6 +180,8 @@ public class GameState {
|
|||||||
addCardToZone(card, Zone.ATTACHED);
|
addCardToZone(card, Zone.ATTACHED);
|
||||||
}
|
}
|
||||||
((PhysicalCardImpl) card).attachTo((PhysicalCardImpl) transferTo);
|
((PhysicalCardImpl) card).attachTo((PhysicalCardImpl) transferTo);
|
||||||
|
for (GameStateListener listener : getAllGameStateListeners())
|
||||||
|
listener.cardMoved(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void attachCard(PhysicalCard card, PhysicalCard attachTo) {
|
public void attachCard(PhysicalCard card, PhysicalCard attachTo) {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import java.util.List;
|
|||||||
public class GameEvent {
|
public class GameEvent {
|
||||||
public enum Type {
|
public enum Type {
|
||||||
PARTICIPANT, GAME_PHASE_CHANGE, TURN_CHANGE, PLAYER_POSITION, TWILIGHT_POOL,
|
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,
|
ADD_ASSIGNMENT, REMOVE_ASSIGNMENT,
|
||||||
START_SKIRMISH, END_SKIRMISH,
|
START_SKIRMISH, END_SKIRMISH,
|
||||||
ADD_TOKENS, REMOVE_TOKENS
|
ADD_TOKENS, REMOVE_TOKENS
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.gempukku.lotro;
|
package com.gempukku.lotro;
|
||||||
|
|
||||||
import static com.gempukku.lotro.GameEvent.Type.*;
|
|
||||||
import com.gempukku.lotro.common.Phase;
|
import com.gempukku.lotro.common.Phase;
|
||||||
import com.gempukku.lotro.common.Token;
|
import com.gempukku.lotro.common.Token;
|
||||||
import com.gempukku.lotro.communication.GameStateListener;
|
import com.gempukku.lotro.communication.GameStateListener;
|
||||||
@@ -9,6 +8,8 @@ import com.gempukku.lotro.game.PhysicalCard;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.gempukku.lotro.GameEvent.Type.*;
|
||||||
|
|
||||||
public class GatheringParticipantCommunicationChannel implements GameStateListener {
|
public class GatheringParticipantCommunicationChannel implements GameStateListener {
|
||||||
private List<GameEvent> _events = new LinkedList<GameEvent>();
|
private List<GameEvent> _events = new LinkedList<GameEvent>();
|
||||||
private String _self;
|
private String _self;
|
||||||
@@ -62,6 +63,11 @@ public class GatheringParticipantCommunicationChannel implements GameStateListen
|
|||||||
_events.add(new GameEvent(PUT_CARD_IN_PLAY).card(card));
|
_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
|
@Override
|
||||||
public void cardRemoved(PhysicalCard card) {
|
public void cardRemoved(PhysicalCard card) {
|
||||||
_events.add(new GameEvent(REMOVE_CARD_FROM_PLAY).card(card));
|
_events.add(new GameEvent(REMOVE_CARD_FROM_PLAY).card(card));
|
||||||
|
|||||||
@@ -275,6 +275,8 @@ var GempLotrGameUI = Class.extend({
|
|||||||
var eventType = gameEvent.getAttribute("type");
|
var eventType = gameEvent.getAttribute("type");
|
||||||
if (eventType == "PUT_CARD_IN_PLAY") {
|
if (eventType == "PUT_CARD_IN_PLAY") {
|
||||||
this.putCardInPlay(gameEvent);
|
this.putCardInPlay(gameEvent);
|
||||||
|
} else if (eventType == "MOVE_CARD_IN_PLAY") {
|
||||||
|
this.moveCardInPlay(gameEvent);
|
||||||
} else if (eventType == "PARTICIPANT") {
|
} else if (eventType == "PARTICIPANT") {
|
||||||
this.participant(gameEvent);
|
this.participant(gameEvent);
|
||||||
} else if (eventType == "REMOVE_CARD_FROM_PLAY") {
|
} 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() {
|
layoutZones: function() {
|
||||||
this.advPathGroup.layoutCards();
|
this.advPathGroup.layoutCards();
|
||||||
this.charactersPlayer.layoutCards();
|
this.charactersPlayer.layoutCards();
|
||||||
|
|||||||
Reference in New Issue
Block a user