Server feedback after report game.
This commit is contained in:
@@ -765,6 +765,21 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr<ClientThread> clien
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
client->GetCallback().SignalNetClientMsgBox(msgCode);
|
client->GetCallback().SignalNetClientMsgBox(msgCode);
|
||||||
|
} else if (tmpPacket->GetMsg()->present == PokerTHMessage_PR_reportGameAckMessage) {
|
||||||
|
ReportGameAckMessage_t *netReportAck = &tmpPacket->GetMsg()->choice.reportGameAckMessage;
|
||||||
|
unsigned msgCode;
|
||||||
|
switch (netReportAck->reportGameResult) {
|
||||||
|
case reportGameResult_gameReportAccepted:
|
||||||
|
msgCode = MSG_NET_GAMENAME_REPORT_ACCEPTED;
|
||||||
|
break;
|
||||||
|
case reportGameResult_gameReportDuplicate:
|
||||||
|
msgCode = MSG_NET_GAMENAME_REPORT_DUP;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
msgCode = MSG_NET_GAMENAME_REPORT_REJECTED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
client->GetCallback().SignalNetClientMsgBox(msgCode);
|
||||||
} else if (tmpPacket->GetMsg()->present == PokerTHMessage_PR_statisticsMessage) {
|
} else if (tmpPacket->GetMsg()->present == PokerTHMessage_PR_statisticsMessage) {
|
||||||
StatisticsMessage_t *netStatistics = &tmpPacket->GetMsg()->choice.statisticsMessage;
|
StatisticsMessage_t *netStatistics = &tmpPacket->GetMsg()->choice.statisticsMessage;
|
||||||
|
|
||||||
|
|||||||
@@ -52,7 +52,8 @@ ServerGame::ServerGame(boost::shared_ptr<ServerLobbyThread> lobbyThread, u_int32
|
|||||||
m_gameData(gameData), m_curState(NULL), m_id(id), m_name(name),
|
m_gameData(gameData), m_curState(NULL), m_id(id), m_name(name),
|
||||||
m_password(pwd), m_creatorPlayerDBId(creatorPlayerDBId), m_playerConfig(playerConfig),
|
m_password(pwd), m_creatorPlayerDBId(creatorPlayerDBId), m_playerConfig(playerConfig),
|
||||||
m_gameNum(1), m_curPetitionId(1), m_voteKickTimer(lobbyThread->GetIOService()),
|
m_gameNum(1), m_curPetitionId(1), m_voteKickTimer(lobbyThread->GetIOService()),
|
||||||
m_stateTimer1(lobbyThread->GetIOService()), m_stateTimer2(lobbyThread->GetIOService())
|
m_stateTimer1(lobbyThread->GetIOService()), m_stateTimer2(lobbyThread->GetIOService()),
|
||||||
|
m_isNameReported(false)
|
||||||
{
|
{
|
||||||
LOG_VERBOSE("Game object " << GetId() << " created.");
|
LOG_VERBOSE("Game object " << GetId() << " created.");
|
||||||
}
|
}
|
||||||
@@ -724,6 +725,18 @@ ServerGame::GetAndResetReactivatePlayers()
|
|||||||
return tmpList;
|
return tmpList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ServerGame::SetNameReported()
|
||||||
|
{
|
||||||
|
m_isNameReported = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
ServerGame::IsNameReported() const
|
||||||
|
{
|
||||||
|
return m_isNameReported;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerGame::AddComputerPlayer(boost::shared_ptr<PlayerData> player)
|
ServerGame::AddComputerPlayer(boost::shared_ptr<PlayerData> player)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -179,11 +179,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReportGameSuccess(unsigned requestId, unsigned replyId) {
|
virtual void ReportGameSuccess(unsigned requestId, unsigned replyId) {
|
||||||
// TODO
|
m_server.SendReportGameResult(requestId, replyId, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void ReportGameFailed(unsigned requestId, unsigned replyId) {
|
virtual void ReportGameFailed(unsigned requestId, unsigned replyId) {
|
||||||
// TODO
|
m_server.SendReportGameResult(requestId, replyId, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -1467,11 +1467,11 @@ ServerLobbyThread::HandleNetPacketReportGame(boost::shared_ptr<SessionData> sess
|
|||||||
GameMap::iterator pos = m_gameMap.find(report.reportedGameId);
|
GameMap::iterator pos = m_gameMap.find(report.reportedGameId);
|
||||||
|
|
||||||
if (pos != m_gameMap.end() && session->GetPlayerData()) {
|
if (pos != m_gameMap.end() && session->GetPlayerData()) {
|
||||||
if (!IsGameReported(report.reportedGameId)) {
|
boost::shared_ptr<ServerGame> tmpGame(pos->second);
|
||||||
|
if (!tmpGame->IsNameReported()) {
|
||||||
// Temporarily note that this game was reported.
|
// Temporarily note that this game was reported.
|
||||||
// This prevents spamming of the game report.
|
// This prevents spamming of the game report.
|
||||||
AddReportedGame(report.reportedGameId);
|
tmpGame->SetNameReported();
|
||||||
boost::shared_ptr<ServerGame> tmpGame(pos->second);
|
|
||||||
unsigned creatorDBId = tmpGame->GetCreatorDBId();
|
unsigned creatorDBId = tmpGame->GetCreatorDBId();
|
||||||
unsigned reporterDBId = session->GetPlayerData()->GetDBId();
|
unsigned reporterDBId = session->GetPlayerData()->GetDBId();
|
||||||
GetDatabase()->AsyncReportGame(
|
GetDatabase()->AsyncReportGame(
|
||||||
@@ -1682,6 +1682,22 @@ ServerLobbyThread::SendReportAvatarResult(unsigned byPlayerId, unsigned reported
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ServerLobbyThread::SendReportGameResult(unsigned byPlayerId, unsigned reportedGameId, bool success)
|
||||||
|
{
|
||||||
|
boost::shared_ptr<SessionData> session = m_sessionManager.GetSessionByUniquePlayerId(byPlayerId);
|
||||||
|
if (!session)
|
||||||
|
session = m_gameSessionManager.GetSessionByUniquePlayerId(byPlayerId);
|
||||||
|
if (session) {
|
||||||
|
boost::shared_ptr<NetPacket> packet(new NetPacket(NetPacket::Alloc));
|
||||||
|
packet->GetMsg()->present = PokerTHMessage_PR_reportGameAckMessage;
|
||||||
|
ReportGameAckMessage_t *netReportAck = &packet->GetMsg()->choice.reportGameAckMessage;
|
||||||
|
netReportAck->reportedGameId = reportedGameId;
|
||||||
|
netReportAck->reportGameResult = success ? reportGameResult_gameReportAccepted : reportGameResult_gameReportInvalid;
|
||||||
|
GetSender().Send(session, packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ServerLobbyThread::UserBlocked(unsigned playerId)
|
ServerLobbyThread::UserBlocked(unsigned playerId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -98,6 +98,9 @@ public:
|
|||||||
void AddReactivatePlayer(unsigned playerId);
|
void AddReactivatePlayer(unsigned playerId);
|
||||||
PlayerIdList GetAndResetReactivatePlayers();
|
PlayerIdList GetAndResetReactivatePlayers();
|
||||||
|
|
||||||
|
void SetNameReported();
|
||||||
|
bool IsNameReported() const;
|
||||||
|
|
||||||
// should be protected, but is needed in function.
|
// should be protected, but is needed in function.
|
||||||
const Game &GetGame() const;
|
const Game &GetGame() const;
|
||||||
Game &GetGame();
|
Game &GetGame();
|
||||||
@@ -216,6 +219,7 @@ private:
|
|||||||
boost::asio::deadline_timer m_voteKickTimer;
|
boost::asio::deadline_timer m_voteKickTimer;
|
||||||
boost::asio::deadline_timer m_stateTimer1;
|
boost::asio::deadline_timer m_stateTimer1;
|
||||||
boost::asio::deadline_timer m_stateTimer2;
|
boost::asio::deadline_timer m_stateTimer2;
|
||||||
|
bool m_isNameReported;
|
||||||
|
|
||||||
friend class ServerLobbyThread;
|
friend class ServerLobbyThread;
|
||||||
friend class AbstractServerGameStateReceiving;
|
friend class AbstractServerGameStateReceiving;
|
||||||
|
|||||||
@@ -154,10 +154,9 @@ protected:
|
|||||||
void UserValid(unsigned playerId, const DBPlayerData &dbPlayerData);
|
void UserValid(unsigned playerId, const DBPlayerData &dbPlayerData);
|
||||||
void UserInvalid(unsigned playerId);
|
void UserInvalid(unsigned playerId);
|
||||||
void UserBlocked(unsigned playerId);
|
void UserBlocked(unsigned playerId);
|
||||||
bool IsGameReported(unsigned /*gameId*/) const {return false;}
|
|
||||||
void AddReportedGame(unsigned /*gameId*/) {}
|
|
||||||
|
|
||||||
void SendReportAvatarResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success);
|
void SendReportAvatarResult(unsigned byPlayerId, unsigned reportedPlayerId, bool success);
|
||||||
|
void SendReportGameResult(unsigned byPlayerId, unsigned reportedGameId, bool success);
|
||||||
void RequestPlayerAvatar(boost::shared_ptr<SessionData> session);
|
void RequestPlayerAvatar(boost::shared_ptr<SessionData> session);
|
||||||
void TimerRemoveGame(const boost::system::error_code &ec);
|
void TimerRemoveGame(const boost::system::error_code &ec);
|
||||||
void TimerRemovePlayer(const boost::system::error_code &ec);
|
void TimerRemovePlayer(const boost::system::error_code &ec);
|
||||||
|
|||||||
Reference in New Issue
Block a user