diff --git a/cockatrice/src/abstractcarditem.h b/cockatrice/src/abstractcarditem.h index 2060537d1..31ee7ec80 100644 --- a/cockatrice/src/abstractcarditem.h +++ b/cockatrice/src/abstractcarditem.h @@ -31,6 +31,7 @@ signals: void hovered(AbstractCardItem *card); void showCardInfoPopup(QPoint pos, QString cardName); void deleteCardInfoPopup(QString cardName); + void updateCardMenu(AbstractCardItem *card, QMenu *cardMenu, QMenu *ptMenu, QMenu *moveMenu); public: enum { Type = typeCard }; int type() const { return Type; } diff --git a/cockatrice/src/carditem.cpp b/cockatrice/src/carditem.cpp index 17bf12b87..04a72a1fd 100644 --- a/cockatrice/src/carditem.cpp +++ b/cockatrice/src/carditem.cpp @@ -8,6 +8,7 @@ #include "carddragitem.h" #include "carddatabase.h" #include "cardzone.h" +#include "zoneviewzone.h" #include "tablezone.h" #include "player.h" #include "arrowitem.h" @@ -26,7 +27,7 @@ CardItem::CardItem(Player *_owner, const QString &_name, int _cardid, bool _reve moveMenu = new QMenu; retranslateUi(); - owner->updateCardMenu(this, cardMenu, ptMenu, moveMenu); + emit updateCardMenu(this, cardMenu, ptMenu, moveMenu); } CardItem::~CardItem() @@ -45,7 +46,7 @@ void CardItem::prepareDelete() if (owner) { if (owner->getCardMenu() == cardMenu) { owner->setCardMenu(0); - owner->setActiveCard(0); + owner->getGame()->setActiveCard(0); } owner = 0; } @@ -70,7 +71,7 @@ void CardItem::deleteLater() void CardItem::setZone(CardZone *_zone) { zone = _zone; - owner->updateCardMenu(this, cardMenu, ptMenu, moveMenu); + emit updateCardMenu(this, cardMenu, ptMenu, moveMenu); } void CardItem::retranslateUi() @@ -183,7 +184,7 @@ void CardItem::setAttachedTo(CardItem *_attachedTo) if (zone) zone->reorganizeCards(); - owner->updateCardMenu(this, cardMenu, ptMenu, moveMenu); + emit updateCardMenu(this, cardMenu, ptMenu, moveMenu); } void CardItem::resetState() @@ -283,7 +284,11 @@ void CardItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) } else if (event->buttons().testFlag(Qt::LeftButton)) { if ((event->screenPos() - event->buttonDownScreenPos(Qt::LeftButton)).manhattanLength() < 2 * QApplication::startDragDistance()) return; - if (!owner->getLocal()) + if (zone->getIsView()) { + const ZoneViewZone *const view = static_cast(zone); + if (view->getRevealZone() && !view->getWriteableRevealZone()) + return; + } else if (!owner->getLocal()) return; bool forceFaceDown = event->modifiers().testFlag(Qt::ShiftModifier); @@ -332,7 +337,14 @@ void CardItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) cardMenu->exec(event->screenPos()); } else if ((event->button() == Qt::LeftButton) && !settingsCache->getDoubleClickToPlay()) { setCursor(Qt::OpenHandCursor); - if (revealedCard) + + bool hideCard = false; + if (zone->getIsView()) { + ZoneViewZone *view = static_cast(zone); + if (view->getRevealZone() && !view->getWriteableRevealZone()) + hideCard = true; + } + if (hideCard) zone->removeCard(this); else playCard(event->modifiers().testFlag(Qt::ShiftModifier)); @@ -374,10 +386,10 @@ QVariant CardItem::itemChange(GraphicsItemChange change, const QVariant &value) if ((change == ItemSelectedHasChanged) && owner) { if (value == true) { owner->setCardMenu(cardMenu); - owner->setActiveCard(this); + owner->getGame()->setActiveCard(this); } else if (owner->getCardMenu() == cardMenu) { owner->setCardMenu(0); - owner->setActiveCard(0); + owner->getGame()->setActiveCard(0); } } return QGraphicsItem::itemChange(change, value); diff --git a/cockatrice/src/carditem.h b/cockatrice/src/carditem.h index cb108e22e..604815c39 100644 --- a/cockatrice/src/carditem.h +++ b/cockatrice/src/carditem.h @@ -74,7 +74,6 @@ public: const QList &getAttachedCards() const { return attachedCards; } void resetState(); void processCardInfo(const ServerInfo_Card &info); - void updateCardMenu(); bool animationEvent(); CardDragItem *createDragItem(int _id, const QPointF &_pos, const QPointF &_scenePos, bool faceDown); diff --git a/cockatrice/src/cardzone.cpp b/cockatrice/src/cardzone.cpp index 284e66969..a9617f810 100644 --- a/cockatrice/src/cardzone.cpp +++ b/cockatrice/src/cardzone.cpp @@ -9,8 +9,8 @@ #include "pb/command_move_card.pb.h" #include "pb/serverinfo_user.pb.h" -CardZone::CardZone(Player *_p, const QString &_name, bool _hasCardAttr, bool _isShufflable, bool _contentsKnown, QGraphicsItem *parent, bool isView) - : AbstractGraphicsItem(parent), player(_p), name(_name), cards(_contentsKnown), view(NULL), menu(NULL), doubleClickAction(0), hasCardAttr(_hasCardAttr), isShufflable(_isShufflable) +CardZone::CardZone(Player *_p, const QString &_name, bool _hasCardAttr, bool _isShufflable, bool _contentsKnown, QGraphicsItem *parent, bool _isView) + : AbstractGraphicsItem(parent), player(_p), name(_name), cards(_contentsKnown), view(NULL), menu(NULL), doubleClickAction(0), hasCardAttr(_hasCardAttr), isShufflable(_isShufflable), isView(_isView) { if (!isView) player->addZone(this); diff --git a/cockatrice/src/cardzone.h b/cockatrice/src/cardzone.h index 1f2ddfee6..7120cdd07 100644 --- a/cockatrice/src/cardzone.h +++ b/cockatrice/src/cardzone.h @@ -24,6 +24,7 @@ protected: QAction *doubleClickAction; bool hasCardAttr; bool isShufflable; + bool isView; void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void addCardImpl(CardItem *card, int x, int y) = 0; @@ -36,7 +37,7 @@ public: enum { Type = typeZone }; int type() const { return Type; } 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(Player *_player, const QString &_name, bool _hasCardAttr, bool _isShufflable, bool _contentsKnown, QGraphicsItem *parent = 0, bool _isView = false); ~CardZone(); void retranslateUi(); void clearContents(); @@ -59,6 +60,7 @@ public: void setView(ZoneViewZone *_view) { view = _view; } virtual void reorganizeCards() = 0; virtual QPointF closestGridPoint(const QPointF &point); + bool getIsView() const { return isView; } }; #endif diff --git a/cockatrice/src/gamescene.cpp b/cockatrice/src/gamescene.cpp index 451cf1a42..1307eb506 100644 --- a/cockatrice/src/gamescene.cpp +++ b/cockatrice/src/gamescene.cpp @@ -128,9 +128,9 @@ void GameScene::toggleZoneView(Player *player, const QString &zoneName, int numb item->setPos(50, 50); } -void GameScene::addRevealedZoneView(Player *player, CardZone *zone, const QList &cardList) +void GameScene::addRevealedZoneView(Player *player, CardZone *zone, const QList &cardList, bool withWritePermission) { - ZoneViewWidget *item = new ZoneViewWidget(player, zone, -2, true, cardList); + ZoneViewWidget *item = new ZoneViewWidget(player, zone, -2, true, withWritePermission, cardList); zoneViews.append(item); connect(item, SIGNAL(closePressed(ZoneViewWidget *)), this, SLOT(removeZoneView(ZoneViewWidget *))); addItem(item); diff --git a/cockatrice/src/gamescene.h b/cockatrice/src/gamescene.h index 900587956..7deb78c82 100644 --- a/cockatrice/src/gamescene.h +++ b/cockatrice/src/gamescene.h @@ -45,7 +45,7 @@ public: void unregisterAnimationItem(AbstractCardItem *card); public slots: void toggleZoneView(Player *player, const QString &zoneName, int numberCards); - void addRevealedZoneView(Player *player, CardZone *zone, const QList &cardList); + void addRevealedZoneView(Player *player, CardZone *zone, const QList &cardList, bool withWritePermission); void removeZoneView(ZoneViewWidget *item); void addPlayer(Player *player); void removePlayer(Player *player); diff --git a/cockatrice/src/handzone.cpp b/cockatrice/src/handzone.cpp index 60f5806a8..98440a077 100644 --- a/cockatrice/src/handzone.cpp +++ b/cockatrice/src/handzone.cpp @@ -42,6 +42,7 @@ void HandZone::addCardImpl(CardItem *card, int x, int /*y*/) void HandZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { Command_MoveCard cmd; + cmd.set_start_player_id(startZone->getPlayer()->getId()); cmd.set_start_zone(startZone->getName().toStdString()); cmd.set_target_player_id(player->getId()); cmd.set_target_zone(getName().toStdString()); diff --git a/cockatrice/src/messagelogwidget.cpp b/cockatrice/src/messagelogwidget.cpp index 41f0e2f10..3dd2b63be 100644 --- a/cockatrice/src/messagelogwidget.cpp +++ b/cockatrice/src/messagelogwidget.cpp @@ -171,7 +171,7 @@ void MessageLogWidget::logUndoDraw(Player *player, QString cardName) appendHtml((isFemale(player) ? tr("%1 undoes her last draw (%2).") : tr("%1 undoes his last draw (%2).")).arg(sanitizeHtml(player->getName())).arg(QString("%1").arg(sanitizeHtml(cardName)))); } -QPair MessageLogWidget::getFromStr(CardZone *zone, QString cardName, int position) const +QPair MessageLogWidget::getFromStr(CardZone *zone, QString cardName, int position, bool ownerChange) const { bool cardNameContainsStartZone = false; QString fromStr; @@ -188,18 +188,36 @@ QPair MessageLogWidget::getFromStr(CardZone *zone, QString car else if (startName == "deck") { if (position >= zone->getCards().size() - 1) { if (cardName.isEmpty()) { - cardName = isFemale(zone->getPlayer()) ? tr("the bottom card of her library") : tr("the bottom card of his library"); + if (ownerChange) + cardName = tr("the bottom card of %1's library").arg(zone->getPlayer()->getName()); + else + cardName = isFemale(zone->getPlayer()) ? tr("the bottom card of her library") : tr("the bottom card of his library"); cardNameContainsStartZone = true; - } else - fromStr = isFemale(zone->getPlayer()) ? tr(" from the bottom of her library") : tr(" from the bottom of his library"); + } else { + if (ownerChange) + fromStr = tr(" from the bottom of %1's library").arg(zone->getPlayer()->getName()); + else + fromStr = isFemale(zone->getPlayer()) ? tr(" from the bottom of her library") : tr(" from the bottom of his library"); + } } else if (position == 0) { if (cardName.isEmpty()) { - cardName = isFemale(zone->getPlayer()) ? tr("the top card of her library") : tr("the top card of his library"); + if (ownerChange) + cardName = tr("the top card of %1's library").arg(zone->getPlayer()->getName()); + else + cardName = isFemale(zone->getPlayer()) ? tr("the top card of her library") : tr("the top card of his library"); cardNameContainsStartZone = true; - } else - fromStr = isFemale(zone->getPlayer()) ? tr(" from the top of her library") : tr(" from the top of his library"); - } else - fromStr = tr(" from library"); + } else { + if (ownerChange) + fromStr = tr(" from the top of %1's library").arg(zone->getPlayer()->getName()); + else + fromStr = isFemale(zone->getPlayer()) ? tr(" from the top of her library") : tr(" from the top of his library"); + } + } else { + if (ownerChange) + fromStr = tr(" from %1's library").arg(zone->getPlayer()->getName()); + else + fromStr = tr(" from library"); + } } else if (startName == "sb") fromStr = tr(" from sideboard"); else if (startName == "stack") @@ -212,12 +230,13 @@ QPair MessageLogWidget::getFromStr(CardZone *zone, QString car void MessageLogWidget::doMoveCard(LogMoveCard &attributes) { + bool ownerChange = attributes.startZone->getPlayer() != attributes.targetZone->getPlayer(); QString startName = attributes.startZone->getName(); QString targetName = attributes.targetZone->getName(); if (((startName == "table") && (targetName == "table") && (attributes.startZone == attributes.targetZone)) || ((startName == "hand") && (targetName == "hand"))) return; QString cardName = attributes.cardName; - QPair temp = getFromStr(attributes.startZone, cardName, attributes.oldX); + QPair temp = getFromStr(attributes.startZone, cardName, attributes.oldX, ownerChange); bool cardNameContainsStartZone = false; if (!temp.first.isEmpty()) { cardNameContainsStartZone = true; @@ -231,8 +250,8 @@ void MessageLogWidget::doMoveCard(LogMoveCard &attributes) cardStr = tr("a card"); else cardStr = QString("%1").arg(sanitizeHtml(cardName)); - - if (attributes.startZone->getPlayer() != attributes.targetZone->getPlayer()) { + + if (ownerChange && (attributes.startZone->getPlayer() == attributes.player)) { appendHtml(tr("%1 gives %2 control over %3.").arg(sanitizeHtml(attributes.player->getName())).arg(sanitizeHtml(attributes.targetZone->getPlayer()->getName())).arg(cardStr)); return; } @@ -627,7 +646,7 @@ void MessageLogWidget::logStopDumpZone(Player *player, CardZone *zone) void MessageLogWidget::logRevealCards(Player *player, CardZone *zone, int cardId, QString cardName, Player *otherPlayer) { - QPair temp = getFromStr(zone, cardName, cardId); + QPair temp = getFromStr(zone, cardName, cardId, false); bool cardNameContainsStartZone = false; if (!temp.first.isEmpty()) { cardNameContainsStartZone = true; diff --git a/cockatrice/src/messagelogwidget.h b/cockatrice/src/messagelogwidget.h index abbe9eb94..08d6ac6b1 100644 --- a/cockatrice/src/messagelogwidget.h +++ b/cockatrice/src/messagelogwidget.h @@ -28,7 +28,7 @@ private: QString sanitizeHtml(QString dirty) const; bool isFemale(Player *player) const; - QPair getFromStr(CardZone *zone, QString cardName, int position) const; + QPair getFromStr(CardZone *zone, QString cardName, int position, bool ownerChange) const; MessageContext currentContext; bool female; diff --git a/cockatrice/src/pilezone.cpp b/cockatrice/src/pilezone.cpp index 4436d9a55..48f377513 100644 --- a/cockatrice/src/pilezone.cpp +++ b/cockatrice/src/pilezone.cpp @@ -53,6 +53,7 @@ void PileZone::addCardImpl(CardItem *card, int x, int /*y*/) void PileZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { Command_MoveCard cmd; + cmd.set_start_player_id(startZone->getPlayer()->getId()); cmd.set_start_zone(startZone->getName().toStdString()); cmd.set_target_player_id(player->getId()); cmd.set_target_zone(getName().toStdString()); diff --git a/cockatrice/src/player.cpp b/cockatrice/src/player.cpp index 2c782be00..a69e65be3 100644 --- a/cockatrice/src/player.cpp +++ b/cockatrice/src/player.cpp @@ -93,7 +93,7 @@ void PlayerArea::setSize(qreal width, qreal height) } Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_parent) - : QObject(_parent), activeCard(0), shortcutsActive(false), defaultNumberTopCards(3), lastTokenDestroy(true), id(_id), active(false), local(_local), mirrored(false), handVisible(false), conceded(false), dialogSemaphore(false) + : QObject(_parent), game(_parent), shortcutsActive(false), defaultNumberTopCards(3), lastTokenDestroy(true), id(_id), active(false), local(_local), mirrored(false), handVisible(false), conceded(false), dialogSemaphore(false) { userInfo = new ServerInfo_User; userInfo->CopyFrom(info); @@ -392,7 +392,7 @@ Player::Player(const ServerInfo_User &info, int _id, bool _local, TabGame *_pare connect(tempSetCounter, SIGNAL(triggered()), this, SLOT(actCardCounterTrigger())); } - const QList &players = _parent->getPlayers().values(); + const QList &players = game->getPlayers().values(); for (int i = 0; i < players.size(); ++i) addPlayer(players[i]); @@ -460,9 +460,10 @@ void Player::playerListActionTriggered() if (otherPlayerId != -1) cmd.set_player_id(otherPlayerId); - if (menu == mRevealLibrary) + if (menu == mRevealLibrary) { cmd.set_zone_name("deck"); - else if (menu == mRevealTopCard) { + cmd.set_grant_write_access(true); + } else if (menu == mRevealTopCard) { cmd.set_zone_name("deck"); cmd.set_card_id(0); } else if (menu == mRevealHand) @@ -937,6 +938,9 @@ void Player::eventShuffle(const Event_Shuffle &event) CardZone *zone = zones.value(QString::fromStdString(event.zone_name())); if (!zone) return; + if (zone->getView()) + if (zone->getView()->getRevealZone()) + zone->getView()->setWriteableRevealZone(false); emit logShuffle(this, zone); } @@ -1040,7 +1044,7 @@ void Player::eventDelCounter(const Event_DelCounter &event) void Player::eventDumpZone(const Event_DumpZone &event) { - Player *zoneOwner = static_cast(parent())->getPlayers().value(event.zone_owner_id(), 0); + Player *zoneOwner = game->getPlayers().value(event.zone_owner_id(), 0); if (!zoneOwner) return; CardZone *zone = zoneOwner->getZones().value(QString::fromStdString(event.zone_name()), 0); @@ -1051,7 +1055,7 @@ void Player::eventDumpZone(const Event_DumpZone &event) void Player::eventStopDumpZone(const Event_StopDumpZone &event) { - Player *zoneOwner = static_cast(parent())->getPlayers().value(event.zone_owner_id(), 0); + Player *zoneOwner = game->getPlayers().value(event.zone_owner_id(), 0); if (!zoneOwner) return; CardZone *zone = zoneOwner->getZones().value(QString::fromStdString(event.zone_name()), 0); @@ -1062,8 +1066,11 @@ void Player::eventStopDumpZone(const Event_StopDumpZone &event) void Player::eventMoveCard(const Event_MoveCard &event, const GameEventContext &context) { - CardZone *startZone = zones.value(QString::fromStdString(event.start_zone()), 0); - Player *targetPlayer = static_cast(parent())->getPlayers().value(event.target_player_id()); + Player *startPlayer = game->getPlayers().value(event.start_player_id()); + if (!startPlayer) + return; + CardZone *startZone = startPlayer->getZones().value(QString::fromStdString(event.start_zone()), 0); + Player *targetPlayer = game->getPlayers().value(event.target_player_id()); if (!targetPlayer) return; CardZone *targetZone; @@ -1122,7 +1129,7 @@ void Player::eventMoveCard(const Event_MoveCard &event, const GameEventContext & // Look at all arrows from and to the card. // If the card was moved to another zone, delete the arrows, otherwise update them. - QMapIterator playerIterator(static_cast(parent())->getPlayers()); + QMapIterator playerIterator(game->getPlayers()); while (playerIterator.hasNext()) { Player *p = playerIterator.next().value(); @@ -1176,7 +1183,7 @@ void Player::eventDestroyCard(const Event_DestroyCard &event) void Player::eventAttachCard(const Event_AttachCard &event) { - const QMap &playerList = static_cast(parent())->getPlayers(); + const QMap &playerList = game->getPlayers(); Player *targetPlayer = 0; CardZone *targetZone = 0; CardItem *targetCard = 0; @@ -1244,7 +1251,7 @@ void Player::eventRevealCards(const Event_RevealCards &event) return; Player *otherPlayer = 0; if (event.has_other_player_id()) { - otherPlayer = static_cast(parent())->getPlayers().value(event.other_player_id()); + otherPlayer = game->getPlayers().value(event.other_player_id()); if (!otherPlayer) return; } @@ -1256,7 +1263,7 @@ void Player::eventRevealCards(const Event_RevealCards &event) cardList.append(temp); } if (!cardList.isEmpty()) - static_cast(scene())->addRevealedZoneView(this, zone, cardList); + static_cast(scene())->addRevealedZoneView(this, zone, cardList, event.grant_write_access()); QString cardName; if (cardList.size() == 1) @@ -1364,7 +1371,7 @@ void Player::processCardAttachment(const ServerInfo_Player &info) const ServerInfo_Card &cardInfo = zoneInfo.card_list(j); if (cardInfo.has_attach_player_id()) { CardItem *startCard = zone->getCard(cardInfo.id(), QString()); - CardItem *targetCard = static_cast(parent())->getCard(cardInfo.attach_player_id(), QString::fromStdString(cardInfo.attach_zone()), cardInfo.attach_card_id()); + CardItem *targetCard = game->getCard(cardInfo.attach_player_id(), QString::fromStdString(cardInfo.attach_zone()), cardInfo.attach_card_id()); if (!targetCard) continue; @@ -1377,6 +1384,7 @@ void Player::processCardAttachment(const ServerInfo_Player &info) void Player::playCard(CardItem *c, bool faceDown, bool tapped) { Command_MoveCard cmd; + cmd.set_start_player_id(c->getZone()->getPlayer()->getId()); cmd.set_start_zone(c->getZone()->getName().toStdString()); cmd.set_target_player_id(getId()); CardToMove *cardToMove = cmd.mutable_cards_to_move()->add_card(); @@ -1465,7 +1473,7 @@ void Player::clearCounters() ArrowItem *Player::addArrow(const ServerInfo_Arrow &arrow) { - const QMap &playerList = static_cast(parent())->getPlayers(); + const QMap &playerList = game->getPlayers(); Player *startPlayer = playerList.value(arrow.start_player_id(), 0); Player *targetPlayer = playerList.value(arrow.target_player_id(), 0); if (!startPlayer || !targetPlayer) @@ -1552,22 +1560,22 @@ void Player::rearrangeCounters() PendingCommand * Player::prepareGameCommand(const google::protobuf::Message &cmd) { - return static_cast(parent())->prepareGameCommand(cmd); + return game->prepareGameCommand(cmd); } PendingCommand * Player::prepareGameCommand(const QList &cmdList) { - return static_cast(parent())->prepareGameCommand(cmdList); + return game->prepareGameCommand(cmdList); } void Player::sendGameCommand(const google::protobuf::Message &command) { - static_cast(parent())->sendGameCommand(command, id); + game->sendGameCommand(command, id); } void Player::sendGameCommand(PendingCommand *pend) { - static_cast(parent())->sendGameCommand(pend, id); + game->sendGameCommand(pend, id); } bool Player::clearCardsToDelete() @@ -1651,11 +1659,13 @@ void Player::cardMenuAction() ListOfCardsToMove idList; for (int i = 0; i < cardList.size(); ++i) idList.add_card()->set_card_id(cardList[i]->getId()); + int startPlayerId = cardList[0]->getZone()->getPlayer()->getId(); QString startZone = cardList[0]->getZone()->getName(); switch (a->data().toInt()) { case 5: { Command_MoveCard *cmd = new Command_MoveCard; + cmd->set_start_player_id(startPlayerId); cmd->set_start_zone(startZone.toStdString()); cmd->mutable_cards_to_move()->CopyFrom(idList); cmd->set_target_player_id(getId()); @@ -1667,6 +1677,7 @@ void Player::cardMenuAction() } case 6: { Command_MoveCard *cmd = new Command_MoveCard; + cmd->set_start_player_id(startPlayerId); cmd->set_start_zone(startZone.toStdString()); cmd->mutable_cards_to_move()->CopyFrom(idList); cmd->set_target_player_id(getId()); @@ -1678,6 +1689,7 @@ void Player::cardMenuAction() } case 7: { Command_MoveCard *cmd = new Command_MoveCard; + cmd->set_start_player_id(startPlayerId); cmd->set_start_zone(startZone.toStdString()); cmd->mutable_cards_to_move()->CopyFrom(idList); cmd->set_target_player_id(getId()); @@ -1689,6 +1701,7 @@ void Player::cardMenuAction() } case 8: { Command_MoveCard *cmd = new Command_MoveCard; + cmd->set_start_player_id(startPlayerId); cmd->set_start_zone(startZone.toStdString()); cmd->mutable_cards_to_move()->CopyFrom(idList); cmd->set_target_player_id(getId()); @@ -1701,7 +1714,7 @@ void Player::cardMenuAction() default: ; } } - static_cast(parent())->sendGameCommand(prepareGameCommand(commandList)); + game->sendGameCommand(prepareGameCommand(commandList)); } void Player::actIncPT(int deltaP, int deltaT) @@ -1756,7 +1769,7 @@ void Player::actSetPT() void Player::actDrawArrow() { - activeCard->drawArrow(Qt::red); + game->getActiveCard()->drawArrow(Qt::red); } void Player::actIncP() @@ -1824,7 +1837,7 @@ void Player::actSetAnnotation() void Player::actAttach() { - ArrowAttachItem *arrow = new ArrowAttachItem(activeCard); + ArrowAttachItem *arrow = new ArrowAttachItem(game->getActiveCard()); scene()->addItem(arrow); arrow->grabMouse(); } @@ -1832,8 +1845,8 @@ void Player::actAttach() void Player::actUnattach() { Command_AttachCard cmd; - cmd.set_start_zone(activeCard->getZone()->getName().toStdString()); - cmd.set_card_id(activeCard->getId()); + cmd.set_start_zone(game->getActiveCard()->getZone()->getName().toStdString()); + cmd.set_card_id(game->getActiveCard()->getId()); sendGameCommand(cmd); } @@ -1903,21 +1916,34 @@ void Player::actCardCounterTrigger() void Player::actPlay() { - activeCard->playCard(false); + playCard(game->getActiveCard(), false, game->getActiveCard()->getInfo()->getCipt()); } void Player::actHide() { - activeCard->getZone()->removeCard(activeCard); + game->getActiveCard()->getZone()->removeCard(game->getActiveCard()); } void Player::updateCardMenu(CardItem *card, QMenu *cardMenu, QMenu *ptMenu, QMenu *moveMenu) { cardMenu->clear(); - if (card->getRevealedCard()) + bool revealedCard = false; + bool writeableCard = getLocal(); + if (card->getZone()) + if (card->getZone()->getIsView()) { + ZoneViewZone *view = static_cast(card->getZone()); + if (view->getRevealZone()) { + if (view->getWriteableRevealZone()) + writeableCard = true; + else + revealedCard = true; + } + } + + if (revealedCard) cardMenu->addAction(aHide); - else if (getLocal()) { + else if (writeableCard) { if (moveMenu->isEmpty()) { moveMenu->addAction(aMoveToTopLibrary); moveMenu->addAction(aMoveToBottomLibrary); diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index 622c386b8..d0a772140 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -148,6 +148,7 @@ private slots: void actHide(); private: + TabGame *game; QMenu *playerMenu, *handMenu, *graveMenu, *rfgMenu, *libraryMenu, *sbMenu, *countersMenu, *sayMenu, *mRevealLibrary, *mRevealTopCard, *mRevealHand, *mRevealRandomHandCard; QList playerLists; @@ -160,7 +161,6 @@ private: *aDrawCard, *aDrawCards, *aUndoDraw, *aMulligan, *aShuffle, *aUntapAll, *aRollDie, *aCreateToken, *aCreateAnotherToken, *aCardMenu; - CardItem *activeCard; QList aAddCounter, aSetCounter, aRemoveCounter; QAction *aPlay, @@ -250,6 +250,7 @@ public: ~Player(); void retranslateUi(); void clear(); + TabGame *getGame() const { return game; } QMenu *getPlayerMenu() const { return playerMenu; } int getId() const { return id; } QString getName() const; @@ -260,7 +261,6 @@ public: const QMap &getArrows() const { return arrows; } void setCardMenu(QMenu *menu); QMenu *getCardMenu() const; - void setActiveCard(CardItem *card) { activeCard = card; } void updateCardMenu(CardItem *card, QMenu *cardMenu, QMenu *ptMenu, QMenu *moveMenu); bool getActive() const { return active; } void setActive(bool _active); diff --git a/cockatrice/src/stackzone.cpp b/cockatrice/src/stackzone.cpp index 938dcdfcd..216dac991 100644 --- a/cockatrice/src/stackzone.cpp +++ b/cockatrice/src/stackzone.cpp @@ -60,6 +60,7 @@ void StackZone::handleDropEvent(const QList &dragItems, CardZone return; Command_MoveCard cmd; + cmd.set_start_player_id(startZone->getPlayer()->getId()); cmd.set_start_zone(startZone->getName().toStdString()); cmd.set_target_player_id(player->getId()); cmd.set_target_zone(getName().toStdString()); diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index 27b15485d..f4858fe72 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -210,6 +210,7 @@ TabGame::TabGame(GameReplay *_replay) started(false), resuming(false), currentPhase(-1), + activeCard(0), replay(_replay), currentReplayStep(0) { @@ -355,6 +356,7 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList &_client started(false), resuming(event.resuming()), currentPhase(-1), + activeCard(0), replay(0) { gameTimer = new QTimer(this); @@ -1063,6 +1065,7 @@ void TabGame::newCardAdded(AbstractCardItem *card) connect(card, SIGNAL(hovered(AbstractCardItem *)), cardInfo, SLOT(setCard(AbstractCardItem *))); connect(card, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(card, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString))); + connect(card, SIGNAL(updateCardMenu(AbstractCardItem*,QMenu*,QMenu*,QMenu*)), this, SLOT(updateCardMenu(AbstractCardItem*,QMenu*,QMenu*,QMenu*))); } CardItem *TabGame::getCard(int playerId, const QString &zoneName, int cardId) const @@ -1102,3 +1105,16 @@ Player *TabGame::getActiveLocalPlayer() const return 0; } +#include +void TabGame::updateCardMenu(AbstractCardItem *card, QMenu *cardMenu, QMenu *ptMenu, QMenu *moveMenu) +{ + Player *p; + if ((clients.size() > 1) || !players.contains(localPlayerId)) { + qDebug("BUG"); + p = card->getOwner(); + } else { + p = players.value(localPlayerId); + qDebug() << "GEFUNDEN" << localPlayerId << p->getName(); + } + p->updateCardMenu(static_cast(card), cardMenu, ptMenu, moveMenu); +} diff --git a/cockatrice/src/tab_game.h b/cockatrice/src/tab_game.h index bb4dda88e..ca2395fe5 100644 --- a/cockatrice/src/tab_game.h +++ b/cockatrice/src/tab_game.h @@ -110,6 +110,7 @@ private: QStringList phasesList; int currentPhase; int activePlayer; + CardItem *activeCard; // Replay related members GameReplay *replay; @@ -177,6 +178,7 @@ private slots: void incrementGameTime(); void adminLockChanged(bool lock); void newCardAdded(AbstractCardItem *card); + void updateCardMenu(AbstractCardItem *card, QMenu *cardMenu, QMenu *ptMenu, QMenu *moveMenu); void actConcede(); void actLeaveGame(); @@ -201,6 +203,9 @@ public: bool getSpectatorsSeeEverything() const { return spectatorsSeeEverything; } Player *getActiveLocalPlayer() const; AbstractClient *getClientForPlayer(int playerId) const; + + void setActiveCard(CardItem *_card) { activeCard = _card; } + CardItem *getActiveCard() const { return activeCard; } void processGameEventContainer(const GameEventContainer &cont, AbstractClient *client); PendingCommand *prepareGameCommand(const ::google::protobuf::Message &cmd); diff --git a/cockatrice/src/tablezone.cpp b/cockatrice/src/tablezone.cpp index 1154d3932..63c17a5fa 100644 --- a/cockatrice/src/tablezone.cpp +++ b/cockatrice/src/tablezone.cpp @@ -97,6 +97,7 @@ void TableZone::handleDropEvent(const QList &dragItems, CardZone void TableZone::handleDropEventByGrid(const QList &dragItems, CardZone *startZone, const QPoint &gridPoint) { Command_MoveCard cmd; + cmd.set_start_player_id(startZone->getPlayer()->getId()); cmd.set_start_zone(startZone->getName().toStdString()); cmd.set_target_player_id(player->getId()); cmd.set_target_zone(getName().toStdString()); diff --git a/cockatrice/src/zoneviewwidget.cpp b/cockatrice/src/zoneviewwidget.cpp index 5bcb66a9e..a9e62cfe0 100644 --- a/cockatrice/src/zoneviewwidget.cpp +++ b/cockatrice/src/zoneviewwidget.cpp @@ -55,7 +55,7 @@ void TitleLabel::mouseMoveEvent(QGraphicsSceneMouseEvent *event) emit mouseMoved(event->scenePos() - buttonDownPos); } -ZoneViewWidget::ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards, bool _revealZone, const QList &cardList) +ZoneViewWidget::ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards, bool _revealZone, bool _writeableRevealZone, const QList &cardList) : QGraphicsWidget(0, Qt::Tool | Qt::FramelessWindowHint), player(_player) { setAcceptHoverEvents(true); @@ -105,7 +105,7 @@ ZoneViewWidget::ZoneViewWidget(Player *_player, CardZone *_origZone, int numberC extraHeight = vbox->sizeHint(Qt::PreferredSize).height(); resize(150, 150); - zone = new ZoneViewZone(player, _origZone, numberCards, _revealZone, this); + zone = new ZoneViewZone(player, _origZone, numberCards, _revealZone, _writeableRevealZone, this); vbox->addItem(zone); if (sortByNameCheckBox) { diff --git a/cockatrice/src/zoneviewwidget.h b/cockatrice/src/zoneviewwidget.h index af414dfa3..0b8eef7a6 100644 --- a/cockatrice/src/zoneviewwidget.h +++ b/cockatrice/src/zoneviewwidget.h @@ -51,7 +51,7 @@ private slots: void zoneDeleted(); void moveWidget(QPointF scenePos); public: - ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards = 0, bool _revealZone = false, const QList &cardList = QList()); + ZoneViewWidget(Player *_player, CardZone *_origZone, int numberCards = 0, bool _revealZone = false, bool _writeableRevealZone = false, const QList &cardList = QList()); ZoneViewZone *getZone() const { return zone; } void retranslateUi(); protected: diff --git a/cockatrice/src/zoneviewzone.cpp b/cockatrice/src/zoneviewzone.cpp index 81003d1d5..cd27984ba 100644 --- a/cockatrice/src/zoneviewzone.cpp +++ b/cockatrice/src/zoneviewzone.cpp @@ -10,10 +10,11 @@ #include "pb/response_dump_zone.pb.h" #include "pending_command.h" -ZoneViewZone::ZoneViewZone(Player *_p, CardZone *_origZone, int _numberCards, bool _revealZone, QGraphicsItem *parent) - : SelectZone(_p, _origZone->getName(), false, false, true, parent, true), bRect(QRectF()), minRows(0), numberCards(_numberCards), origZone(_origZone), revealZone(_revealZone), sortByName(false), sortByType(false) +ZoneViewZone::ZoneViewZone(Player *_p, CardZone *_origZone, int _numberCards, bool _revealZone, bool _writeableRevealZone, QGraphicsItem *parent) + : SelectZone(_p, _origZone->getName(), false, false, true, parent, true), bRect(QRectF()), minRows(0), numberCards(_numberCards), origZone(_origZone), revealZone(_revealZone), writeableRevealZone(_writeableRevealZone), sortByName(false), sortByType(false) { - if (!revealZone) + qDebug() << "revealZone=" << revealZone << "writeable=" << writeableRevealZone; + if (!(revealZone && !writeableRevealZone)) origZone->setView(this); } @@ -21,7 +22,7 @@ ZoneViewZone::~ZoneViewZone() { emit beingDeleted(); qDebug("ZoneViewZone destructor"); - if (!revealZone) + if (!(revealZone && !writeableRevealZone)) origZone->setView(NULL); } @@ -135,6 +136,7 @@ void ZoneViewZone::addCardImpl(CardItem *card, int x, int /*y*/) void ZoneViewZone::handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &/*dropPoint*/) { Command_MoveCard cmd; + cmd.set_start_player_id(startZone->getPlayer()->getId()); cmd.set_start_zone(startZone->getName().toStdString()); cmd.set_target_player_id(player->getId()); cmd.set_target_zone(getName().toStdString()); @@ -168,3 +170,14 @@ QSizeF ZoneViewZone::sizeHint(Qt::SizeHint /*which*/, const QSizeF & /*constrain { return optimumRect.size(); } + +void ZoneViewZone::setWriteableRevealZone(bool _writeableRevealZone) +{ + if (writeableRevealZone && !_writeableRevealZone) + origZone->setView(this); + else if (!writeableRevealZone && _writeableRevealZone) + origZone->setView(NULL); + + writeableRevealZone = _writeableRevealZone; + +} diff --git a/cockatrice/src/zoneviewzone.h b/cockatrice/src/zoneviewzone.h index 75d48d8e6..aab0d0f5b 100644 --- a/cockatrice/src/zoneviewzone.h +++ b/cockatrice/src/zoneviewzone.h @@ -15,10 +15,10 @@ private: int minRows, numberCards; void handleDropEvent(const QList &dragItems, CardZone *startZone, const QPoint &dropPoint); CardZone *origZone; - bool revealZone; + bool revealZone, writeableRevealZone; bool sortByName, sortByType; public: - ZoneViewZone(Player *_p, CardZone *_origZone, int _numberCards = -1, bool _revealZone = false, QGraphicsItem *parent = 0); + ZoneViewZone(Player *_p, CardZone *_origZone, int _numberCards = -1, bool _revealZone = false, bool _writeableRevealZone = false, QGraphicsItem *parent = 0); ~ZoneViewZone(); QRectF boundingRect() const; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); @@ -28,6 +28,9 @@ public: int getNumberCards() const { return numberCards; } void setGeometry(const QRectF &rect); QRectF getOptimumRect() const { return optimumRect; } + bool getRevealZone() const { return revealZone; } + bool getWriteableRevealZone() const { return writeableRevealZone; } + void setWriteableRevealZone(bool _writeableRevealZone); public slots: void setSortByName(int _sortByName); void setSortByType(int _sortByType); diff --git a/common/pb/command_move_card.proto b/common/pb/command_move_card.proto index 401c5a480..315d64235 100644 --- a/common/pb/command_move_card.proto +++ b/common/pb/command_move_card.proto @@ -14,11 +14,12 @@ message Command_MoveCard { extend GameCommand { optional Command_MoveCard ext = 1027; } - optional string start_zone = 1; - optional ListOfCardsToMove cards_to_move = 2; - optional sint32 target_player_id = 3 [default = -1]; - optional string target_zone = 4; - optional sint32 x = 5 [default = -1]; - optional sint32 y = 6 [default = -1]; + optional sint32 start_player_id = 1 [default = -1]; + optional string start_zone = 2; + optional ListOfCardsToMove cards_to_move = 3; + optional sint32 target_player_id = 4 [default = -1]; + optional string target_zone = 5; + optional sint32 x = 6 [default = -1]; + optional sint32 y = 7 [default = -1]; } diff --git a/common/pb/command_reveal_cards.proto b/common/pb/command_reveal_cards.proto index 6f59a92b1..af108abce 100644 --- a/common/pb/command_reveal_cards.proto +++ b/common/pb/command_reveal_cards.proto @@ -6,4 +6,5 @@ message Command_RevealCards { optional string zone_name = 1; optional sint32 card_id = 2 [default = -1]; optional sint32 player_id = 3 [default = -1]; + optional bool grant_write_access = 4; } diff --git a/common/pb/event_move_card.proto b/common/pb/event_move_card.proto index 27ba18d56..048f3a8d9 100644 --- a/common/pb/event_move_card.proto +++ b/common/pb/event_move_card.proto @@ -6,12 +6,13 @@ message Event_MoveCard { } optional sint32 card_id = 1 [default = -1]; optional string card_name = 2; - optional string start_zone = 3; - optional sint32 position = 4 [default = -1]; - optional sint32 target_player_id = 5 [default = -1]; - optional string target_zone = 6; - optional sint32 x = 7 [default = -1]; - optional sint32 y = 8 [default = -1]; - optional sint32 new_card_id = 9 [default = -1]; - optional bool face_down = 10; + optional sint32 start_player_id = 3 [default = -1]; + optional string start_zone = 4; + optional sint32 position = 5 [default = -1]; + optional sint32 target_player_id = 6 [default = -1]; + optional string target_zone = 7; + optional sint32 x = 8 [default = -1]; + optional sint32 y = 9 [default = -1]; + optional sint32 new_card_id = 10 [default = -1]; + optional bool face_down = 11; } diff --git a/common/pb/event_reveal_cards.proto b/common/pb/event_reveal_cards.proto index 294852631..1bb386e2d 100644 --- a/common/pb/event_reveal_cards.proto +++ b/common/pb/event_reveal_cards.proto @@ -9,4 +9,5 @@ message Event_RevealCards { optional sint32 card_id = 2 [default = -1]; optional sint32 other_player_id = 3 [default = -1]; repeated ServerInfo_Card cards = 4; + optional bool grant_write_access = 5; } diff --git a/common/server_cardzone.cpp b/common/server_cardzone.cpp index 6cc7714ce..a16200ecc 100644 --- a/common/server_cardzone.cpp +++ b/common/server_cardzone.cpp @@ -43,6 +43,8 @@ void Server_CardZone::shuffle() for (int i = cards.size(); i; i--) temp.append(cards.takeAt(rng->getNumber(0, i - 1))); cards = temp; + + playersWithWritePermission.clear(); } int Server_CardZone::removeCard(Server_Card *card) @@ -206,4 +208,10 @@ void Server_CardZone::clear() for (int i = 0; i < cards.size(); i++) delete cards.at(i); cards.clear(); + playersWithWritePermission.clear(); +} + +void Server_CardZone::addWritePermission(int playerId) +{ + playersWithWritePermission.insert(playerId); } diff --git a/common/server_cardzone.h b/common/server_cardzone.h index c4a1f9985..e61543a77 100644 --- a/common/server_cardzone.h +++ b/common/server_cardzone.h @@ -23,6 +23,7 @@ #include #include #include +#include #include "pb/serverinfo_zone.pb.h" class Server_Card; @@ -37,6 +38,7 @@ private: bool has_coords; ServerInfo_Zone::ZoneType type; int cardsBeingLookedAt; + QSet playersWithWritePermission; public: Server_CardZone(Server_Player *_player, const QString &_name, bool _has_coords, ServerInfo_Zone::ZoneType _type); ~Server_CardZone(); @@ -60,6 +62,8 @@ public: void insertCard(Server_Card *card, int x, int y); void shuffle(); void clear(); + void addWritePermission(int playerId); + const QSet &getPlayersWithWritePermission() const { return playersWithWritePermission; } }; #endif diff --git a/common/server_player.cpp b/common/server_player.cpp index c21c720c2..39b6e6daa 100644 --- a/common/server_player.cpp +++ b/common/server_player.cpp @@ -342,21 +342,6 @@ Response::ResponseCode Server_Player::undoDraw(GameEventStorage &ges) return retVal; } -Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, const QString &_startZone, const QList &_cards, int targetPlayerId, const QString &_targetZone, int x, int y) -{ - QMutexLocker locker(&game->gameMutex); - - Server_CardZone *startzone = getZones().value(_startZone); - Server_Player *targetPlayer = game->getPlayers().value(targetPlayerId); - if (!targetPlayer) - return Response::RespNameNotFound; - Server_CardZone *targetzone = targetPlayer->getZones().value(_targetZone); - if ((!startzone) || (!targetzone)) - return Response::RespNameNotFound; - - return moveCard(ges, startzone, _cards, targetzone, x, y); -} - class Server_Player::MoveCardCompareFunctor { private: int x; @@ -510,6 +495,7 @@ Response::ResponseCode Server_Player::moveCard(GameEventStorage &ges, Server_Car privatePosition = position; Event_MoveCard eventOthers; + eventOthers.set_start_player_id(startzone->getPlayer()->getPlayerId()); eventOthers.set_start_zone(startzone->getName().toStdString()); eventOthers.set_target_player_id(targetzone->getPlayer()->getPlayerId()); if (startzone != targetzone) @@ -858,11 +844,31 @@ Response::ResponseCode Server_Player::cmdMoveCard(const Command_MoveCard &cmd, R if (conceded) return Response::RespContextError; + Server_Player *startPlayer = game->getPlayers().value(cmd.has_start_player_id() ? cmd.start_player_id() : playerId); + if (!startPlayer) + return Response::RespNameNotFound; + Server_CardZone *startZone = startPlayer->getZones().value(QString::fromStdString(cmd.start_zone())); + if (!startZone) + return Response::RespNameNotFound; + + if ((startPlayer != this) && (!startZone->getPlayersWithWritePermission().contains(playerId))) + return Response::RespContextError; + + Server_Player *targetPlayer = game->getPlayers().value(cmd.target_player_id()); + if (!targetPlayer) + return Response::RespNameNotFound; + Server_CardZone *targetZone = targetPlayer->getZones().value(QString::fromStdString(cmd.target_zone())); + if (!targetZone) + return Response::RespNameNotFound; + + if ((startPlayer != this) && (targetPlayer != this)) + return Response::RespContextError; + QList cardsToMove; for (int i = 0; i < cmd.cards_to_move().card_size(); ++i) cardsToMove.append(&cmd.cards_to_move().card(i)); - return moveCard(ges, QString::fromStdString(cmd.start_zone()), cardsToMove, cmd.target_player_id(), QString::fromStdString(cmd.target_zone()), cmd.x(), cmd.y()); + return moveCard(ges, startZone, cardsToMove, targetZone, cmd.x(), cmd.y()); } Response::ResponseCode Server_Player::cmdFlipCard(const Command_FlipCard &cmd, ResponseContainer & /*rc*/, GameEventStorage &ges) @@ -1470,6 +1476,7 @@ Response::ResponseCode Server_Player::cmdRevealCards(const Command_RevealCards & } Event_RevealCards eventOthers; + eventOthers.set_grant_write_access(cmd.grant_write_access()); eventOthers.set_zone_name(zone->getName().toStdString()); if (cmd.has_card_id()) eventOthers.set_card_id(cmd.card_id()); @@ -1511,10 +1518,20 @@ Response::ResponseCode Server_Player::cmdRevealCards(const Command_RevealCards & } if (cmd.has_player_id()) { + if (cmd.grant_write_access()) + zone->addWritePermission(cmd.player_id()); + ges.enqueueGameEvent(eventPrivate, playerId, GameEventStorageItem::SendToPrivate, cmd.player_id()); ges.enqueueGameEvent(eventOthers, playerId, GameEventStorageItem::SendToOthers); - } else + } else { + if (cmd.grant_write_access()) { + const QList &playerIds = game->getPlayers().keys(); + for (int i = 0; i < playerIds.size(); ++i) + zone->addWritePermission(playerIds[i]); + } + ges.enqueueGameEvent(eventPrivate, playerId); + } return Response::RespOk; } diff --git a/common/server_player.h b/common/server_player.h index 927e69c19..205b454f2 100644 --- a/common/server_player.h +++ b/common/server_player.h @@ -117,7 +117,6 @@ public: Response::ResponseCode drawCards(GameEventStorage &ges, int number); Response::ResponseCode undoDraw(GameEventStorage &ges); - Response::ResponseCode moveCard(GameEventStorage &ges, const QString &_startZone, const QList &_cards, int _targetPlayer, const QString &_targetZone, int _x, int _y); Response::ResponseCode moveCard(GameEventStorage &ges, Server_CardZone *startzone, const QList &_cards, Server_CardZone *targetzone, int x, int y, bool fixFreeSpaces = true, bool undoingDraw = false); void unattachCard(GameEventStorage &ges, Server_Card *card); Response::ResponseCode setCardAttrHelper(GameEventStorage &ges, const QString &zone, int cardId, CardAttribute attribute, const QString &attrValue); diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp index 1aa2c27be..18c7710b5 100644 --- a/common/server_protocolhandler.cpp +++ b/common/server_protocolhandler.cpp @@ -194,8 +194,6 @@ Response::ResponseCode Server_ProtocolHandler::processGameCommandContainer(const if (authState == NotLoggedIn) return Response::RespLoginNeeded; - qDebug() << QString::fromStdString(cont.DebugString()); - QMap > gameMap = getGames(); if (!gameMap.contains(cont.game_id())) return Response::RespNotInRoom;