Signals/callbacks when spectators join or leave.

This commit is contained in:
lotodore
2013-08-19 22:50:56 +02:00
parent ffafa23efc
commit 1d0b9fc5f2
15 changed files with 176 additions and 11 deletions
+1
View File
@@ -100,6 +100,7 @@ struct GameInfo {
GameMode mode; GameMode mode;
unsigned adminPlayerId; unsigned adminPlayerId;
PlayerIdList players; PlayerIdList players;
PlayerIdList spectators;
bool isPasswordProtected; bool isPasswordProtected;
}; };
+16
View File
@@ -200,6 +200,14 @@ void ServerGuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string
{ {
if (myClientcb) myClientcb->SignalNetClientPlayerLeft(playerId, playerName, removeReason); if (myClientcb) myClientcb->SignalNetClientPlayerLeft(playerId, playerName, removeReason);
} }
void ServerGuiWrapper::SignalNetClientSpectatorJoined(unsigned playerId, const string &playerName)
{
if (myClientcb) myClientcb->SignalNetClientSpectatorJoined(playerId, playerName);
}
void ServerGuiWrapper::SignalNetClientSpectatorLeft(unsigned playerId, const string &playerName, int removeReason)
{
if (myClientcb) myClientcb->SignalNetClientSpectatorLeft(playerId, playerName, removeReason);
}
void ServerGuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName) void ServerGuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName)
{ {
if (myClientcb) myClientcb->SignalNetClientNewGameAdmin(playerId, playerName); if (myClientcb) myClientcb->SignalNetClientNewGameAdmin(playerId, playerName);
@@ -228,6 +236,14 @@ void ServerGuiWrapper::SignalNetClientGameListPlayerLeft(unsigned gameId, unsign
{ {
if (myClientcb) myClientcb->SignalNetClientGameListPlayerLeft(gameId, playerId); if (myClientcb) myClientcb->SignalNetClientGameListPlayerLeft(gameId, playerId);
} }
void ServerGuiWrapper::SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId)
{
if (myClientcb) myClientcb->SignalNetClientGameListSpectatorJoined(gameId, playerId);
}
void ServerGuiWrapper::SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId)
{
if (myClientcb) myClientcb->SignalNetClientGameListSpectatorLeft(gameId, playerId);
}
void ServerGuiWrapper::SignalNetClientGameStart(boost::shared_ptr<Game> game) void ServerGuiWrapper::SignalNetClientGameStart(boost::shared_ptr<Game> game)
{ {
if (myClientcb) myClientcb->SignalNetClientGameStart(game); if (myClientcb) myClientcb->SignalNetClientGameStart(game);
+4
View File
@@ -132,6 +132,8 @@ public:
void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin);
void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName); void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName);
void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason); void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason);
void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName);
void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason);
void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName); void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName);
void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg);
void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg);
@@ -144,6 +146,8 @@ public:
void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId);
void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId);
void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId);
void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId);
void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId);
void SignalNetClientGameStart(boost::shared_ptr<Game> game); void SignalNetClientGameStart(boost::shared_ptr<Game> game);
void SignalNetClientServerListAdd(unsigned serverId); void SignalNetClientServerListAdd(unsigned serverId);
+6
View File
@@ -676,6 +676,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent)
connect(this, SIGNAL(signalEndVoteOnKick()), this, SLOT(endVoteOnKick())); connect(this, SIGNAL(signalEndVoteOnKick()), this, SLOT(endVoteOnKick()));
connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned)), this, SLOT(netClientPlayerLeft(unsigned))); connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned)), this, SLOT(netClientPlayerLeft(unsigned)));
connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned)), this, SLOT(netClientSpectatorLeft(unsigned)));
#ifdef GUI_800x480 #ifdef GUI_800x480
connect( tabsButton, SIGNAL( clicked() ), this, SLOT( tabsButtonClicked() ) ); connect( tabsButton, SIGNAL( clicked() ), this, SLOT( tabsButtonClicked() ) );
@@ -4299,6 +4300,11 @@ void gameTableImpl::netClientPlayerLeft(unsigned /*playerId*/)
} }
} }
void gameTableImpl::netClientSpectatorLeft(unsigned /*playerId*/)
{
// TODO
}
void gameTableImpl::registeredUserMode() void gameTableImpl::registeredUserMode()
{ {
#ifdef GUI_800x480 #ifdef GUI_800x480
+2
View File
@@ -166,6 +166,7 @@ signals:
void signalChangeVoteOnKickButtonsState(bool showHide); void signalChangeVoteOnKickButtonsState(bool showHide);
void signalEndVoteOnKick(); void signalEndVoteOnKick();
void signalNetClientPlayerLeft(unsigned playerId); void signalNetClientPlayerLeft(unsigned playerId);
void signalNetClientSpectatorLeft(unsigned playerId);
public slots: public slots:
@@ -347,6 +348,7 @@ public slots:
void restoreGameTableGeometry(); void restoreGameTableGeometry();
void netClientPlayerLeft(unsigned playerId); void netClientPlayerLeft(unsigned playerId);
void netClientSpectatorLeft(unsigned playerId);
void registeredUserMode(); void registeredUserMode();
void guestUserMode(); void guestUserMode();
+11
View File
@@ -58,6 +58,8 @@ guiLog::guiLog(gameTableImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir(
connect(this, SIGNAL(signalLogPlayerLeftMsg(QString, int)), this, SLOT(logPlayerLeftMsg(QString, int))); connect(this, SIGNAL(signalLogPlayerLeftMsg(QString, int)), this, SLOT(logPlayerLeftMsg(QString, int)));
connect(this, SIGNAL(signalLogPlayerJoinedMsg(QString)), this, SLOT(logPlayerJoinedMsg(QString))); connect(this, SIGNAL(signalLogPlayerJoinedMsg(QString)), this, SLOT(logPlayerJoinedMsg(QString)));
connect(this, SIGNAL(signalLogNewGameAdminMsg(QString)), this, SLOT(logNewGameAdminMsg(QString))); connect(this, SIGNAL(signalLogNewGameAdminMsg(QString)), this, SLOT(logNewGameAdminMsg(QString)));
connect(this, SIGNAL(signalLogSpectatorLeftMsg(QString, int)), this, SLOT(logSpectatorLeftMsg(QString, int)));
connect(this, SIGNAL(signalLogSpectatorJoinedMsg(QString)), this, SLOT(logSpectatorJoinedMsg(QString)));
connect(this, SIGNAL(signalLogPlayerWinGame(QString, int)), this, SLOT(logPlayerWinGame(QString, int))); connect(this, SIGNAL(signalLogPlayerWinGame(QString, int)), this, SLOT(logPlayerWinGame(QString, int)));
connect(this, SIGNAL(signalFlushLogAtGame(int)), this, SLOT(flushLogAtGame(int))); connect(this, SIGNAL(signalFlushLogAtGame(int)), this, SLOT(flushLogAtGame(int)));
connect(this, SIGNAL(signalFlushLogAtHand()), this, SLOT(flushLogAtHand())); connect(this, SIGNAL(signalFlushLogAtHand()), this, SLOT(flushLogAtHand()));
@@ -537,6 +539,15 @@ void guiLog::logPlayerJoinedMsg(QString playerName)
#endif #endif
} }
void guiLog::logSpectatorLeftMsg(QString playerName, int wasKicked)
{
// TODO
}
void guiLog::logSpectatorJoinedMsg(QString playerName)
{
// TODO
}
void guiLog::logPlayerWinGame(QString playerName, int gameID) void guiLog::logPlayerWinGame(QString playerName, int gameID)
{ {
+4
View File
@@ -75,6 +75,8 @@ public slots:
void logPlayerLeftMsg(QString playerName, int wasKicked); void logPlayerLeftMsg(QString playerName, int wasKicked);
void logPlayerJoinedMsg(QString playerName); void logPlayerJoinedMsg(QString playerName);
void logNewGameAdminMsg(QString playerName); void logNewGameAdminMsg(QString playerName);
void logSpectatorLeftMsg(QString playerName, int wasKicked);
void logSpectatorJoinedMsg(QString playerName);
void logPlayerWinGame(QString playerName, int gameID); void logPlayerWinGame(QString playerName, int gameID);
void flushLogAtGame(int gameID); void flushLogAtGame(int gameID);
void flushLogAtHand(); void flushLogAtHand();
@@ -106,6 +108,8 @@ signals:
void signalLogFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows"); void signalLogFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows");
void signalLogPlayerLeftMsg(QString playerName, int wasKicked); void signalLogPlayerLeftMsg(QString playerName, int wasKicked);
void signalLogPlayerJoinedMsg(QString playerName); void signalLogPlayerJoinedMsg(QString playerName);
void signalLogSpectatorLeftMsg(QString playerName, int wasKicked);
void signalLogSpectatorJoinedMsg(QString playerName);
void signalLogNewGameAdminMsg(QString playerName); void signalLogNewGameAdminMsg(QString playerName);
void signalLogPlayerWinGame(QString playerName, int gameID); void signalLogPlayerWinGame(QString playerName, int gameID);
void signalFlushLogAtGame(int gameID); void signalFlushLogAtGame(int gameID);
+24
View File
@@ -373,6 +373,22 @@ void GuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string &play
if (!playerName.empty() && playerName[0] != '#' && myW->isVisible()) if (!playerName.empty() && playerName[0] != '#' && myW->isVisible())
myGuiLog->signalLogPlayerLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED); myGuiLog->signalLogPlayerLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED);
} }
void GuiWrapper::SignalNetClientSpectatorJoined(unsigned playerId, const string &playerName)
{
myStartWindow->signalNetClientSpectatorJoined(playerId, QString::fromUtf8(playerName.c_str()));
if (!playerName.empty() && playerName[0] != '#' && myW->isVisible()) {
QString tmpName(QString::fromUtf8(playerName.c_str()));
myGuiLog->signalLogSpectatorJoinedMsg(tmpName);
}
}
void GuiWrapper::SignalNetClientSpectatorLeft(unsigned playerId, const string &playerName, int removeReason)
{
QString tmpName(QString::fromUtf8(playerName.c_str()));
myStartWindow->signalNetClientSpectatorLeft(playerId, tmpName);
myW->signalNetClientSpectatorLeft(playerId);
if (!playerName.empty() && playerName[0] != '#' && myW->isVisible())
myGuiLog->signalLogSpectatorLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED);
}
void GuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName) void GuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName)
{ {
@@ -405,6 +421,14 @@ void GuiWrapper::SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned pla
{ {
myStartWindow->signalNetClientGameListPlayerLeft(gameId, playerId); myStartWindow->signalNetClientGameListPlayerLeft(gameId, playerId);
} }
void GuiWrapper::SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId)
{
myStartWindow->signalNetClientGameListSpectatorJoined(gameId, playerId);
}
void GuiWrapper::SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId)
{
myStartWindow->signalNetClientGameListSpectatorLeft(gameId, playerId);
}
void GuiWrapper::SignalNetClientGameStart(boost::shared_ptr<Game> game) void GuiWrapper::SignalNetClientGameStart(boost::shared_ptr<Game> game)
{ {
myStartWindow->signalNetClientGameStart(game); myStartWindow->signalNetClientGameStart(game);
+4
View File
@@ -144,6 +144,8 @@ public:
void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin);
void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName); void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName);
void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason); void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason);
void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName);
void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason);
void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName); void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName);
void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg);
void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg);
@@ -159,6 +161,8 @@ public:
void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId);
void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId);
void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId);
void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId);
void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId);
void SignalNetClientGameStart(boost::shared_ptr<Game> game); void SignalNetClientGameStart(boost::shared_ptr<Game> game);
@@ -215,6 +215,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l)
connect(this, SIGNAL(signalNetClientPlayerJoined(unsigned, QString, bool)), myGameLobbyDialog, SLOT(addConnectedPlayer(unsigned, QString, bool))); connect(this, SIGNAL(signalNetClientPlayerJoined(unsigned, QString, bool)), myGameLobbyDialog, SLOT(addConnectedPlayer(unsigned, QString, bool)));
connect(this, SIGNAL(signalNetClientPlayerChanged(unsigned, QString)), myGameLobbyDialog, SLOT(updatePlayer(unsigned, QString))); connect(this, SIGNAL(signalNetClientPlayerChanged(unsigned, QString)), myGameLobbyDialog, SLOT(updatePlayer(unsigned, QString)));
connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removePlayer(unsigned, QString))); connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removePlayer(unsigned, QString)));
// TODO connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned, QString)), myGameLobbyDialog, SLOT(addConnectedSpectator(unsigned, QString)));
// TODO connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removeSpectator(unsigned, QString)));
connect(this, SIGNAL(signalNetClientNewGameAdmin(unsigned, QString)), myGameLobbyDialog, SLOT(newGameAdmin(unsigned, QString))); connect(this, SIGNAL(signalNetClientNewGameAdmin(unsigned, QString)), myGameLobbyDialog, SLOT(newGameAdmin(unsigned, QString)));
connect(this, SIGNAL(signalNetClientGameListNew(unsigned)), myGameLobbyDialog, SLOT(addGame(unsigned))); connect(this, SIGNAL(signalNetClientGameListNew(unsigned)), myGameLobbyDialog, SLOT(addGame(unsigned)));
@@ -223,6 +225,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l)
connect(this, SIGNAL(signalNetClientGameListUpdateAdmin(unsigned, unsigned)), myGameLobbyDialog, SLOT(updateGameAdmin(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListUpdateAdmin(unsigned, unsigned)), myGameLobbyDialog, SLOT(updateGameAdmin(unsigned, unsigned)));
connect(this, SIGNAL(signalNetClientGameListPlayerJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddPlayer(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListPlayerJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddPlayer(unsigned, unsigned)));
connect(this, SIGNAL(signalNetClientGameListPlayerLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemovePlayer(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListPlayerLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemovePlayer(unsigned, unsigned)));
// TODO connect(this, SIGNAL(signalNetClientGameListSpectatorJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddSpectator(unsigned, unsigned)));
// TODO connect(this, SIGNAL(signalNetClientGameListSpectatorLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemoveSpectator(unsigned, unsigned)));
connect(this, SIGNAL(signalNetClientRemovedFromGame(int)), myGameLobbyDialog, SLOT(removedFromGame(int))); connect(this, SIGNAL(signalNetClientRemovedFromGame(int)), myGameLobbyDialog, SLOT(removedFromGame(int)));
connect(this, SIGNAL(signalNetClientStatsUpdate(ServerStats)), myGameLobbyDialog, SLOT(updateStats(ServerStats))); connect(this, SIGNAL(signalNetClientStatsUpdate(ServerStats)), myGameLobbyDialog, SLOT(updateStats(ServerStats)));
+4
View File
@@ -116,6 +116,8 @@ signals:
void signalNetClientPlayerJoined(unsigned playerId, QString playerName, bool isGameAdmin); void signalNetClientPlayerJoined(unsigned playerId, QString playerName, bool isGameAdmin);
void signalNetClientPlayerChanged(unsigned playerId, QString newPlayerName); void signalNetClientPlayerChanged(unsigned playerId, QString newPlayerName);
void signalNetClientPlayerLeft(unsigned playerId, QString playerName); void signalNetClientPlayerLeft(unsigned playerId, QString playerName);
void signalNetClientSpectatorJoined(unsigned playerId, QString playerName);
void signalNetClientSpectatorLeft(unsigned playerId, QString playerName);
void signalNetClientNewGameAdmin(unsigned playerId, QString playerName); void signalNetClientNewGameAdmin(unsigned playerId, QString playerName);
void signalNetClientGameListNew(unsigned gameId); void signalNetClientGameListNew(unsigned gameId);
void signalNetClientGameListRemove(unsigned gameId); void signalNetClientGameListRemove(unsigned gameId);
@@ -123,6 +125,8 @@ signals:
void signalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void signalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId);
void signalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void signalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId);
void signalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); void signalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId);
void signalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId);
void signalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId);
void signalNetClientGameStart(boost::shared_ptr<Game> game); void signalNetClientGameStart(boost::shared_ptr<Game> game);
void signalNetClientGameChatMsg(QString nickName, QString msg); void signalNetClientGameChatMsg(QString nickName, QString msg);
void signalNetClientLobbyChatMsg(QString nickName, QString msg); void signalNetClientLobbyChatMsg(QString nickName, QString msg);
+4
View File
@@ -60,12 +60,16 @@ public:
virtual void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId) = 0; virtual void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId) = 0;
virtual void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId) = 0; virtual void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId) = 0;
virtual void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId) = 0; virtual void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId) = 0;
virtual void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId) = 0;
virtual void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId) = 0;
virtual void SignalNetClientGameStart(boost::shared_ptr<Game> game) = 0; virtual void SignalNetClientGameStart(boost::shared_ptr<Game> game) = 0;
virtual void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin) = 0; virtual void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin) = 0;
virtual void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin) = 0; virtual void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin) = 0;
virtual void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName) = 0; virtual void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName) = 0;
virtual void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason) = 0; virtual void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason) = 0;
virtual void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName) = 0;
virtual void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason) = 0;
virtual void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName) = 0; virtual void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName) = 0;
virtual void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg) = 0; virtual void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg) = 0;
+3
View File
@@ -159,6 +159,7 @@ protected:
void SetUnknownPlayer(unsigned id); void SetUnknownPlayer(unsigned id);
void SetNewGameAdmin(unsigned id); void SetNewGameAdmin(unsigned id);
void RetrieveAvatarIfNeeded(unsigned id, const PlayerInfo &info); void RetrieveAvatarIfNeeded(unsigned id, const PlayerInfo &info);
std::string GetPlayerName(unsigned id);
void AddTempAvatarFile(unsigned playerId, unsigned avatarSize, AvatarFileType type); void AddTempAvatarFile(unsigned playerId, unsigned avatarSize, AvatarFileType type);
void StoreInTempAvatarFile(unsigned playerId, const std::vector<unsigned char> &data); void StoreInTempAvatarFile(unsigned playerId, const std::vector<unsigned char> &data);
@@ -215,6 +216,8 @@ protected:
void RemoveGameInfo(unsigned gameId); void RemoveGameInfo(unsigned gameId);
void ModifyGameInfoAddPlayer(unsigned gameId, unsigned playerId); void ModifyGameInfoAddPlayer(unsigned gameId, unsigned playerId);
void ModifyGameInfoRemovePlayer(unsigned gameId, unsigned playerId); void ModifyGameInfoRemovePlayer(unsigned gameId, unsigned playerId);
void ModifyGameInfoAddSpectator(unsigned gameId, unsigned playerId);
void ModifyGameInfoRemoveSpectator(unsigned gameId, unsigned playerId);
void ClearGameInfoMap(); void ClearGameInfoMap();
void StartPetition(unsigned petitionId, unsigned proposingPlayerId, unsigned kickPlayerId, int timeoutSec, int numVotesToKick); void StartPetition(unsigned petitionId, unsigned proposingPlayerId, unsigned kickPlayerId, int timeoutSec, int numVotesToKick);
+43 -11
View File
@@ -628,6 +628,24 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
boost::shared_ptr<PlayerData> playerData = client->CreatePlayerData(netPlayerJoined.playerid(), netPlayerJoined.isgameadmin()); boost::shared_ptr<PlayerData> playerData = client->CreatePlayerData(netPlayerJoined.playerid(), netPlayerJoined.isgameadmin());
client->AddPlayerData(playerData); client->AddPlayerData(playerData);
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameSpectatorJoinedMessage) {
// Another spectator joined the network game.
const GameSpectatorJoinedMessage &netSpectatorJoined = tmpPacket->GetMsg()->gamespectatorjoinedmessage();
client->GetCallback().SignalNetClientSpectatorJoined(netSpectatorJoined.playerid(), client->GetPlayerName(netSpectatorJoined.playerid()));
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameSpectatorLeftMessage) {
// A spectator left the network game.
const GameSpectatorLeftMessage &netSpectatorLeft = tmpPacket->GetMsg()->gamespectatorleftmessage();
// Signal to GUI and remove from data list.
int removeReason;
switch (netSpectatorLeft.gamespectatorleftreason()) {
case GamePlayerLeftMessage::leftKicked :
removeReason = NTF_NET_REMOVED_KICKED;
break;
default :
removeReason = NTF_NET_REMOVED_ON_REQUEST;
break;
}
client->GetCallback().SignalNetClientSpectatorLeft(netSpectatorLeft.playerid(), client->GetPlayerName(netSpectatorLeft.playerid()), removeReason);
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_TimeoutWarningMessage) { } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_TimeoutWarningMessage) {
const TimeoutWarningMessage &tmpTimeout = tmpPacket->GetMsg()->timeoutwarningmessage(); const TimeoutWarningMessage &tmpTimeout = tmpPacket->GetMsg()->timeoutwarningmessage();
client->GetCallback().SignalNetClientShowTimeoutDialog((NetTimeoutReason)tmpTimeout.timeoutreason(), tmpTimeout.remainingseconds()); client->GetCallback().SignalNetClientShowTimeoutDialog((NetTimeoutReason)tmpTimeout.timeoutreason(), tmpTimeout.remainingseconds());
@@ -672,15 +690,7 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
const PlayerListMessage &netPlayerList = tmpPacket->GetMsg()->playerlistmessage(); const PlayerListMessage &netPlayerList = tmpPacket->GetMsg()->playerlistmessage();
if (netPlayerList.playerlistnotification() == PlayerListMessage::playerListNew) { if (netPlayerList.playerlistnotification() == PlayerListMessage::playerListNew) {
PlayerInfo info; client->GetCallback().SignalLobbyPlayerJoined(netPlayerList.playerid(), client->GetPlayerName(netPlayerList.playerid()));
if (!client->GetCachedPlayerInfo(netPlayerList.playerid(), info)) {
// Request player info.
ostringstream name;
name << "#" << netPlayerList.playerid();
info.playerName = name.str();
client->RequestPlayerInfo(netPlayerList.playerid());
}
client->GetCallback().SignalLobbyPlayerJoined(netPlayerList.playerid(), info.playerName);
} else if (netPlayerList.playerlistnotification() == PlayerListMessage::playerListLeft) { } else if (netPlayerList.playerlistnotification() == PlayerListMessage::playerListLeft) {
client->GetCallback().SignalLobbyPlayerLeft(netPlayerList.playerid()); client->GetCallback().SignalLobbyPlayerLeft(netPlayerList.playerid());
} }
@@ -688,11 +698,11 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
// A new game was created on the server. // A new game was created on the server.
const GameListNewMessage &netListNew = tmpPacket->GetMsg()->gamelistnewmessage(); const GameListNewMessage &netListNew = tmpPacket->GetMsg()->gamelistnewmessage();
unsigned numPlayers = netListNew.playerids_size();
// Request player info for players if needed. // Request player info for players if needed.
GameInfo tmpInfo; GameInfo tmpInfo;
list<unsigned> requestList; list<unsigned> requestList;
for (unsigned i = 0; i < numPlayers; i++) { // All players.
for (int i = 0; i < netListNew.playerids_size(); i++) {
PlayerInfo info; PlayerInfo info;
unsigned playerId = netListNew.playerids(i); unsigned playerId = netListNew.playerids(i);
if (!client->GetCachedPlayerInfo(playerId, info)) { if (!client->GetCachedPlayerInfo(playerId, info)) {
@@ -700,6 +710,15 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
} }
tmpInfo.players.push_back(playerId); tmpInfo.players.push_back(playerId);
} }
// All spectators.
for (int i = 0; i < netListNew.spectatorids_size(); i++) {
PlayerInfo info;
unsigned playerId = netListNew.spectatorids(i);
if (!client->GetCachedPlayerInfo(playerId, info)) {
requestList.push_back(playerId);
}
tmpInfo.spectators.push_back(playerId);
}
// Send request for multiple players (will only act if list is non-empty). // Send request for multiple players (will only act if list is non-empty).
client->RequestPlayerInfo(requestList); client->RequestPlayerInfo(requestList);
@@ -730,6 +749,19 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
const GameListPlayerLeftMessage &netListLeft = tmpPacket->GetMsg()->gamelistplayerleftmessage(); const GameListPlayerLeftMessage &netListLeft = tmpPacket->GetMsg()->gamelistplayerleftmessage();
client->ModifyGameInfoRemovePlayer(netListLeft.gameid(), netListLeft.playerid()); client->ModifyGameInfoRemovePlayer(netListLeft.gameid(), netListLeft.playerid());
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListSpectatorJoinedMessage) {
const GameListSpectatorJoinedMessage &netListJoined = tmpPacket->GetMsg()->gamelistspectatorjoinedmessage();
client->ModifyGameInfoAddSpectator(netListJoined.gameid(), netListJoined.playerid());
// Request player info if needed.
PlayerInfo info;
if (!client->GetCachedPlayerInfo(netListJoined.playerid(), info)) {
client->RequestPlayerInfo(netListJoined.playerid());
}
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListSpectatorLeftMessage) {
const GameListSpectatorLeftMessage &netListLeft = tmpPacket->GetMsg()->gamelistspectatorleftmessage();
client->ModifyGameInfoRemoveSpectator(netListLeft.gameid(), netListLeft.playerid());
} else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListAdminChangedMessage) { } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListAdminChangedMessage) {
const GameListAdminChangedMessage &netListAdmin = tmpPacket->GetMsg()->gamelistadminchangedmessage(); const GameListAdminChangedMessage &netListAdmin = tmpPacket->GetMsg()->gamelistadminchangedmessage();
+46
View File
@@ -811,6 +811,20 @@ ClientThread::RetrieveAvatarIfNeeded(unsigned id, const PlayerInfo &info)
} }
} }
std::string
ClientThread::GetPlayerName(unsigned id)
{
PlayerInfo info;
if (!GetCachedPlayerInfo(id, info)) {
// Request player info.
ostringstream name;
name << "#" << id;
info.playerName = name.str();
RequestPlayerInfo(id);
}
return info.playerName;
}
void void
ClientThread::AddTempAvatarFile(unsigned playerId, unsigned avatarSize, AvatarFileType type) ClientThread::AddTempAvatarFile(unsigned playerId, unsigned avatarSize, AvatarFileType type)
{ {
@@ -1407,6 +1421,38 @@ ClientThread::ModifyGameInfoRemovePlayer(unsigned gameId, unsigned playerId)
GetCallback().SignalNetClientGameListPlayerLeft(gameId, playerId); GetCallback().SignalNetClientGameListPlayerLeft(gameId, playerId);
} }
void
ClientThread::ModifyGameInfoAddSpectator(unsigned gameId, unsigned playerId)
{
bool playerAdded = false;
{
boost::mutex::scoped_lock lock(m_gameInfoMapMutex);
GameInfoMap::iterator pos = m_gameInfoMap.find(gameId);
if (pos != m_gameInfoMap.end()) {
pos->second.spectators.push_back(playerId);
playerAdded = true;
}
}
if (playerAdded)
GetCallback().SignalNetClientGameListSpectatorJoined(gameId, playerId);
}
void
ClientThread::ModifyGameInfoRemoveSpectator(unsigned gameId, unsigned playerId)
{
bool playerRemoved = false;
{
boost::mutex::scoped_lock lock(m_gameInfoMapMutex);
GameInfoMap::iterator pos = m_gameInfoMap.find(gameId);
if (pos != m_gameInfoMap.end()) {
pos->second.spectators.remove(playerId);
playerRemoved = true;
}
}
if (playerRemoved)
GetCallback().SignalNetClientGameListSpectatorLeft(gameId, playerId);
}
void void
ClientThread::ClearGameInfoMap() ClientThread::ClearGameInfoMap()
{ {