spectator leave bugfix
This commit is contained in:
parent
ca12aeb5a7
commit
ac15d1b5e8
2 changed files with 13 additions and 4 deletions
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue