Improving in-game admin functions, implementing reply packets to report results.
This commit is contained in:
@@ -129,7 +129,9 @@ NetPacketValidator::NetPacketValidator()
|
||||
m_validationMap.insert(make_pair(PokerTHMessage_PokerTHMessageType_Type_ReportGameAckMessage, ValidateReportGameAckMessage));
|
||||
m_validationMap.insert(make_pair(PokerTHMessage_PokerTHMessageType_Type_ErrorMessage, ValidateErrorMessage));
|
||||
m_validationMap.insert(make_pair(PokerTHMessage_PokerTHMessageType_Type_AdminRemoveGameMessage, ValidateAdminRemoveGameMessage));
|
||||
m_validationMap.insert(make_pair(PokerTHMessage_PokerTHMessageType_Type_AdminRemoveGameAckMessage, ValidateAdminRemoveGameAckMessage));
|
||||
m_validationMap.insert(make_pair(PokerTHMessage_PokerTHMessageType_Type_AdminBanPlayerMessage, ValidateAdminBanPlayerMessage));
|
||||
m_validationMap.insert(make_pair(PokerTHMessage_PokerTHMessageType_Type_AdminBanPlayerAckMessage, ValidateAdminBanPlayerAckMessage));
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -1160,6 +1162,19 @@ NetPacketValidator::ValidateAdminRemoveGameMessage(const NetPacket &packet)
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool
|
||||
NetPacketValidator::ValidateAdminRemoveGameAckMessage(const NetPacket &packet)
|
||||
{
|
||||
bool retVal = false;
|
||||
if (packet.GetMsg()->has_adminremovegameackmessage()) {
|
||||
const AdminRemoveGameAckMessage &msg = packet.GetMsg()->adminremovegameackmessage();
|
||||
if (msg.removegameid() != 0) {
|
||||
retVal = true;
|
||||
}
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool
|
||||
NetPacketValidator::ValidateAdminBanPlayerMessage(const NetPacket &packet)
|
||||
{
|
||||
@@ -1173,6 +1188,19 @@ NetPacketValidator::ValidateAdminBanPlayerMessage(const NetPacket &packet)
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool
|
||||
NetPacketValidator::ValidateAdminBanPlayerAckMessage(const NetPacket &packet)
|
||||
{
|
||||
bool retVal = false;
|
||||
if (packet.GetMsg()->has_adminbanplayerackmessage()) {
|
||||
const AdminBanPlayerAckMessage &msg = packet.GetMsg()->adminbanplayerackmessage();
|
||||
if (msg.banplayerid() != 0) {
|
||||
retVal = true;
|
||||
}
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool
|
||||
NetPacketValidator::ValidateGameInfo(const NetGameInfo &gameInfo)
|
||||
{
|
||||
|
||||
@@ -657,6 +657,10 @@ ServerGameStateInit::InternalProcessPacket(boost::shared_ptr<ServerGame> server,
|
||||
if (session->GetPlayerData()->IsGameAdmin()) {
|
||||
RegisterAdminTimer(server);
|
||||
}
|
||||
} else if (packet->GetMsg()->messagetype() == PokerTHMessage::Type_AdminRemoveGameMessage) {
|
||||
server->GetLobbyThread().HandleAdminRemoveGame(session, packet->GetMsg()->adminremovegamemessage());
|
||||
} else if (packet->GetMsg()->messagetype() == PokerTHMessage::Type_AdminBanPlayerMessage) {
|
||||
server->GetLobbyThread().HandleAdminBanPlayer(session, packet->GetMsg()->adminbanplayermessage());
|
||||
} else {
|
||||
server->SessionError(session, ERR_SOCK_INVALID_PACKET);
|
||||
}
|
||||
|
||||
@@ -516,6 +516,20 @@ ServerLobbyThread::HandleChatRequest(boost::shared_ptr<SessionData> session, con
|
||||
HandleNetPacketChatRequest(session, chatRequest);
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::HandleAdminRemoveGame(boost::shared_ptr<SessionData> session, const AdminRemoveGameMessage &removeGame)
|
||||
{
|
||||
// An admin within a game sent a remove game message.
|
||||
HandleNetPacketAdminRemoveGame(session, removeGame);
|
||||
}
|
||||
|
||||
void
|
||||
ServerLobbyThread::HandleAdminBanPlayer(boost::shared_ptr<SessionData> session, const AdminBanPlayerMessage &banPlayer)
|
||||
{
|
||||
// An admin within a game sent a ban player message.
|
||||
HandleNetPacketAdminBanPlayer(session, banPlayer);
|
||||
}
|
||||
|
||||
bool
|
||||
ServerLobbyThread::KickPlayerByName(const std::string &playerName)
|
||||
{
|
||||
@@ -1478,9 +1492,20 @@ ServerLobbyThread::HandleNetPacketAdminRemoveGame(boost::shared_ptr<SessionData>
|
||||
{
|
||||
GameMap::iterator pos = m_gameMap.find(removeGame.removegameid());
|
||||
|
||||
// Create Ack-Packet.
|
||||
boost::shared_ptr<NetPacket> packet(new NetPacket);
|
||||
packet->GetMsg()->set_messagetype(PokerTHMessage::Type_AdminRemoveGameAckMessage);
|
||||
AdminRemoveGameAckMessage *netRemoveAck = packet->GetMsg()->mutable_adminremovegameackmessage();
|
||||
netRemoveAck->set_removegameid(removeGame.removegameid());
|
||||
|
||||
// Check whether game id is valid and whether the player is an admin.
|
||||
if (pos != m_gameMap.end() && session->GetPlayerData() && GetBanManager().IsAdminPlayer(session->GetPlayerData()->GetDBId())) {
|
||||
InternalRemoveGame(pos->second);
|
||||
netRemoveAck->set_removegameresult(AdminRemoveGameAckMessage::gameRemoveAccepted);
|
||||
} else {
|
||||
netRemoveAck->set_removegameresult(AdminRemoveGameAckMessage::gameRemoveInvalid);
|
||||
}
|
||||
GetSender().Send(session, packet);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -120,7 +120,9 @@ protected:
|
||||
static bool ValidateReportGameAckMessage(const NetPacket &packet);
|
||||
static bool ValidateErrorMessage(const NetPacket &packet);
|
||||
static bool ValidateAdminRemoveGameMessage(const NetPacket &packet);
|
||||
static bool ValidateAdminRemoveGameAckMessage(const NetPacket &packet);
|
||||
static bool ValidateAdminBanPlayerMessage(const NetPacket &packet);
|
||||
static bool ValidateAdminBanPlayerAckMessage(const NetPacket &packet);
|
||||
|
||||
static bool ValidateGameInfo(const NetGameInfo &gameInfo);
|
||||
|
||||
|
||||
@@ -88,6 +88,8 @@ public:
|
||||
void HandleGameRetrieveAvatar(boost::shared_ptr<SessionData> session, const AvatarRequestMessage &retrieveAvatar);
|
||||
void HandleGameReportGame(boost::shared_ptr<SessionData> session, const ReportGameMessage &reportGame);
|
||||
void HandleChatRequest(boost::shared_ptr<SessionData> session, const ChatRequestMessage &chatRequest);
|
||||
void HandleAdminRemoveGame(boost::shared_ptr<SessionData> session, const AdminRemoveGameMessage &removeGame);
|
||||
void HandleAdminBanPlayer(boost::shared_ptr<SessionData> session, const AdminBanPlayerMessage &banPlayer);
|
||||
|
||||
bool KickPlayerByName(const std::string &playerName);
|
||||
bool RemoveGameByPlayerName(const std::string &playerName);
|
||||
|
||||
Reference in New Issue
Block a user