diff --git a/cockatrice/src/game.cpp b/cockatrice/src/game.cpp index 83b84679..6af95afd 100644 --- a/cockatrice/src/game.cpp +++ b/cockatrice/src/game.cpp @@ -493,3 +493,34 @@ void Game::queryGameState() connect(pc, SIGNAL(cardListReceived(QList)), this, SLOT(cardListReceived(QList))); connect(pc, SIGNAL(counterListReceived(QList)), this, SLOT(counterListReceived(QList))); } + +void Game::activePlayerDrawCard() +{ + Player *p = getActiveLocalPlayer(); + if (p) + p->actDrawCard(); +} + +void Game::activePlayerUntapAll() +{ + Player *p = getActiveLocalPlayer(); + if (p) + p->actUntapAll(); +} + +Player *Game::getActiveLocalPlayer() const +{ + int localPlayerCount = 0; + QMapIterator i(players); + while (i.hasNext()) + if (i.next().value()->getLocal()) + ++localPlayerCount; + + i.toFront(); + while (i.hasNext()) { + Player *p = i.next().value(); + if (p->getLocal() && (p->getActive() || (localPlayerCount == 1))) + return p; + } + return 0; +} diff --git a/cockatrice/src/game.h b/cockatrice/src/game.h index e8b733d0..c7dab5bb 100644 --- a/cockatrice/src/game.h +++ b/cockatrice/src/game.h @@ -38,7 +38,12 @@ private: QMap players; bool started; int currentPhase; + + Player *getActiveLocalPlayer() const; public slots: + void activePlayerDrawCard(); + void activePlayerUntapAll(); + void actNextPhase(); void actNextTurn(); private slots: diff --git a/cockatrice/src/player.h b/cockatrice/src/player.h index 784f5046..8877f000 100644 --- a/cockatrice/src/player.h +++ b/cockatrice/src/player.h @@ -39,11 +39,6 @@ public slots: void actUntapAll(); void actRollDie(); void actCreateToken(); - - void actSayMessage(); -private slots: - void updateBoundingRect(); - void actShuffle(); void actDrawCard(); void actDrawCards(); @@ -53,6 +48,10 @@ private slots: void actViewGraveyard(); void actViewRfg(); void actViewSideboard(); + + void actSayMessage(); +private slots: + void updateBoundingRect(); private: QMenu *playerMenu, *handMenu, *graveMenu, *rfgMenu, *libraryMenu, *sbMenu, *countersMenu, *sayMenu; QAction *aMoveToTopLibrary, *aMoveToBottomLibrary, *aMoveToHand, *aMoveToGraveyard, *aMoveToRfg, diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index 8a81c755..b691790c 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -93,6 +93,8 @@ void MainWindow::statusChanged(ProtocolStatus _status) connect(game, SIGNAL(playerAdded(Player *)), this, SLOT(playerAdded(Player *))); connect(game, SIGNAL(playerRemoved(Player *)), scene, SLOT(removePlayer(Player *))); connect(game, SIGNAL(setActivePhase(int)), phasesToolbar, SLOT(setActivePhase(int))); + connect(phasesToolbar, SIGNAL(signalDrawCard()), game, SLOT(activePlayerDrawCard())); + connect(phasesToolbar, SIGNAL(signalUntapAll()), game, SLOT(activePlayerUntapAll())); messageLog->connectToGame(game); aRestartGame->setEnabled(true); aLeaveGame->setEnabled(true); @@ -312,7 +314,6 @@ MainWindow::MainWindow(QTranslator *_translator, QWidget *parent) connect(client, SIGNAL(protocolError()), messageLog, SLOT(logProtocolError())); connect(phasesToolbar, SIGNAL(signalSetPhase(int)), client, SLOT(setActivePhase(int))); connect(phasesToolbar, SIGNAL(signalNextTurn()), client, SLOT(nextTurn())); - connect(phasesToolbar, SIGNAL(signalDrawCard()), client, SLOT(drawCard())); createActions(); createMenus(); diff --git a/servatrice/src/serversocket.cpp b/servatrice/src/serversocket.cpp index ca22b236..3f27b741 100644 --- a/servatrice/src/serversocket.cpp +++ b/servatrice/src/serversocket.cpp @@ -691,16 +691,16 @@ ReturnMessage::ReturnCode ServerSocket::cmdListZones(const QList ¶ QStringList ServerSocket::dumpZoneHelper(ServerSocket *player, PlayerZone *zone, int number_cards) { - QListIterator card_iterator(zone->cards); QStringList result; - for (int i = 0; card_iterator.hasNext() && (i < number_cards || number_cards == -1); i++) { - Card *tmp = card_iterator.next(); - // XXX Face down cards + for (int i = 0; (i < zone->cards.size()) && (i < number_cards || number_cards == -1); i++) { + Card *tmp = zone->cards[i]; + QString displayedName = tmp->getFaceDown() ? QString() : tmp->getName(); + if (zone->getType() != PlayerZone::HiddenZone) result << QString("%1|%2|%3|%4|%5|%6|%7|%8|%9|%10").arg(player->getPlayerId()) .arg(zone->getName()) .arg(tmp->getId()) - .arg(tmp->getName()) + .arg(displayedName) .arg(tmp->getX()) .arg(tmp->getY()) .arg(tmp->getCounters()) @@ -709,7 +709,7 @@ QStringList ServerSocket::dumpZoneHelper(ServerSocket *player, PlayerZone *zone, .arg(tmp->getAnnotation()); else { zone->setCardsBeingLookedAt(number_cards); - result << QString("%1|%2|%3|%4||||||").arg(player->getPlayerId()).arg(zone->getName()).arg(i).arg(tmp->getName()); + result << QString("%1|%2|%3|%4||||||").arg(player->getPlayerId()).arg(zone->getName()).arg(i).arg(displayedName); } } return result;