mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 05:06:24 +00:00
refactor(Core/Achievement): Achivement earned message will use broadc… (#8485)
* refactor(Core/Achievement): Achivement earned message will use broadcast text instead of acore_string
* cherry-pick commit (465e4a0b0f)
Co-Authored-By: joschiwald <736792+joschiwald@users.noreply.github.com>
* sql
* fix build
* build
* restore gender
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1634135727616655800');
|
||||
|
||||
DELETE FROM `acore_string` WHERE `entry` = 810;
|
||||
@@ -48,20 +48,26 @@ namespace Acore
|
||||
class AchievementChatBuilder
|
||||
{
|
||||
public:
|
||||
AchievementChatBuilder(Player const& player, ChatMsg msgtype, int32 textId, uint32 ach_id)
|
||||
: i_player(player), i_msgtype(msgtype), i_textId(textId), i_achievementId(ach_id) {}
|
||||
AchievementChatBuilder(Player const* player, ChatMsg msgType, uint32 textId, uint32 achievementId)
|
||||
: _player(player), _msgType(msgType), _textId(textId), _achievementId(achievementId) { }
|
||||
|
||||
void operator()(WorldPacket& data, LocaleConstant loc_idx)
|
||||
void operator()(WorldPacket& data, LocaleConstant locale)
|
||||
{
|
||||
std::string text = sObjectMgr->GetAcoreString(i_textId, loc_idx);
|
||||
ChatHandler::BuildChatPacket(data, i_msgtype, LANG_UNIVERSAL, &i_player, &i_player, text, i_achievementId);
|
||||
std::string text = "";
|
||||
BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId);
|
||||
if (bct)
|
||||
{
|
||||
ObjectMgr::GetLocaleString(_player->getGender() == GENDER_MALE ? bct->MaleText : bct->FemaleText, locale, text);
|
||||
}
|
||||
|
||||
ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _player, _player, text, _achievementId);
|
||||
}
|
||||
|
||||
private:
|
||||
Player const& i_player;
|
||||
ChatMsg i_msgtype;
|
||||
int32 i_textId;
|
||||
uint32 i_achievementId;
|
||||
Player const* _player;
|
||||
ChatMsg _msgType;
|
||||
int32 _textId;
|
||||
uint32 _achievementId;
|
||||
};
|
||||
} // namespace Acore
|
||||
|
||||
@@ -696,9 +702,9 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
|
||||
Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId());
|
||||
if (guild)
|
||||
{
|
||||
Acore::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
||||
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> say_do(say_builder);
|
||||
guild->BroadcastWorker(say_do, GetPlayer());
|
||||
Acore::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
|
||||
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> _localizer(_builder);
|
||||
guild->BroadcastWorker(_localizer, GetPlayer());
|
||||
}
|
||||
|
||||
if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH))
|
||||
@@ -739,11 +745,10 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
|
||||
Cell cell(p);
|
||||
cell.SetNoCreate();
|
||||
|
||||
Acore::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
||||
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> say_do(say_builder);
|
||||
Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> > say_worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), say_do);
|
||||
TypeContainerVisitor<Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> >, WorldTypeMapContainer > message(say_worker);
|
||||
Cell::VisitWorldObjects(GetPlayer(), say_worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
|
||||
Acore::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
|
||||
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> _localizer(_builder);
|
||||
Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> > _worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer);
|
||||
Cell::VisitWorldObjects(GetPlayer(), _worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
|
||||
}
|
||||
|
||||
WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 8);
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
#ifndef __ACORE_LANGUAGE_H
|
||||
#define __ACORE_LANGUAGE_H
|
||||
|
||||
enum BroadcastTextIds
|
||||
{
|
||||
BROADCAST_TEXT_ACHIEVEMENT_EARNED = 29245,
|
||||
};
|
||||
|
||||
enum AcoreStrings
|
||||
{
|
||||
// for chat commands
|
||||
@@ -779,7 +784,7 @@ enum AcoreStrings
|
||||
LANG_NEED_CHARACTER_NAME = 807,
|
||||
LANG_PLAYER_NOT_EXIST_OR_OFFLINE = 808,
|
||||
LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND = 809,
|
||||
LANG_ACHIEVEMENT_EARNED = 810,
|
||||
// unused = 810,
|
||||
LANG_GUILD_MASTER = 811,
|
||||
LANG_GUILD_OFFICER = 812,
|
||||
LANG_GUILD_VETERAN = 813,
|
||||
|
||||
@@ -29,9 +29,7 @@ class CreatureTextBuilder
|
||||
{
|
||||
public:
|
||||
CreatureTextBuilder(WorldObject* obj, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
|
||||
: _source(obj), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target)
|
||||
{
|
||||
}
|
||||
: _source(obj), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
|
||||
|
||||
size_t operator()(WorldPacket* data, LocaleConstant locale) const
|
||||
{
|
||||
@@ -40,6 +38,7 @@ public:
|
||||
return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _source, _target, text, 0, "", locale);
|
||||
}
|
||||
|
||||
private:
|
||||
WorldObject* _source;
|
||||
uint8 _gender;
|
||||
ChatMsg _msgType;
|
||||
@@ -53,9 +52,7 @@ class PlayerTextBuilder
|
||||
{
|
||||
public:
|
||||
PlayerTextBuilder(WorldObject* obj, WorldObject* speaker, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
|
||||
: _source(obj), _talker(speaker), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target)
|
||||
{
|
||||
}
|
||||
: _source(obj), _talker(speaker), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
|
||||
|
||||
size_t operator()(WorldPacket* data, LocaleConstant locale) const
|
||||
{
|
||||
@@ -64,6 +61,7 @@ public:
|
||||
return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _talker, _target, text, 0, "", locale);
|
||||
}
|
||||
|
||||
private:
|
||||
WorldObject* _source;
|
||||
WorldObject* _talker;
|
||||
uint8 _gender;
|
||||
|
||||
Reference in New Issue
Block a user