diff options
| author | Shauren <shauren.trinity@gmail.com> | 2020-04-12 17:50:33 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-04-12 17:50:33 +0200 |
| commit | 676eb6d77f58e987f4bd0a6355b9b6b29f3b45dd (patch) | |
| tree | f5b56d9a77717ccfaef7974c42631c18ed9637a5 /src/server/game/Chat/Channels | |
| parent | 3b6e5a87d83989151d434d871dfa67ad4f9a2013 (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.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Chat/Channels/ChannelMgr.cpp | 24 |
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); } |
