spectator leave bugfix

This commit is contained in:
Max-Wilhelm Bruker 2010-05-28 16:47:08 +02:00
parent ca12aeb5a7
commit ac15d1b5e8
2 changed files with 13 additions and 4 deletions

View file

@ -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_Say *>(event), context); break;
case ItemId_Event_Leave: eventSpectatorLeave(qobject_cast<Event_Leave *>(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<ServerInfo_Player *> &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();
}

View file

@ -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);