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 (https://github.com/TrinityCore/TrinityCore/commit/465e4a0b0f11cca568666e860584c5b9f761d4ba)

Co-Authored-By: joschiwald <736792+joschiwald@users.noreply.github.com>

* sql

* fix build

* build

* restore gender
This commit is contained in:
Kitzunu
2021-10-14 13:11:13 +02:00
committed by GitHub
parent 1c40caa4d6
commit b96cecf98d
4 changed files with 35 additions and 24 deletions
@@ -0,0 +1,3 @@
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1634135727616655800');
DELETE FROM `acore_string` WHERE `entry` = 810;
+22 -17
View File
@@ -48,20 +48,26 @@ namespace Acore
class AchievementChatBuilder class AchievementChatBuilder
{ {
public: public:
AchievementChatBuilder(Player const& player, ChatMsg msgtype, int32 textId, uint32 ach_id) AchievementChatBuilder(Player const* player, ChatMsg msgType, uint32 textId, uint32 achievementId)
: i_player(player), i_msgtype(msgtype), i_textId(textId), i_achievementId(ach_id) {} : _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); std::string text = "";
ChatHandler::BuildChatPacket(data, i_msgtype, LANG_UNIVERSAL, &i_player, &i_player, text, i_achievementId); 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: private:
Player const& i_player; Player const* _player;
ChatMsg i_msgtype; ChatMsg _msgType;
int32 i_textId; int32 _textId;
uint32 i_achievementId; uint32 _achievementId;
}; };
} // namespace Acore } // namespace Acore
@@ -696,9 +702,9 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId()); Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId());
if (guild) if (guild)
{ {
Acore::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID); Acore::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> say_do(say_builder); Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> _localizer(_builder);
guild->BroadcastWorker(say_do, GetPlayer()); guild->BroadcastWorker(_localizer, GetPlayer());
} }
if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH)) 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 cell(p);
cell.SetNoCreate(); cell.SetNoCreate();
Acore::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID); Acore::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> say_do(say_builder); Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> _localizer(_builder);
Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> > say_worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), say_do); Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> > _worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer);
TypeContainerVisitor<Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> >, WorldTypeMapContainer > message(say_worker); Cell::VisitWorldObjects(GetPlayer(), _worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
Cell::VisitWorldObjects(GetPlayer(), say_worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
} }
WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 8); WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 8);
+6 -1
View File
@@ -18,6 +18,11 @@
#ifndef __ACORE_LANGUAGE_H #ifndef __ACORE_LANGUAGE_H
#define __ACORE_LANGUAGE_H #define __ACORE_LANGUAGE_H
enum BroadcastTextIds
{
BROADCAST_TEXT_ACHIEVEMENT_EARNED = 29245,
};
enum AcoreStrings enum AcoreStrings
{ {
// for chat commands // for chat commands
@@ -779,7 +784,7 @@ enum AcoreStrings
LANG_NEED_CHARACTER_NAME = 807, LANG_NEED_CHARACTER_NAME = 807,
LANG_PLAYER_NOT_EXIST_OR_OFFLINE = 808, LANG_PLAYER_NOT_EXIST_OR_OFFLINE = 808,
LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND = 809, LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND = 809,
LANG_ACHIEVEMENT_EARNED = 810, // unused = 810,
LANG_GUILD_MASTER = 811, LANG_GUILD_MASTER = 811,
LANG_GUILD_OFFICER = 812, LANG_GUILD_OFFICER = 812,
LANG_GUILD_VETERAN = 813, LANG_GUILD_VETERAN = 813,
+4 -6
View File
@@ -29,9 +29,7 @@ class CreatureTextBuilder
{ {
public: public:
CreatureTextBuilder(WorldObject* obj, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target) 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 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); return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _source, _target, text, 0, "", locale);
} }
private:
WorldObject* _source; WorldObject* _source;
uint8 _gender; uint8 _gender;
ChatMsg _msgType; ChatMsg _msgType;
@@ -53,9 +52,7 @@ class PlayerTextBuilder
{ {
public: public:
PlayerTextBuilder(WorldObject* obj, WorldObject* speaker, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target) 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 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); return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _talker, _target, text, 0, "", locale);
} }
private:
WorldObject* _source; WorldObject* _source;
WorldObject* _talker; WorldObject* _talker;
uint8 _gender; uint8 _gender;