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())) {
|
if (spectators.contains(event->getPlayerId())) {
|
||||||
switch (event->getItemId()) {
|
switch (event->getItemId()) {
|
||||||
case ItemId_Event_Say: eventSpectatorSay(qobject_cast<Event_Say *>(event), context); break;
|
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: {
|
default: {
|
||||||
qDebug() << "unhandled spectator game event";
|
qDebug() << "unhandled spectator game event";
|
||||||
break;
|
break;
|
||||||
|
@ -305,6 +306,16 @@ void TabGame::eventSpectatorSay(Event_Say *event, GameEventContext * /*context*/
|
||||||
messageLog->logSpectatorSay(spectators.value(event->getPlayerId()), event->getMessage());
|
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*/)
|
void TabGame::eventGameStateChanged(Event_GameStateChanged *event, GameEventContext * /*context*/)
|
||||||
{
|
{
|
||||||
const QList<ServerInfo_Player *> &plList = event->getPlayerList();
|
const QList<ServerInfo_Player *> &plList = event->getPlayerList();
|
||||||
|
@ -382,10 +393,6 @@ void TabGame::eventLeave(Event_Leave *event, GameEventContext * /*context*/)
|
||||||
playerListWidget->removePlayer(playerId);
|
playerListWidget->removePlayer(playerId);
|
||||||
players.remove(playerId);
|
players.remove(playerId);
|
||||||
delete player;
|
delete player;
|
||||||
} else if (spectators.contains(playerId)) {
|
|
||||||
messageLog->logLeaveSpectator(spectators.value(playerId));
|
|
||||||
playerListWidget->removePlayer(playerId);
|
|
||||||
spectators.remove(playerId);
|
|
||||||
}
|
}
|
||||||
emit userEvent();
|
emit userEvent();
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,8 @@ private:
|
||||||
void stopGame();
|
void stopGame();
|
||||||
|
|
||||||
void eventSpectatorSay(Event_Say *event, GameEventContext *context);
|
void eventSpectatorSay(Event_Say *event, GameEventContext *context);
|
||||||
|
void eventSpectatorLeave(Event_Leave *event, GameEventContext *context);
|
||||||
|
|
||||||
void eventGameStateChanged(Event_GameStateChanged *event, GameEventContext *context);
|
void eventGameStateChanged(Event_GameStateChanged *event, GameEventContext *context);
|
||||||
void eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event, GameEventContext *context);
|
void eventPlayerPropertiesChanged(Event_PlayerPropertiesChanged *event, GameEventContext *context);
|
||||||
void eventJoin(Event_Join *event, GameEventContext *context);
|
void eventJoin(Event_Join *event, GameEventContext *context);
|
||||||
|
|
Loading…
Reference in a new issue