mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-30 23:50:19 -07:00
spectator leave bugfix
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user