diff options
| author | joschiwald <joschiwald.trinity@gmail.com> | 2014-12-23 00:06:36 +0100 | 
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2014-12-23 00:06:36 +0100 | 
| commit | 6c6e4d4328526ccfcd9049efbf9033fe47de41a6 (patch) | |
| tree | 32e7f776afd1b527302f3addd1dde812d84585d8 /src/server/game/Handlers/ChatHandler.cpp | |
| parent | bf8eff8545d092585a1c710dc0b251b8cd0654bb (diff) | |
Core/Packets: moved chat packet building function to packet builder class
Diffstat (limited to 'src/server/game/Handlers/ChatHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/ChatHandler.cpp | 84 | 
1 files changed, 26 insertions, 58 deletions
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 81248519994..e3d6e47e3a6 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -285,7 +285,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,              sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group);              WorldPackets::Chat::Chat packet; -            ChatHandler::BuildChatPacket(&packet, ChatMsg(type), Language(lang), sender, NULL, msg); +            packet.Initalize(ChatMsg(type), Language(lang), sender, nullptr, msg);              group->BroadcastPacket(packet.Write(), false, group->GetMemberGroup(GetPlayer()->GetGUID()));              break;          } @@ -327,7 +327,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,              sScriptMgr->OnPlayerChat(GetPlayer(), type, lang, msg, group);              WorldPackets::Chat::Chat packet; -            ChatHandler::BuildChatPacket(&packet, ChatMsg(type), Language(lang), sender, NULL, msg); +            packet.Initalize(ChatMsg(type), Language(lang), sender, nullptr, msg);              group->BroadcastPacket(packet.Write(), false);              break;          } @@ -341,7 +341,7 @@ void WorldSession::HandleChatMessage(ChatMsg type, uint32 lang, std::string msg,              WorldPackets::Chat::Chat packet;              //in battleground, raid warning is sent only to players in battleground - code is ok -            ChatHandler::BuildChatPacket(&packet, CHAT_MSG_RAID_WARNING, Language(lang), sender, NULL, msg); +            packet.Initalize(CHAT_MSG_RAID_WARNING, Language(lang), sender, NULL, msg);              group->BroadcastPacket(packet.Write(), false);              break;          } @@ -446,7 +446,7 @@ void WorldSession::HandleChatAddonMessage(ChatMsg type, std::string prefix, std:                  break;              WorldPackets::Chat::Chat packet; -            ChatHandler::BuildChatPacket(&packet, type, LANG_ADDON, sender, NULL, text, 0U, "", DEFAULT_LOCALE, prefix); +            packet.Initalize(type, LANG_ADDON, sender, nullptr, text, 0, "", DEFAULT_LOCALE, prefix);              group->BroadcastAddonMessagePacket(packet.Write(), prefix, true, -1, sender->GetGUID());              break;          } @@ -535,57 +535,27 @@ void WorldSession::HandleEmoteOpcode(WorldPacket& recvData)      GetPlayer()->HandleEmoteCommand(emote);  } -namespace Trinity -{ -    class EmoteChatBuilder -    { -        public: -            EmoteChatBuilder(Player const& player, uint32 soundIndex, uint32 emoteID, Unit const* target) -                : _player(player), _soundIndex(soundIndex), _emoteID(emoteID), _target(target) { } - -            void operator()(WorldPacket& data, LocaleConstant loc_idx) -            { -                WorldPackets::Chat::STextEmote packet; -                packet.SourceGUID = _player.GetGUID(); -                packet.SourceAccountGUID = _player.GetSession()->GetAccountGUID(); -                if (_target) -                    packet.TargetGUID = _target->GetGUID(); -                packet.EmoteID = _emoteID; -                packet.SoundIndex = _soundIndex; -                data = *packet.Write(); -            } - -        private: -            Player const& _player; -            uint32        _soundIndex; -            uint32        _emoteID; -            Unit const*   _target; -    }; -} -  void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)  { -    Player* player = GetPlayer(); - -    if (!player->IsAlive()) +    if (!_player->IsAlive())          return; -    if (!player->CanSpeak()) +    if (!_player->CanSpeak())      {          std::string timeStr = secsToTimeString(m_muteTime - time(NULL));          SendNotification(GetTrinityString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str());          return;      } -    sScriptMgr->OnPlayerTextEmote(player, packet.SoundIndex, packet.EmoteID, packet.Target); +    sScriptMgr->OnPlayerTextEmote(_player, packet.SoundIndex, packet.EmoteID, packet.Target);      EmotesTextEntry const* em = sEmotesTextStore.LookupEntry(packet.EmoteID);      if (!em)          return; -    uint32 emote_anim = em->EmoteID; +    uint32 emoteAnim = em->EmoteID; -    switch (emote_anim) +    switch (emoteAnim)      {          case EMOTE_STATE_SLEEP:          case EMOTE_STATE_SIT: @@ -594,34 +564,32 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet)              break;          case EMOTE_STATE_DANCE:          case EMOTE_STATE_READ: -            player->SetUInt32Value(UNIT_NPC_EMOTESTATE, emote_anim); +            _player->SetUInt32Value(UNIT_NPC_EMOTESTATE, emoteAnim);              break;          default:              // Only allow text-emotes for "dead" entities (feign death included) -            if (player->HasUnitState(UNIT_STATE_DIED)) +            if (_player->HasUnitState(UNIT_STATE_DIED))                  break; -            player->HandleEmoteCommand(emote_anim); +            _player->HandleEmoteCommand(emoteAnim);              break;      } -    Unit* unit = ObjectAccessor::GetUnit(*_player, packet.Target); - -    CellCoord p = Trinity::ComputeCellCoord(player->GetPositionX(), player->GetPositionY()); - -    Cell cell(p); -    cell.SetNoCreate(); +    WorldPackets::Chat::STextEmote textEmote; +    textEmote.SourceGUID = _player->GetGUID(); +    textEmote.SourceAccountGUID = GetAccountGUID(); +    textEmote.TargetGUID = packet.Target; +    textEmote.EmoteID = packet.EmoteID; +    textEmote.SoundIndex = packet.SoundIndex; +    _player->SendMessageToSetInRange(textEmote.Write(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true); -    Trinity::EmoteChatBuilder emote_builder(*player, packet.SoundIndex, packet.EmoteID, unit); -    Trinity::LocalizedPacketDo<Trinity::EmoteChatBuilder > emote_do(emote_builder); -    Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::EmoteChatBuilder > > emote_worker(player, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), emote_do); -    TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::EmoteChatBuilder> >, WorldTypeMapContainer> message(emote_worker); -    cell.Visit(p, message, *player->GetMap(), *player, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE)); +    Unit* unit = ObjectAccessor::GetUnit(*_player, packet.Target); -    player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE, packet.SoundIndex, 0, 0, unit); +    _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_DO_EMOTE, packet.SoundIndex, 0, 0, unit); -    //Send scripted event call -    if (unit && unit->GetTypeId() == TYPEID_UNIT && ((Creature*)unit)->AI()) -        ((Creature*)unit)->AI()->ReceiveEmote(player, packet.SoundIndex); +    // Send scripted event call +    if (unit) +        if (Creature* creature = unit->ToCreature()) +            creature->AI()->ReceiveEmote(_player, packet.SoundIndex);  }  void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recvData) @@ -654,7 +622,7 @@ void WorldSession::HandleChatIgnoredOpcode(WorldPacket& recvData)          return;      WorldPackets::Chat::Chat packet; -    ChatHandler::BuildChatPacket(&packet, CHAT_MSG_IGNORED, LANG_UNIVERSAL, _player, _player, GetPlayer()->GetName()); +    packet.Initalize(CHAT_MSG_IGNORED, LANG_UNIVERSAL, _player, _player, GetPlayer()->GetName());      player->SendDirectMessage(packet.Write());  }  | 
