From da467468d5ad803b538d398d912bbf099eaa56c7 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Sep 2011 14:19:29 +0200 Subject: [PATCH] improved facedown moving --- cockatrice/src/carddragitem.cpp | 2 +- cockatrice/src/carddragitem.h | 3 ++- cockatrice/src/carditem.cpp | 2 +- cockatrice/src/cardzone.h | 2 +- cockatrice/src/handzone.cpp | 4 ++-- cockatrice/src/handzone.h | 2 +- cockatrice/src/pilezone.cpp | 4 ++-- cockatrice/src/pilezone.h | 2 +- cockatrice/src/player.cpp | 18 +++++++++--------- cockatrice/src/stackzone.cpp | 4 ++-- cockatrice/src/stackzone.h | 2 +- cockatrice/src/tablezone.cpp | 10 +++++----- cockatrice/src/tablezone.h | 4 ++-- cockatrice/src/zoneviewzone.cpp | 4 ++-- cockatrice/src/zoneviewzone.h | 2 +- common/protocol.cpp | 3 +-- common/protocol.h | 3 +-- common/protocol_datastructures.cpp | 3 ++- common/protocol_datastructures.h | 3 ++- common/server_player.cpp | 24 ++++++++++++------------ common/server_player.h | 4 ++-- common/server_protocolhandler.cpp | 2 +- 22 files changed, 54 insertions(+), 53 deletions(-) diff --git a/cockatrice/src/carddragitem.cpp b/cockatrice/src/carddragitem.cpp index cfc016f3..df0e52bc 100644 --- a/cockatrice/src/carddragitem.cpp +++ b/cockatrice/src/carddragitem.cpp @@ -83,7 +83,7 @@ void CardDragItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) sc->removeItem(c); } } - currentZone->handleDropEvent(dragItemList, startZone, (sp - currentZone->scenePos()).toPoint(), faceDown); + currentZone->handleDropEvent(dragItemList, startZone, (sp - currentZone->scenePos()).toPoint()); event->accept(); } diff --git a/cockatrice/src/carddragitem.h b/cockatrice/src/carddragitem.h index 95cc71ce..aae6fbe1 100644 --- a/cockatrice/src/carddragitem.h +++ b/cockatrice/src/carddragitem.h @@ -14,10 +14,11 @@ private: public: CardDragItem(CardItem *_item, int _id, const QPointF &_hotSpot, bool _faceDown, AbstractCardDragItem *parentDrag = 0); int getId() const { return id; } + bool getFaceDown() const { return faceDown; } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void updatePosition(const QPointF &cursorScenePos); protected: void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); }; -#endif \ No newline at end of file +#endif diff --git a/cockatrice/src/carditem.cpp b/cockatrice/src/carditem.cpp index 8ad54b7c..3ae27850 100644 --- a/cockatrice/src/carditem.cpp +++ b/cockatrice/src/carditem.cpp @@ -471,7 +471,7 @@ void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) childPos = c->pos() - pos(); else childPos = QPointF(j * CARD_WIDTH / 2, 0); - CardDragItem *drag = new CardDragItem(c, c->getId(), childPos, false, dragItem); + CardDragItem *drag = new CardDragItem(c, c->getId(), childPos, c->getFaceDown(), dragItem); drag->setPos(dragItem->pos() + childPos); scene()->addItem(drag); } diff --git a/cockatrice/src/cardzone.h b/cockatrice/src/cardzone.h index 0b1809bb..7c159a70 100644 --- a/cockatrice/src/cardzone.h +++ b/cockatrice/src/cardzone.h @@ -35,7 +35,7 @@ public slots: public: enum { Type = typeZone }; int type() const { return Type; } - virtual void handleDropEvent(const QList &dragItem, CardZone *startZone, const QPoint &dropPoint, bool faceDown) = 0; + virtual void handleDropEvent(const QList &dragItem, CardZone *startZone, const QPoint &dropPoint) = 0; CardZone(Player *_player, const QString &_name, bool _hasCardAttr, bool _isShufflable, bool _contentsKnown, QGraphicsItem *parent = 0, bool isView = false); ~CardZone(); void retranslateUi(); diff --git a/cockatrice/src/handzone.cpp b/cockatrice/src/handzone.cpp index 18432fe3..92dfeaaa 100644 --- a/cockatrice/src/handzone.cpp +++ b/cockatrice/src/handzone.cpp @@ -37,13 +37,13 @@ void HandZone::addCardImpl(CardItem *card, int x, int /*y*/) card->update(); } -void HandZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) +void HandZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { QList idList; for (int i = 0; i < dragItems.size(); ++i) idList.append(new CardToMove(dragItems[i]->getId())); - player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), cards.size(), -1, false)); + player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), cards.size(), -1)); } QRectF HandZone::boundingRect() const diff --git a/cockatrice/src/handzone.h b/cockatrice/src/handzone.h index 85dde951..fb51cecb 100644 --- a/cockatrice/src/handzone.h +++ b/cockatrice/src/handzone.h @@ -14,7 +14,7 @@ public slots: void updateOrientation(); public: HandZone(Player *_p, bool _contentsKnown, int _zoneHeight, QGraphicsItem *parent = 0); - void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint, bool faceDown); + void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void reorganizeCards(); diff --git a/cockatrice/src/pilezone.cpp b/cockatrice/src/pilezone.cpp index 4f0c2fe2..340d9bab 100644 --- a/cockatrice/src/pilezone.cpp +++ b/cockatrice/src/pilezone.cpp @@ -48,13 +48,13 @@ void PileZone::addCardImpl(CardItem *card, int x, int /*y*/) card->setParentItem(this); } -void PileZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) +void PileZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { QList idList; for (int i = 0; i < dragItems.size(); ++i) idList.append(new CardToMove(dragItems[i]->getId())); - player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), 0, 0, false)); + player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), 0, 0)); } void PileZone::reorganizeCards() diff --git a/cockatrice/src/pilezone.h b/cockatrice/src/pilezone.h index 0e946066..4c2188bf 100644 --- a/cockatrice/src/pilezone.h +++ b/cockatrice/src/pilezone.h @@ -9,7 +9,7 @@ public: QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void reorganizeCards(); - void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint, bool faceDown); + void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 539e4068..054ef32a 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -615,7 +615,7 @@ void Player::actMoveTopCardsToGrave() QList idList; for (int i = 0; i < number; ++i) idList.append(new CardToMove(i)); - sendGameCommand(new Command_MoveCard(-1, "deck", idList, getId(), "grave", 0, 0, false)); + sendGameCommand(new Command_MoveCard(-1, "deck", idList, getId(), "grave", 0, 0)); } void Player::actMoveTopCardsToExile() @@ -631,12 +631,12 @@ void Player::actMoveTopCardsToExile() QList idList; for (int i = 0; i < number; ++i) idList.append(new CardToMove(i)); - sendGameCommand(new Command_MoveCard(-1, "deck", idList, getId(), "rfg", 0, 0, false)); + sendGameCommand(new Command_MoveCard(-1, "deck", idList, getId(), "rfg", 0, 0)); } void Player::actMoveTopCardToBottom() { - sendGameCommand(new Command_MoveCard(-1, "deck", QList() << new CardToMove(0), getId(), "deck", -1, 0, false)); + sendGameCommand(new Command_MoveCard(-1, "deck", QList() << new CardToMove(0), getId(), "deck", -1, 0)); } void Player::actUntapAll() @@ -1155,10 +1155,10 @@ void Player::playCard(CardItem *c, bool faceDown, bool tapped) { CardInfo *ci = c->getInfo(); if (ci->getTableRow() == 3) - sendGameCommand(new Command_MoveCard(-1, c->getZone()->getName(), QList() << new CardToMove(c->getId()), getId(), "stack", 0, 0, false)); + sendGameCommand(new Command_MoveCard(-1, c->getZone()->getName(), QList() << new CardToMove(c->getId()), getId(), "stack", 0, 0)); else { QPoint gridPoint = QPoint(-1, 2 - ci->getTableRow()); - sendGameCommand(new Command_MoveCard(-1, c->getZone()->getName(), QList() << new CardToMove(c->getId(), ci->getPowTough(), tapped), getId(), "table", gridPoint.x(), gridPoint.y(), faceDown)); + sendGameCommand(new Command_MoveCard(-1, c->getZone()->getName(), QList() << new CardToMove(c->getId(), faceDown, ci->getPowTough(), tapped), getId(), "table", gridPoint.x(), gridPoint.y())); } } @@ -1374,16 +1374,16 @@ void Player::cardMenuAction(QAction *a) switch (a->data().toInt()) { case 5: - commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "deck", 0, 0, false)); + commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "deck", 0, 0)); break; case 6: - commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "deck", -1, 0, false)); + commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "deck", -1, 0)); break; case 7: - commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "grave", 0, 0, false)); + commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "grave", 0, 0)); break; case 8: - commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "rfg", 0, 0, false)); + commandList.append(new Command_MoveCard(-1, startZone, idList, getId(), "rfg", 0, 0)); break; default: ; } diff --git a/cockatrice/src/stackzone.cpp b/cockatrice/src/stackzone.cpp index 4d6952bb..f7e61338 100644 --- a/cockatrice/src/stackzone.cpp +++ b/cockatrice/src/stackzone.cpp @@ -52,7 +52,7 @@ void StackZone::paint(QPainter *painter, const QStyleOptionGraphicsItem */*optio painter->fillRect(boundingRect(), QBrush(bgPixmap)); } -void StackZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) +void StackZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { if (startZone == this) return; @@ -61,7 +61,7 @@ void StackZone::handleDropEvent(const QList &dragItems, CardZone for (int i = 0; i < dragItems.size(); ++i) idList.append(new CardToMove(dragItems[i]->getId())); - player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), 0, 0, false)); + player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), 0, 0)); } void StackZone::reorganizeCards() diff --git a/cockatrice/src/stackzone.h b/cockatrice/src/stackzone.h index d03f151a..5fb2878b 100644 --- a/cockatrice/src/stackzone.h +++ b/cockatrice/src/stackzone.h @@ -12,7 +12,7 @@ private slots: void updateBgPixmap(); public: StackZone(Player *_p, int _zoneHeight, QGraphicsItem *parent = 0); - void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint, bool faceDown); + void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void reorganizeCards(); diff --git a/cockatrice/src/tablezone.cpp b/cockatrice/src/tablezone.cpp index 30b133d6..f64c1635 100644 --- a/cockatrice/src/tablezone.cpp +++ b/cockatrice/src/tablezone.cpp @@ -86,18 +86,18 @@ void TableZone::addCardImpl(CardItem *card, int _x, int _y) card->update(); } -void TableZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint, bool faceDown) +void TableZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint) { - handleDropEventByGrid(dragItems, startZone, mapToGrid(dropPoint), faceDown); + handleDropEventByGrid(dragItems, startZone, mapToGrid(dropPoint)); } -void TableZone::handleDropEventByGrid(const QList &dragItems, CardZone *startZone, const QPoint &gridPoint, bool faceDown, bool tapped) +void TableZone::handleDropEventByGrid(const QList &dragItems, CardZone *startZone, const QPoint &gridPoint) { QList idList; for (int i = 0; i < dragItems.size(); ++i) - idList.append(new CardToMove(dragItems[i]->getId(), startZone->getName() == name ? QString() : dragItems[i]->getItem()->getInfo()->getPowTough(), tapped)); + idList.append(new CardToMove(dragItems[i]->getId(), dragItems[i]->getFaceDown(), startZone->getName() == name ? QString() : dragItems[i]->getItem()->getInfo()->getPowTough())); - startZone->getPlayer()->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), gridPoint.x(), gridPoint.y(), faceDown)); + startZone->getPlayer()->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), gridPoint.x(), gridPoint.y())); } void TableZone::reorganizeCards() diff --git a/cockatrice/src/tablezone.h b/cockatrice/src/tablezone.h index b6566b4e..262f2e43 100644 --- a/cockatrice/src/tablezone.h +++ b/cockatrice/src/tablezone.h @@ -29,8 +29,8 @@ public: QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); void toggleTapped(); - void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint, bool faceDown = false); - void handleDropEventByGrid(const QList &dragItems, CardZone *startZone, const QPoint &gridPoint, bool faceDown = false, bool tapped = false); + void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); + void handleDropEventByGrid(const QList &dragItems, CardZone *startZone, const QPoint &gridPoint); CardItem *getCardFromGrid(const QPoint &gridPoint) const; CardItem *getCardFromCoords(const QPointF &point) const; QPointF mapFromGrid(QPoint gridPoint) const; diff --git a/cockatrice/src/zoneviewzone.cpp b/cockatrice/src/zoneviewzone.cpp index 172267a5..1aed33b7 100644 --- a/cockatrice/src/zoneviewzone.cpp +++ b/cockatrice/src/zoneviewzone.cpp @@ -124,13 +124,13 @@ void ZoneViewZone::addCardImpl(CardItem *card, int x, int /*y*/) card->update(); } -void ZoneViewZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/, bool /*faceDown*/) +void ZoneViewZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { QList idList; for (int i = 0; i < dragItems.size(); ++i) idList.append(new CardToMove(dragItems[i]->getId())); - player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), 0, 0, false)); + player->sendGameCommand(new Command_MoveCard(-1, startZone->getName(), idList, player->getId(), getName(), 0, 0)); } void ZoneViewZone::removeCard(int position) diff --git a/cockatrice/src/zoneviewzone.h b/cockatrice/src/zoneviewzone.h index b6fe2bfd..2c6265ec 100644 --- a/cockatrice/src/zoneviewzone.h +++ b/cockatrice/src/zoneviewzone.h @@ -13,7 +13,7 @@ class ZoneViewZone : public SelectZone, public QGraphicsLayoutItem { private: QRectF bRect, optimumRect; int minRows, numberCards; - void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint, bool faceDown); + void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); CardZone *origZone; bool revealZone; bool sortByName, sortByType; diff --git a/common/protocol.cpp b/common/protocol.cpp index 85c581d0..23b3deb7 100644 --- a/common/protocol.cpp +++ b/common/protocol.cpp @@ -230,7 +230,7 @@ QList Command_SetSideboardPlan::getMoveList() const return typecastItemList(); } -Command_MoveCard::Command_MoveCard(int _gameId, const QString &_startZone, const QList &_cards, int _targetPlayerId, const QString &_targetZone, int _x, int _y, bool _faceDown) +Command_MoveCard::Command_MoveCard(int _gameId, const QString &_startZone, const QList &_cards, int _targetPlayerId, const QString &_targetZone, int _x, int _y) : GameCommand("move_card", _gameId) { insertItem(new SerializableItem_String("start_zone", _startZone)); @@ -238,7 +238,6 @@ Command_MoveCard::Command_MoveCard(int _gameId, const QString &_startZone, const insertItem(new SerializableItem_String("target_zone", _targetZone)); insertItem(new SerializableItem_Int("x", _x)); insertItem(new SerializableItem_Int("y", _y)); - insertItem(new SerializableItem_Bool("face_down", _faceDown)); for (int i = 0; i < _cards.size(); ++i) itemList.append(_cards[i]); diff --git a/common/protocol.h b/common/protocol.h index beb09d49..d0210381 100644 --- a/common/protocol.h +++ b/common/protocol.h @@ -236,14 +236,13 @@ public: class Command_MoveCard : public GameCommand { Q_OBJECT public: - Command_MoveCard(int _gameId = -1, const QString &_startZone = QString(), const QList &_cards = QList(), int _targetPlayerId = -1, const QString &_targetZone = QString(), int _x = -1, int _y = -1, bool _faceDown = false); + Command_MoveCard(int _gameId = -1, const QString &_startZone = QString(), const QList &_cards = QList(), int _targetPlayerId = -1, const QString &_targetZone = QString(), int _x = -1, int _y = -1); QString getStartZone() const { return static_cast(itemMap.value("start_zone"))->getData(); } QList getCards() const { return typecastItemList(); } int getTargetPlayerId() const { return static_cast(itemMap.value("target_player_id"))->getData(); } QString getTargetZone() const { return static_cast(itemMap.value("target_zone"))->getData(); } int getX() const { return static_cast(itemMap.value("x"))->getData(); } int getY() const { return static_cast(itemMap.value("y"))->getData(); } - bool getFaceDown() const { return static_cast(itemMap.value("face_down"))->getData(); } static SerializableItem *newItem() { return new Command_MoveCard; } int getItemId() const { return ItemId_Command_MoveCard; } }; diff --git a/common/protocol_datastructures.cpp b/common/protocol_datastructures.cpp index 2dce39e5..54e45c01 100644 --- a/common/protocol_datastructures.cpp +++ b/common/protocol_datastructures.cpp @@ -3,10 +3,11 @@ #include #include -CardToMove::CardToMove(int _cardId, const QString &_pt, bool _tapped) +CardToMove::CardToMove(int _cardId, bool _faceDown, const QString &_pt, bool _tapped) : SerializableItem_Map("card_to_move") { insertItem(new SerializableItem_Int("card_id", _cardId)); + insertItem(new SerializableItem_Bool("facedown", _faceDown)); insertItem(new SerializableItem_String("pt", _pt)); insertItem(new SerializableItem_Bool("tapped", _tapped)); } diff --git a/common/protocol_datastructures.h b/common/protocol_datastructures.h index b42b5431..31e0a059 100644 --- a/common/protocol_datastructures.h +++ b/common/protocol_datastructures.h @@ -22,9 +22,10 @@ enum ZoneType { PrivateZone, PublicZone, HiddenZone }; class CardToMove : public SerializableItem_Map { public: - CardToMove(int _cardId = -1, const QString &_pt = QString(), bool _tapped = false); + CardToMove(int _cardId = -1, bool _faceDown = false, const QString &_pt = QString(), bool _tapped = false); static SerializableItem *newItem() { return new CardToMove; } int getCardId() const { return static_cast(itemMap.value("card_id"))->getData(); } + bool getFaceDown() const { return static_cast(itemMap.value("facedown"))->getData(); } QString getPT() const { return static_cast(itemMap.value("pt"))->getData(); } bool getTapped() const { return static_cast(itemMap.value("tapped"))->getData(); } }; diff --git a/common/server_player.cpp b/common/server_player.cpp index 3a9899a9..094704af 100644 --- a/common/server_player.cpp +++ b/common/server_player.cpp @@ -278,12 +278,12 @@ ResponseCode Server_Player::undoDraw(CommandContainer *cont) ResponseCode retVal; CardToMove *cardToMove = new CardToMove(lastDrawList.takeLast()); - retVal = moveCard(cont, zones.value("hand"), QList() << cardToMove, zones.value("deck"), 0, 0, false, false, true); + retVal = moveCard(cont, zones.value("hand"), QList() << cardToMove, zones.value("deck"), 0, 0, false, true); delete cardToMove; return retVal; } -ResponseCode Server_Player::moveCard(CommandContainer *cont, const QString &_startZone, const QList &_cards, int targetPlayerId, const QString &_targetZone, int x, int y, bool faceDown) +ResponseCode Server_Player::moveCard(CommandContainer *cont, const QString &_startZone, const QList &_cards, int targetPlayerId, const QString &_targetZone, int x, int y) { QMutexLocker locker(&game->gameMutex); @@ -295,7 +295,7 @@ ResponseCode Server_Player::moveCard(CommandContainer *cont, const QString &_sta if ((!startzone) || (!targetzone)) return RespNameNotFound; - return moveCard(cont, startzone, _cards, targetzone, x, y, faceDown); + return moveCard(cont, startzone, _cards, targetzone, x, y); } class Server_Player::MoveCardCompareFunctor { @@ -319,7 +319,7 @@ public: } }; -ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *startzone, const QList &_cards, Server_CardZone *targetzone, int x, int y, bool faceDown, bool fixFreeSpaces, bool undoingDraw) +ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *startzone, const QList &_cards, Server_CardZone *targetzone, int x, int y, bool fixFreeSpaces, bool undoingDraw) { QMutexLocker locker(&game->gameMutex); @@ -417,8 +417,8 @@ ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *st bool targetBeingLookedAt = (targetzone->getType() != HiddenZone) || (targetzone->getCardsBeingLookedAt() > newX) || (targetzone->getCardsBeingLookedAt() == -1); bool sourceBeingLookedAt = (startzone->getType() != HiddenZone) || (startzone->getCardsBeingLookedAt() > position) || (startzone->getCardsBeingLookedAt() == -1); - bool targetHiddenToPlayer = faceDown || !targetBeingLookedAt; - bool targetHiddenToOthers = faceDown || (targetzone->getType() != PublicZone); + bool targetHiddenToPlayer = thisCardProperties->getFaceDown() || !targetBeingLookedAt; + bool targetHiddenToOthers = thisCardProperties->getFaceDown() || (targetzone->getType() != PublicZone); bool sourceHiddenToPlayer = card->getFaceDown() || !sourceBeingLookedAt; bool sourceHiddenToOthers = card->getFaceDown() || (startzone->getType() != PublicZone); @@ -429,9 +429,9 @@ ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *st publicCardName = card->getName(); int oldCardId = card->getId(); - if (faceDown || (targetzone->getPlayer() != startzone->getPlayer())) + if (thisCardProperties->getFaceDown() || (targetzone->getPlayer() != startzone->getPlayer())) card->setId(targetzone->getPlayer()->newCardId()); - card->setFaceDown(faceDown); + card->setFaceDown(thisCardProperties->getFaceDown()); // The player does not get to see which card he moved if it moves between two parts of hidden zones which // are not being looked at. @@ -445,8 +445,8 @@ ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *st int privatePosition = -1; if (startzone->getType() == HiddenZone) privatePosition = position; - cont->enqueueGameEventPrivate(new Event_MoveCard(getPlayerId(), privateOldCardId, privateCardName, startzone->getName(), privatePosition, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, privateNewCardId, faceDown), game->getGameId(), -1, undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); - cont->enqueueGameEventOmniscient(new Event_MoveCard(getPlayerId(), privateOldCardId, privateCardName, startzone->getName(), privatePosition, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, privateNewCardId, faceDown), game->getGameId(), undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); + cont->enqueueGameEventPrivate(new Event_MoveCard(getPlayerId(), privateOldCardId, privateCardName, startzone->getName(), privatePosition, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, privateNewCardId, thisCardProperties->getFaceDown()), game->getGameId(), -1, undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); + cont->enqueueGameEventOmniscient(new Event_MoveCard(getPlayerId(), privateOldCardId, privateCardName, startzone->getName(), privatePosition, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, privateNewCardId, thisCardProperties->getFaceDown()), game->getGameId(), undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); // Other players do not get to see the start and/or target position of the card if the respective // part of the zone is being looked at. The information is not needed anyway because in hidden zones, @@ -460,13 +460,13 @@ ResponseCode Server_Player::moveCard(CommandContainer *cont, Server_CardZone *st newX = -1; if ((startzone->getType() == PublicZone) || (targetzone->getType() == PublicZone)) - cont->enqueueGameEventPublic(new Event_MoveCard(getPlayerId(), oldCardId, publicCardName, startzone->getName(), position, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, card->getId(), faceDown), game->getGameId(), undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); + cont->enqueueGameEventPublic(new Event_MoveCard(getPlayerId(), oldCardId, publicCardName, startzone->getName(), position, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, card->getId(), thisCardProperties->getFaceDown()), game->getGameId(), undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); else cont->enqueueGameEventPublic(new Event_MoveCard(getPlayerId(), -1, QString(), startzone->getName(), position, targetzone->getPlayer()->getPlayerId(), targetzone->getName(), newX, y, -1, false), game->getGameId(), undoingDraw ? static_cast(new Context_UndoDraw) : static_cast(new Context_MoveCard)); if (thisCardProperties->getTapped()) setCardAttrHelper(cont, targetzone->getName(), card->getId(), "tapped", "1"); - if (!thisCardProperties->getPT().isEmpty() && !faceDown) + if (!thisCardProperties->getPT().isEmpty() && !thisCardProperties->getFaceDown()) setCardAttrHelper(cont, targetzone->getName(), card->getId(), "pt", thisCardProperties->getPT()); } } diff --git a/common/server_player.h b/common/server_player.h index 955dd77c..f83a1e8a 100644 --- a/common/server_player.h +++ b/common/server_player.h @@ -83,8 +83,8 @@ public: ResponseCode drawCards(CommandContainer *cont, int number); ResponseCode undoDraw(CommandContainer *cont); - ResponseCode moveCard(CommandContainer *cont, const QString &_startZone, const QList &_cards, int _targetPlayer, const QString &_targetZone, int _x, int _y, bool _faceDown); - ResponseCode moveCard(CommandContainer *cont, Server_CardZone *startzone, const QList &_cards, Server_CardZone *targetzone, int x, int y, bool faceDown, bool fixFreeSpaces = true, bool undoingDraw = false); + ResponseCode moveCard(CommandContainer *cont, const QString &_startZone, const QList &_cards, int _targetPlayer, const QString &_targetZone, int _x, int _y); + ResponseCode moveCard(CommandContainer *cont, Server_CardZone *startzone, const QList &_cards, Server_CardZone *targetzone, int x, int y, bool fixFreeSpaces = true, bool undoingDraw = false); void unattachCard(CommandContainer *cont, Server_Card *card); ResponseCode setCardAttrHelper(CommandContainer *cont, const QString &zone, int cardId, const QString &attrName, const QString &attrValue); diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp index 1b218ff0..04647824 100644 --- a/common/server_protocolhandler.cpp +++ b/common/server_protocolhandler.cpp @@ -762,7 +762,7 @@ ResponseCode Server_ProtocolHandler::cmdMoveCard(Command_MoveCard *cmd, CommandC if (player->getConceded()) return RespContextError; - return player->moveCard(cont, cmd->getStartZone(), cmd->getCards(), cmd->getTargetPlayerId(), cmd->getTargetZone(), cmd->getX(), cmd->getY(), cmd->getFaceDown()); + return player->moveCard(cont, cmd->getStartZone(), cmd->getCards(), cmd->getTargetPlayerId(), cmd->getTargetZone(), cmd->getX(), cmd->getY()); } ResponseCode Server_ProtocolHandler::cmdFlipCard(Command_FlipCard *cmd, CommandContainer *cont, Server_Game *game, Server_Player *player)