aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat/Channels
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-04-12 17:50:33 +0200
committerShauren <shauren.trinity@gmail.com>2020-04-12 17:50:33 +0200
commit676eb6d77f58e987f4bd0a6355b9b6b29f3b45dd (patch)
treef5b56d9a77717ccfaef7974c42631c18ed9637a5 /src/server/game/Chat/Channels
parent3b6e5a87d83989151d434d871dfa67ad4f9a2013 (diff)
Core/Entities: ObjectGuid improvements
* Support creation of all guid types * Change ToString to output client compatible text (fixes calendar and auction mails) * Fix saving and loading item soulbound trade allowed traders * constexpr EnumClassFlag
Diffstat (limited to 'src/server/game/Chat/Channels')
-rw-r--r--src/server/game/Chat/Channels/Channel.cpp5
-rw-r--r--src/server/game/Chat/Channels/ChannelMgr.cpp24
2 files changed, 5 insertions, 24 deletions
diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp
index 01555fef4a5..66980d78565 100644
--- a/src/server/game/Chat/Channels/Channel.cpp
+++ b/src/server/game/Chat/Channels/Channel.cpp
@@ -90,7 +90,8 @@ Channel::Channel(ObjectGuid const& guid, std::string const& name, uint32 team /*
Tokenizer tokens(bannedList, ' ');
for (auto const& token : tokens)
{
- std::string bannedGuidStr(token);
+ // legacy db content might not have 0x prefix, account for that
+ std::string bannedGuidStr(memcmp(token, "0x", 2) ? token + 2 : token);
ObjectGuid bannedGuid;
bannedGuid.SetRawValue(uint64(strtoull(bannedGuidStr.substr(0, 16).c_str(), nullptr, 16)), uint64(strtoull(bannedGuidStr.substr(16).c_str(), nullptr, 16)));
if (!bannedGuid.IsEmpty())
@@ -145,7 +146,7 @@ void Channel::UpdateChannelInDB() const
{
std::ostringstream banlist;
for (ObjectGuid const& guid : _bannedStore)
- banlist << guid << ' ';
+ banlist << guid.ToHexString() << ' ';
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHANNEL);
stmt->setBool(0, _announceEnabled);
diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp
index 6270cafe028..9fb4bb0c210 100644
--- a/src/server/game/Chat/Channels/ChannelMgr.cpp
+++ b/src/server/game/Chat/Channels/ChannelMgr.cpp
@@ -180,35 +180,15 @@ void ChannelMgr::SendNotOnChannelNotify(Player const* player, std::string const&
ObjectGuid ChannelMgr::CreateCustomChannelGuid()
{
- uint64 high = 0;
- high |= uint64(HighGuid::ChatChannel) << 58;
- high |= uint64(realm.Id.Realm) << 42;
- high |= uint64(_team == ALLIANCE ? 3 : 5) << 4;
-
- ObjectGuid channelGuid;
- channelGuid.SetRawValue(high, _guidGenerator.Generate());
- return channelGuid;
+ return ObjectGuid::Create<HighGuid::ChatChannel>(false, false, 0, _team == ALLIANCE ? 3 : 5, _guidGenerator.Generate());
}
ObjectGuid ChannelMgr::CreateBuiltinChannelGuid(uint32 channelId, AreaTableEntry const* zoneEntry /*= nullptr*/) const
{
-
ChatChannelsEntry const* channelEntry = sChatChannelsStore.AssertEntry(channelId);
uint32 zoneId = zoneEntry ? zoneEntry->ID : 0;
if (channelEntry->Flags & (CHANNEL_DBC_FLAG_GLOBAL | CHANNEL_DBC_FLAG_CITY_ONLY))
zoneId = 0;
- uint64 high = 0;
- high |= uint64(HighGuid::ChatChannel) << 58;
- high |= uint64(realm.Id.Realm) << 42;
- high |= uint64(1) << 25; // built-in
- if (channelEntry->Flags & CHANNEL_DBC_FLAG_CITY_ONLY2)
- high |= uint64(1) << 24; // trade
-
- high |= uint64(zoneId) << 10;
- high |= uint64(_team == ALLIANCE ? 3 : 5) << 4;
-
- ObjectGuid channelGuid;
- channelGuid.SetRawValue(high, channelId);
- return channelGuid;
+ return ObjectGuid::Create<HighGuid::ChatChannel>(true, (channelEntry->Flags & CHANNEL_DBC_FLAG_CITY_ONLY2) != 0, zoneId, _team == ALLIANCE ? 3 : 5, channelId);
}