From ac15d1b5e8d6d7f4fbea3c3358089c72cc3a823b Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Fri, 28 May 2010 16:47:08 +0200 Subject: [PATCH] spectator leave bugfix --- cockatrice/src/tab_game.cpp | 15 +++++++++++---- cockatrice/src/tab_game.h | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cockatrice/src/tab_game.cpp b/cockatrice/src/tab_game.cpp index 7ee11070..c4535f03 100644 --- a/cockatrice/src/tab_game.cpp +++ b/cockatrice/src/tab_game.cpp @@ -232,6 +232,7 @@ void TabGame::processGameEventContainer(GameEventContainer *cont) if (spectators.contains(event->getPlayerId())) { switch (event->getItemId()) { case ItemId_Event_Say: eventSpectatorSay(qobject_cast(event), context); break; + case ItemId_Event_Leave: eventSpectatorLeave(qobject_cast(event), context); break; default: { qDebug() << "unhandled spectator game event"; break; @@ -305,6 +306,16 @@ void TabGame::eventSpectatorSay(Event_Say *event, GameEventContext * /*context*/ messageLog->logSpectatorSay(spectators.value(event->getPlayerId()), event->getMessage()); } +void TabGame::eventSpectatorLeave(Event_Leave *event, GameEventContext * /*context*/) +{ + int playerId = event->getPlayerId(); + messageLog->logLeaveSpectator(spectators.value(playerId)); + playerListWidget->removePlayer(playerId); + spectators.remove(playerId); + + emit userEvent(); +} + void TabGame::eventGameStateChanged(Event_GameStateChanged *event, GameEventContext * /*context*/) { const QList &plList = event->getPlayerList(); @@ -382,10 +393,6 @@ void TabGame::eventLeave(Event_Leave *event, GameEventContext * /*context*/) playerListWidget->removePlayer(playerId); players.remove(playerId); delete player; - } else if (spectators.contains(playerId)) { - messageLog->logLeaveSpectator(spectators.value(playerId)); - playerListWidget->removePlayer(playerId); - spectators.remove(playerId); } emit userEvent(); } diff --git a/cockatrice/src/tab_game.h b/cockatrice/src/tab_game.h index 3f93b8e9..c9c6991f 100644 --- a/cockatrice/src/tab_game.h +++ b/cockatrice/src/tab_game.h @@ -76,6 +76,8 @@ private: void stopGame(); void eventSpectatorSay(Event_Say *event, GameEventContext *context); + void eventSpectatorLeave(Event_Leave *event, GameEventContext *context); + void eventGameStateChanged(Event_GameStateChanged *event, GameEventContext *context); void eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event, GameEventContext *context); void eventJoin(Event_Join *event, GameEventContext *context);