diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index f8db8b3c..9bbc50fa 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -494,7 +494,7 @@ void TabGame::eventGameStateChanged(Event_GameStateChanged *event, GameEventCont playerListWidget->addPlayer(prop); } player->processPlayerInfo(pl); - if (player->getLocal() && pl->getDeck()) { + if (player->getLocal() && !pl->getDeck()->isEmpty()) { Deck_PictureCacher::cachePictures(pl->getDeck(), this); deckViewContainers.value(player->getId())->setDeck(new DeckList(pl->getDeck())); } diff --git a/common/decklist.cpp b/common/decklist.cpp index eb11c3a7..c52ef8dd 100644 --- a/common/decklist.cpp +++ b/common/decklist.cpp @@ -470,6 +470,11 @@ void DeckList::cleanList() setComments(); } +bool DeckList::isEmpty() const +{ + return root->isEmpty(); +} + DecklistCardNode *DeckList::addCard(const QString &cardName, const QString &zoneName) { InnerDecklistNode *zoneNode = dynamic_cast(root->findChild(zoneName)); diff --git a/common/decklist.h b/common/decklist.h index 396594c3..55545a28 100644 --- a/common/decklist.h +++ b/common/decklist.h @@ -147,6 +147,7 @@ public: static FileFormat getFormatFromNameFilter(const QString &selectedNameFilter); void cleanList(); + bool isEmpty() const; InnerDecklistNode *getRoot() const { return root; } DecklistCardNode *addCard(const QString &cardName, const QString &zoneName); diff --git a/common/protocol.cpp b/common/protocol.cpp index a4495186..30434a5e 100644 --- a/common/protocol.cpp +++ b/common/protocol.cpp @@ -358,8 +358,8 @@ Event_GameStateChanged::Event_GameStateChanged(bool _gameStarted, int _activePla itemList.append(_playerList[i]); } -Event_PlayerPropertiesChanged::Event_PlayerPropertiesChanged(ServerInfo_PlayerProperties *_properties) - : GameEvent("player_properties_changed", -1) +Event_PlayerPropertiesChanged::Event_PlayerPropertiesChanged(int _playerId, ServerInfo_PlayerProperties *_properties) + : GameEvent("player_properties_changed", _playerId) { if (!_properties) _properties = new ServerInfo_PlayerProperties; diff --git a/common/protocol.h b/common/protocol.h index b5420b14..924a5b72 100644 --- a/common/protocol.h +++ b/common/protocol.h @@ -337,7 +337,7 @@ public: class Event_PlayerPropertiesChanged : public GameEvent { Q_OBJECT public: - Event_PlayerPropertiesChanged(ServerInfo_PlayerProperties *_properties = 0); + Event_PlayerPropertiesChanged(int _playerId = -1, ServerInfo_PlayerProperties *_properties = 0); static SerializableItem *newItem() { return new Event_PlayerPropertiesChanged; } int getItemId() const { return ItemId_Event_PlayerPropertiesChanged; } ServerInfo_PlayerProperties *getProperties() const { return static_cast(itemMap.value("player_properties")); } diff --git a/common/server_game.cpp b/common/server_game.cpp index 3050f0f0..d8afb5cc 100644 --- a/common/server_game.cpp +++ b/common/server_game.cpp @@ -234,7 +234,7 @@ void Server_Game::removePlayer(Server_Player *player) void Server_Game::setActivePlayer(int _activePlayer) { activePlayer = _activePlayer; - sendGameEvent(new Event_SetActivePlayer(-1, activePlayer)); + sendGameEvent(new Event_SetActivePlayer(activePlayer, activePlayer)); setActivePhase(0); } diff --git a/common/server_protocolhandler.cpp b/common/server_protocolhandler.cpp index 04892e5e..cfc332d1 100644 --- a/common/server_protocolhandler.cpp +++ b/common/server_protocolhandler.cpp @@ -365,7 +365,7 @@ ResponseCode Server_ProtocolHandler::cmdDeckSelect(Command_DeckSelect *cmd, Comm } player->setDeck(deck, cmd->getDeckId()); - game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getProperties()), new Context_DeckSelect(cmd->getDeckId())); + game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getPlayerId(), player->getProperties()), new Context_DeckSelect(cmd->getDeckId())); cont->setResponse(new Response_DeckDownload(cont->getCmdId(), RespOk, new DeckList(deck))); return RespNothing; @@ -392,7 +392,7 @@ ResponseCode Server_ProtocolHandler::cmdConcede(Command_Concede * /*cmd*/, Comma return RespFunctionNotAllowed; player->setConceded(true); - game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getProperties()), new Context_Concede); + game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getPlayerId(), player->getProperties()), new Context_Concede); game->stopGameIfFinished(); return RespOk; } @@ -409,7 +409,7 @@ ResponseCode Server_ProtocolHandler::cmdReadyStart(Command_ReadyStart *cmd, Comm return RespContextError; player->setReadyStart(cmd->getReady()); - game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getProperties()), new Context_ReadyStart); + game->sendGameEvent(new Event_PlayerPropertiesChanged(player->getPlayerId(), player->getProperties()), new Context_ReadyStart); game->startGameIfReady(); return RespOk; }