aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ChannelHandler.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-05-18 23:52:58 +0200
committerShauren <shauren.trinity@gmail.com>2017-05-18 23:53:25 +0200
commitc5d3dd90bea3889ef5fcd33c9ef0d59d7c544f8a (patch)
treeaa7fde6f924fc39da54908bd6eeeb0be422e5fc3 /src/server/game/Handlers/ChannelHandler.cpp
parent74456703146194de72424ec98c4ea76402077be6 (diff)
Core/Game: Include cleanup
* Mostly aimed at removing Log/DatabaseEnv includes from other headers * Fix most packet headers including other packet headers - moved common structures such as ItemInstance to their own files * Moved SAI function definitions to source files (massive or requiring many different dependencies)
Diffstat (limited to 'src/server/game/Handlers/ChannelHandler.cpp')
-rw-r--r--src/server/game/Handlers/ChannelHandler.cpp100
1 files changed, 70 insertions, 30 deletions
diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp
index c86595a9314..8555099d033 100644
--- a/src/server/game/Handlers/ChannelHandler.cpp
+++ b/src/server/game/Handlers/ChannelHandler.cpp
@@ -16,12 +16,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ObjectMgr.h" // for normalizePlayerName
+#include "WorldSession.h"
+#include "Channel.h"
#include "ChannelMgr.h"
#include "ChannelPackets.h"
+#include "Log.h"
+#include "ObjectMgr.h" // for normalizePlayerName
#include "Player.h"
-#include "WorldSession.h"
-
#include <cctype>
static size_t const MAX_CHANNEL_NAME_STR = 0x31;
@@ -85,17 +86,34 @@ void WorldSession::HandleLeaveChannel(WorldPackets::Channel::LeaveChannel& packe
}
}
-template<void(Channel::*CommandFunction)(Player const*)>
-void WorldSession::HandleChannelCommand(WorldPackets::Channel::ChannelPlayerCommand& packet)
+void WorldSession::HandleChannelCommand(WorldPackets::Channel::ChannelCommand& packet)
{
TC_LOG_DEBUG("chat.system", "%s %s ChannelName: %s",
GetOpcodeNameForLogging(packet.GetOpcode()).c_str(), GetPlayerInfo().c_str(), packet.ChannelName.c_str());
if (Channel* channel = ChannelMgr::GetChannelForPlayerByNamePart(packet.ChannelName, GetPlayer()))
- (channel->*CommandFunction)(GetPlayer());
+ {
+ switch (packet.GetOpcode())
+ {
+ case CMSG_CHAT_CHANNEL_ANNOUNCEMENTS:
+ channel->Announce(GetPlayer());
+ break;
+ case CMSG_CHAT_CHANNEL_DECLINE_INVITE:
+ channel->DeclineInvite(GetPlayer());
+ break;
+ case CMSG_CHAT_CHANNEL_DISPLAY_LIST:
+ case CMSG_CHAT_CHANNEL_LIST:
+ channel->List(GetPlayer());
+ break;
+ case CMSG_CHAT_CHANNEL_OWNER:
+ channel->SendWhoOwner(GetPlayer());
+ break;
+ default:
+ break;
+ }
+ }
}
-template<void(Channel::*CommandFunction)(Player const*, std::string const&)>
void WorldSession::HandleChannelPlayerCommand(WorldPackets::Channel::ChannelPlayerCommand& packet)
{
if (packet.Name.length() >= MAX_CHANNEL_NAME_STR)
@@ -112,38 +130,60 @@ void WorldSession::HandleChannelPlayerCommand(WorldPackets::Channel::ChannelPlay
return;
if (Channel* channel = ChannelMgr::GetChannelForPlayerByNamePart(packet.ChannelName, GetPlayer()))
- (channel->*CommandFunction)(GetPlayer(), packet.Name);
+ {
+ switch (packet.GetOpcode())
+ {
+ case CMSG_CHAT_CHANNEL_BAN:
+ channel->Ban(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_INVITE:
+ channel->Invite(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_KICK:
+ channel->Kick(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_MODERATOR:
+ channel->SetModerator(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_MUTE:
+ channel->SetMute(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_SET_OWNER:
+ channel->SetOwner(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_SILENCE_ALL:
+ channel->SilenceAll(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_UNBAN:
+ channel->UnBan(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_UNMODERATOR:
+ channel->UnsetModerator(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_UNMUTE:
+ channel->UnsetMute(GetPlayer(), packet.Name);
+ break;
+ case CMSG_CHAT_CHANNEL_UNSILENCE_ALL:
+ channel->UnsilenceAll(GetPlayer(), packet.Name);
+ break;
+ default:
+ break;
+ }
+ }
}
-template<>
-void WorldSession::HandleChannelPlayerCommand<&Channel::Password>(WorldPackets::Channel::ChannelPlayerCommand& packet)
+void WorldSession::HandleChannelPassword(WorldPackets::Channel::ChannelPassword& packet)
{
- if (packet.Name.length() > MAX_CHANNEL_PASS_STR)
+ if (packet.Password.length() > MAX_CHANNEL_PASS_STR)
{
TC_LOG_DEBUG("chat.system", "%s %s ChannelName: %s, Password: %s, Password too long.",
- GetOpcodeNameForLogging(packet.GetOpcode()).c_str(), GetPlayerInfo().c_str(), packet.ChannelName.c_str(), packet.Name.c_str());
+ GetOpcodeNameForLogging(packet.GetOpcode()).c_str(), GetPlayerInfo().c_str(), packet.ChannelName.c_str(), packet.Password.c_str());
return;
}
TC_LOG_DEBUG("chat.system", "%s %s ChannelName: %s, Password: %s",
- GetOpcodeNameForLogging(packet.GetOpcode()).c_str(), GetPlayerInfo().c_str(), packet.ChannelName.c_str(), packet.Name.c_str());
+ GetOpcodeNameForLogging(packet.GetOpcode()).c_str(), GetPlayerInfo().c_str(), packet.ChannelName.c_str(), packet.Password.c_str());
if (Channel* channel = ChannelMgr::GetChannelForPlayerByNamePart(packet.ChannelName, GetPlayer()))
- channel->Password(GetPlayer(), packet.Name);
+ channel->Password(GetPlayer(), packet.Password);
}
-
-template void WorldSession::HandleChannelCommand<&Channel::Announce>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::Ban>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelCommand<&Channel::DeclineInvite>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::Invite>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::Kick>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelCommand<&Channel::List>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::SetModerator>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::SetMute>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelCommand<&Channel::SendWhoOwner>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::SetOwner>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::SilenceAll>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::UnBan>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::UnsetModerator>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::UnsetMute>(WorldPackets::Channel::ChannelPlayerCommand&);
-template void WorldSession::HandleChannelPlayerCommand<&Channel::UnsilenceAll>(WorldPackets::Channel::ChannelPlayerCommand&);