Improving in-game admin functions, implementing reply packets to report results.

This commit is contained in:
lotodore
2013-02-25 23:02:20 +01:00
parent 19f27a890c
commit f7777b535d
9 changed files with 2042 additions and 33 deletions
+28
View File
@@ -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)
{
+4
View File
@@ -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);
}
+25
View File
@@ -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
+2
View File
@@ -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);
+2
View File
@@ -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);