diff options
18 files changed, 157 insertions, 124 deletions
diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 38206425f0a..6daee55b451 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -554,7 +554,8 @@ INSERT INTO `build_info` VALUES (33528,8,3,0,NULL,NULL,'0ECE033CA9B11D92F7D2792C785B47DF',NULL,NULL,NULL), (33724,8,3,0,NULL,NULL,'38F7BBCF284939DD20E8C64CDBF9FE77',NULL,NULL,NULL), (33775,8,3,0,NULL,NULL,'B826300A8449ED0F6EF16EA747FA2D2E','354D2DE619D124EE1398F76B0436FCFC',NULL,NULL), -(33941,8,3,0,NULL,NULL,'88AF1A36D2770D0A6CA086497096A889',NULL,NULL,NULL); +(33941,8,3,0,NULL,NULL,'88AF1A36D2770D0A6CA086497096A889',NULL,NULL,NULL), +(34220,8,3,0,NULL,NULL,'B5E35B976C6BAF82505700E7D9666A2C',NULL,NULL,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -2132,7 +2133,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint(3) unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint(3) unsigned NOT NULL DEFAULT '0', `population` float unsigned NOT NULL DEFAULT '0', - `gamebuild` int(10) unsigned NOT NULL DEFAULT '33941', + `gamebuild` int(10) unsigned NOT NULL DEFAULT '34220', `Region` tinyint(3) unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint(3) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -2147,7 +2148,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,33941,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1','255.255.255.0',8085,0,0,1,0,0,34220,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -2327,7 +2328,8 @@ INSERT INTO `updates` VALUES ('2020_03_20_00_auth.sql','0F72572D7792236D8F1E556D9EC62352A0A149CA','RELEASED','2020-03-20 10:01:23',0), ('2020_03_23_00_auth.sql','B90D27BB8E3CEDF65881BDA0C7CE6FBC5EF310E0','RELEASED','2020-03-23 17:57:46',0), ('2020_03_31_00_auth.sql','BA82A58E95730A397922B6723DA027986E6CD535','RELEASED','2020-03-31 17:00:16',0), -('2020_04_04_00_auth.sql','5F118989A9F8AFA3B2065AB9C2C0BB7D9A0EB97A','RELEASED','2020-04-04 13:23:53',0); +('2020_04_04_00_auth.sql','5F118989A9F8AFA3B2065AB9C2C0BB7D9A0EB97A','RELEASED','2020-04-04 13:23:53',0), +('2020_04_30_00_auth.sql','2FD304B8EF82D529D69287BF22EF061A267F827E','RELEASED','2020-04-30 00:39:29',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2020_04_30_00_auth.sql b/sql/updates/auth/master/2020_04_30_00_auth.sql new file mode 100644 index 00000000000..7a9c08672b5 --- /dev/null +++ b/sql/updates/auth/master/2020_04_30_00_auth.sql @@ -0,0 +1,7 @@ +DELETE FROM `build_info` WHERE `build`=34220; +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`,`winAuthSeed`,`win64AuthSeed`,`mac64AuthSeed`,`winChecksumSeed`,`macChecksumSeed`) VALUES +(34220,8,3,0,NULL,NULL,'B5E35B976C6BAF82505700E7D9666A2C',NULL,NULL,NULL); + +UPDATE `realmlist` SET `gamebuild`=34220 WHERE `gamebuild`=33941; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int(10) unsigned NOT NULL DEFAULT '34220'; diff --git a/src/common/Utilities/EnumFlag.h b/src/common/Utilities/EnumFlag.h index bd9a991daed..528625c1f08 100644 --- a/src/common/Utilities/EnumFlag.h +++ b/src/common/Utilities/EnumFlag.h @@ -20,80 +20,85 @@ #include <type_traits> -namespace EnumFlag +template<typename T> +constexpr bool IsEnumFlag(T) { return false; } + +#define DEFINE_ENUM_FLAG(enumType) constexpr bool IsEnumFlag(enumType) { return true; } + +namespace EnumTraits { template<typename T> - struct IsFlag : std::false_type { }; + using IsFlag = std::integral_constant<bool, IsEnumFlag(T{})>; } -template<typename T, std::enable_if_t<EnumFlag::IsFlag<T>::value, std::nullptr_t> = nullptr> +template<typename T, std::enable_if_t<EnumTraits::IsFlag<T>::value, std::nullptr_t> = nullptr> inline constexpr T operator&(T left, T right) { return static_cast<T>(static_cast<std::underlying_type_t<T>>(left) & static_cast<std::underlying_type_t<T>>(right)); } -template<typename T, std::enable_if_t<EnumFlag::IsFlag<T>::value, std::nullptr_t> = nullptr> +template<typename T, std::enable_if_t<EnumTraits::IsFlag<T>::value, std::nullptr_t> = nullptr> inline constexpr T& operator&=(T& left, T right) { return left = left & right; } -template<typename T, std::enable_if_t<EnumFlag::IsFlag<T>::value, std::nullptr_t> = nullptr> +template<typename T, std::enable_if_t<EnumTraits::IsFlag<T>::value, std::nullptr_t> = nullptr> inline constexpr T operator|(T left, T right) { return static_cast<T>(static_cast<std::underlying_type_t<T>>(left) | static_cast<std::underlying_type_t<T>>(right)); } -template<typename T, std::enable_if_t<EnumFlag::IsFlag<T>::value, std::nullptr_t> = nullptr> +template<typename T, std::enable_if_t<EnumTraits::IsFlag<T>::value, std::nullptr_t> = nullptr> inline constexpr T& operator|=(T& left, T right) { return left = left | right; } -template<typename T, std::enable_if_t<EnumFlag::IsFlag<T>::value, std::nullptr_t> = nullptr> +template<typename T, std::enable_if_t<EnumTraits::IsFlag<T>::value, std::nullptr_t> = nullptr> inline constexpr T operator~(T value) { return static_cast<T>(~static_cast<std::underlying_type_t<T>>(value)); } template<typename T> -class EnumFlag_t +class EnumFlag { - static_assert(EnumFlag::IsFlag<T>::value, "EnumFlag_t must be used only with enums that are specify EnumFlag::IsFlag"); + static_assert(EnumTraits::IsFlag<T>::value, "EnumFlag must be used only with enums that are specify EnumFlag::IsFlag"); public: - /*implicit*/ constexpr EnumFlag_t(T value) : _value(value) + /*implicit*/ constexpr EnumFlag(T value) : _value(value) { } - constexpr EnumFlag_t& operator&=(EnumFlag_t right) + constexpr EnumFlag& operator&=(EnumFlag right) { _value &= right._value; return *this; } - constexpr friend EnumFlag_t operator&(EnumFlag_t left, EnumFlag_t right) + constexpr friend EnumFlag operator&(EnumFlag left, EnumFlag right) { return left &= right; } - constexpr EnumFlag_t& operator|=(EnumFlag_t right) + constexpr EnumFlag& operator|=(EnumFlag right) { _value |= right._value; return *this; } - constexpr friend EnumFlag_t operator|(EnumFlag_t left, EnumFlag_t right) + constexpr friend EnumFlag operator|(EnumFlag left, EnumFlag right) { return left |= right; } - constexpr EnumFlag_t operator~() const + constexpr EnumFlag operator~() const { return static_cast<T>(~static_cast<std::underlying_type_t<T>>(_value)); } - constexpr void RemoveFlag(EnumFlag_t flag) + constexpr void RemoveFlag(EnumFlag flag) { _value &= ~flag._value; } diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index a7a06b3c32f..ca785cea3da 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -1147,7 +1147,7 @@ void AuctionHouseObject::Update() } void AuctionHouseObject::BuildListBuckets(WorldPackets::AuctionHouse::AuctionListBucketsResult& listBucketsResult, Player* player, - std::wstring const& name, uint8 minLevel, uint8 maxLevel, EnumFlag_t<AuctionHouseFilterMask> filters, Optional<AuctionSearchClassFilters> const& classFilters, + std::wstring const& name, uint8 minLevel, uint8 maxLevel, EnumFlag<AuctionHouseFilterMask> filters, Optional<AuctionSearchClassFilters> const& classFilters, uint8 const* knownPetBits, std::size_t knownPetBitsCount, uint8 maxKnownPetLevel, uint32 offset, WorldPackets::AuctionHouse::AuctionSortDef const* sorts, std::size_t sortCount) { std::unordered_set<uint32> knownAppearanceIds; diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h index 4513e86089d..33a902b6d32 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.h +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h @@ -111,7 +111,7 @@ enum class AuctionHouseFilterMask : uint32 ArtifactQuality = 0x400, }; -namespace EnumFlag { template<> struct IsFlag<AuctionHouseFilterMask> : std::true_type { }; } +DEFINE_ENUM_FLAG(AuctionHouseFilterMask); enum class AuctionHouseSortOrder : uint8 { @@ -295,7 +295,7 @@ public: void Update(); void BuildListBuckets(WorldPackets::AuctionHouse::AuctionListBucketsResult& listBucketsResult, Player* player, - std::wstring const& name, uint8 minLevel, uint8 maxLevel, EnumFlag_t<AuctionHouseFilterMask> filters, Optional<AuctionSearchClassFilters> const& classFilters, + std::wstring const& name, uint8 minLevel, uint8 maxLevel, EnumFlag<AuctionHouseFilterMask> filters, Optional<AuctionSearchClassFilters> const& classFilters, uint8 const* knownPetBits, std::size_t knownPetBitsCount, uint8 maxKnownPetLevel, uint32 offset, WorldPackets::AuctionHouse::AuctionSortDef const* sorts, std::size_t sortCount); void BuildListBuckets(WorldPackets::AuctionHouse::AuctionListBucketsResult& listBucketsResult, Player* player, diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index cd9303828a4..1b26f339c5e 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -411,16 +411,16 @@ inline void Battleground::_ProcessJoin(uint32 diff) // Send packet every 10 seconds until the 2nd field reach 0 if (m_CountdownTimer >= 10000) { - uint32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; + int32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; - WorldPacket data(SMSG_START_TIMER, 4+4+4); - data << uint32(0); // unk - data << uint32(countdownMaxForBGType - (GetElapsedTime() / 1000)); - data << uint32(countdownMaxForBGType); + WorldPackets::Misc::StartTimer startTimer; + startTimer.Type = 0; + startTimer.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / 1000); + startTimer.TotalTime = countdownMaxForBGType; for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - player->SendDirectMessage(&data); + player->SendDirectMessage(startTimer.Write()); m_CountdownTimer = 0; } @@ -1088,11 +1088,12 @@ void Battleground::AddPlayer(Player* player) player->CastSpell(player, SPELL_PREPARATION, true); // reduces all mana cost of spells. int32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; - WorldPacket data(SMSG_START_TIMER, 4+4+4); - data << uint32(0); // unk - data << uint32(countdownMaxForBGType - (GetElapsedTime() / 1000)); - data << uint32(countdownMaxForBGType); - player->SendDirectMessage(&data); + + WorldPackets::Misc::StartTimer startTimer; + startTimer.Type = 0; + startTimer.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / 1000); + startTimer.TotalTime = countdownMaxForBGType; + player->SendDirectMessage(startTimer.Write()); } } diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 0eb5c42c728..f5856bfb7ae 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -131,7 +131,7 @@ enum class ObjectGuidSequenceSource Map = 0x4 }; -namespace EnumFlag { template<> struct IsFlag<ObjectGuidSequenceSource> : std::true_type { }; } +DEFINE_ENUM_FLAG(ObjectGuidSequenceSource); enum class ObjectGuidFormatType { @@ -156,14 +156,14 @@ enum class ObjectGuidFormatType template<HighGuid high> struct ObjectGuidTraits { - static constexpr EnumFlag_t<ObjectGuidSequenceSource> SequenceSource = ObjectGuidSequenceSource::None; + static constexpr EnumFlag<ObjectGuidSequenceSource> SequenceSource = ObjectGuidSequenceSource::None; using Format = std::integral_constant<ObjectGuidFormatType, ObjectGuidFormatType::Null>; }; #define MAKE_GUID_TRAIT(high, sequence, format) \ template<> struct ObjectGuidTraits<high> \ { \ - static constexpr EnumFlag_t<ObjectGuidSequenceSource> SequenceSource = sequence; \ + static constexpr EnumFlag<ObjectGuidSequenceSource> SequenceSource = sequence; \ using Format = std::integral_constant<ObjectGuidFormatType, format>; \ } diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h index 50a753d76cb..4dd17a01497 100644 --- a/src/server/game/Entities/Object/Updates/UpdateField.h +++ b/src/server/game/Entities/Object/Updates/UpdateField.h @@ -38,6 +38,8 @@ namespace UF Empath = 0x08 }; + DEFINE_ENUM_FLAG(UpdateFieldFlag); + template<typename T, uint32 BlockBit, uint32 Bit> class UpdateField; @@ -819,6 +821,4 @@ namespace UF }; } -namespace EnumFlag { template<> struct IsFlag<UF::UpdateFieldFlag> : std::true_type { }; } - #endif // UpdateField_h__ diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 6c8f9e5f462..98e01cbe141 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -30,14 +30,14 @@ namespace UF { -void ObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const +void ObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const { data << int32(EntryID); data << uint32(ViewerDependentValue<DynamicFlagsTag>::GetValue(DynamicFlags, owner, receiver)); data << float(Scale); } -void ObjectData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const +void ObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -185,7 +185,7 @@ void SocketedGem::ClearChangesMask() _changesMask.ResetAll(); } -void ItemData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +void ItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const { data << uint32(BonusListIDs->size()); for (std::size_t i = 0; i < BonusListIDs->size(); ++i) @@ -247,20 +247,20 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVi } } -void ItemData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const +void ItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const { UpdateMask<40> allowedMaskForTarget({ 0xFC0149FFu, 0x000000FFu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } -void ItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<40>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void ItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<40>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) allowedMaskForTarget |= { 0x03FEB600u, 0x00000000u }; } -void ItemData::FilterDisallowedFieldsMaskForFlag(UpdateMask<40>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void ItemData::FilterDisallowedFieldsMaskForFlag(UpdateMask<40>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) changesMask &= { 0xFC0149FFu, 0xFFFFFFFFu }; @@ -451,7 +451,7 @@ void ItemData::ClearChangesMask() _changesMask.ResetAll(); } -void ContainerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const +void ContainerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const { for (std::size_t i = 0; i < 36; ++i) { @@ -460,7 +460,7 @@ void ContainerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fi data << uint32(NumSlots); } -void ContainerData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const +void ContainerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -499,7 +499,7 @@ void ContainerData::ClearChangesMask() _changesMask.ResetAll(); } -void AzeriteEmpoweredItemData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const +void AzeriteEmpoweredItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const { for (std::size_t i = 0; i < 5; ++i) { @@ -507,7 +507,7 @@ void AzeriteEmpoweredItemData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFi } } -void AzeriteEmpoweredItemData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const +void AzeriteEmpoweredItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -603,7 +603,7 @@ void SelectedAzeriteEssences::ClearChangesMask() _changesMask.ResetAll(); } -void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const +void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) { @@ -630,20 +630,20 @@ void AzeriteItemData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> } } -void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const +void AzeriteItemData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const { UpdateMask<9> allowedMaskForTarget({ 0x0000000Fu }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } -void AzeriteItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<9>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void AzeriteItemData::AppendAllowedFieldsMaskForFlag(UpdateMask<9>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) allowedMaskForTarget |= { 0x000001F0u }; } -void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(UpdateMask<9>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void AzeriteItemData::FilterDisallowedFieldsMaskForFlag(UpdateMask<9>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) changesMask &= { 0xFFFFFE0Fu }; @@ -811,7 +811,7 @@ void PassiveSpellHistory::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, data << int32(AuraSpellID); } -void UnitData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const +void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(DisplayID, owner, receiver)); for (std::size_t i = 0; i < 2; ++i) @@ -1007,14 +1007,14 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVi } } -void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const +void UnitData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const { UpdateMask<192> allowedMaskForTarget({ 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFBFFFF9u, 0x003F8007u, 0x00000000u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } -void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) allowedMaskForTarget |= { 0x00001000u, 0x03C04000u, 0xFFFE1000u, 0x00400006u, 0xFFC07FF8u, 0xFFFFFFFFu }; @@ -1024,7 +1024,7 @@ void UnitData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTar allowedMaskForTarget |= { 0x00000000u, 0x03C00000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x000007F8u }; } -void UnitData::FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void UnitData::FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) changesMask &= { 0xFFFFEFFFu, 0xFC3FBFFFu, 0x0001EFFFu, 0xFFBFFFF9u, 0x003F8007u, 0x00000000u }; @@ -1907,7 +1907,7 @@ void ArenaCooldown::ClearChangesMask() _changesMask.ResetAll(); } -void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const +void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { data << DuelArbiter; data << WowAccount; @@ -1980,20 +1980,20 @@ void PlayerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> field data.FlushBits(); } -void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const +void PlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { UpdateMask<192> allowedMaskForTarget({ 0xFFFFFFF5u, 0x000001FFu, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFF80u }); AppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(data, _changesMask & allowedMaskForTarget, false, owner, receiver); } -void PlayerData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void PlayerData::AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember)) allowedMaskForTarget |= { 0x0000000Au, 0xFFFFFE00u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000007Fu }; } -void PlayerData::FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const +void PlayerData::FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const { if (!fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember)) changesMask &= { 0xFFFFFFF5u, 0x000001FFu, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFF80u }; @@ -2604,7 +2604,7 @@ void QuestSession::ClearChangesMask() _changesMask.ResetAll(); } -void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const +void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { for (std::size_t i = 0; i < 199; ++i) { @@ -2847,7 +2847,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> data.FlushBits(); } -void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const +void ActivePlayerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -3812,7 +3812,7 @@ void ActivePlayerData::ClearChangesMask() _changesMask.ResetAll(); } -void GameObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const +void GameObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const { data << int32(DisplayID); data << uint32(SpellVisualID); @@ -3846,7 +3846,7 @@ void GameObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> f } } -void GameObjectData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const +void GameObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -3988,7 +3988,7 @@ void GameObjectData::ClearChangesMask() _changesMask.ResetAll(); } -void DynamicObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const +void DynamicObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const { data << Caster; data << int32(SpellXSpellVisualID); @@ -3998,7 +3998,7 @@ void DynamicObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag data << uint8(Type); } -void DynamicObjectData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const +void DynamicObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -4048,7 +4048,7 @@ void DynamicObjectData::ClearChangesMask() _changesMask.ResetAll(); } -void CorpseData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const +void CorpseData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const { data << uint32(DynamicFlags); data << Owner; @@ -4075,7 +4075,7 @@ void CorpseData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> field } } -void CorpseData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const +void CorpseData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -4256,7 +4256,7 @@ void ScaleCurve::ClearChangesMask() _changesMask.ResetAll(); } -void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const +void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const { OverrideScaleCurve->WriteCreate(data, owner, receiver); data << Caster; @@ -4273,7 +4273,7 @@ void AreaTriggerData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> ExtraScaleCurve->WriteCreate(data, owner, receiver); } -void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const +void AreaTriggerData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -4358,7 +4358,7 @@ void AreaTriggerData::ClearChangesMask() _changesMask.ResetAll(); } -void SceneObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const +void SceneObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const { data << int32(ScriptPackageID); data << uint32(RndSeedVal); @@ -4366,7 +4366,7 @@ void SceneObjectData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> data << uint32(SceneType); } -void SceneObjectData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const +void SceneObjectData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } @@ -4444,7 +4444,7 @@ void ConversationActor::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Co data.FlushBits(); } -void ConversationData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const +void ConversationData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const { data << uint32(Lines->size()); data << int32(LastLineEndTime); @@ -4460,7 +4460,7 @@ void ConversationData::WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> } } -void ConversationData::WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const +void ConversationData::WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const { WriteUpdate(data, _changesMask, false, owner, receiver); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 948dee57340..564787bd3fd 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -48,8 +48,8 @@ struct ObjectData : public IsUpdateFieldStructureTag, public HasChangesMask<4> struct DynamicFlagsTag : ViewerDependentValueTag<uint32> {}; UpdateField<float, 0, 3> Scale; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<4> const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -111,11 +111,11 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<40> UpdateFieldArray<int32, 5, 20, 21> SpellCharges; UpdateFieldArray<UF::ItemEnchantment, 13, 26, 27> Enchantment; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Item const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<40> const& changesMask, bool ignoreNestedChangesMask, Item const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<40>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; - void FilterDisallowedFieldsMaskForFlag(UpdateMask<40>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<40>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void FilterDisallowedFieldsMaskForFlag(UpdateMask<40>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; void ClearChangesMask(); }; @@ -124,8 +124,8 @@ struct ContainerData : public IsUpdateFieldStructureTag, public HasChangesMask<3 UpdateField<uint32, 0, 1> NumSlots; UpdateFieldArray<ObjectGuid, 36, 2, 3> Slots; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Bag const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<39> const& changesMask, bool ignoreNestedChangesMask, Bag const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -134,8 +134,8 @@ struct AzeriteEmpoweredItemData : public IsUpdateFieldStructureTag, public HasCh { UpdateFieldArray<int32, 5, 0, 1> Selections; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteEmpoweredItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<6> const& changesMask, bool ignoreNestedChangesMask, AzeriteEmpoweredItem const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -171,11 +171,11 @@ struct AzeriteItemData : public IsUpdateFieldStructureTag, public HasChangesMask UpdateField<uint32, 0, 7> KnowledgeLevel; UpdateField<int32, 0, 8> DEBUGknowledgeWeek; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AzeriteItem const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<9> const& changesMask, bool ignoreNestedChangesMask, AzeriteItem const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<9>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; - void FilterDisallowedFieldsMaskForFlag(UpdateMask<9>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<9>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void FilterDisallowedFieldsMaskForFlag(UpdateMask<9>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; void ClearChangesMask(); }; @@ -342,11 +342,11 @@ struct UnitData : public IsUpdateFieldStructureTag, public HasChangesMask<192> UpdateFieldArray<int32, 7, 163, 178> PowerCostModifier; UpdateFieldArray<float, 7, 163, 185> PowerCostMultiplier; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<192> const& changesMask, bool ignoreNestedChangesMask, Unit const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; - void FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; void ClearChangesMask(); }; @@ -421,11 +421,11 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<192> UpdateFieldArray<UF::VisibleItem, 19, 167, 168> VisibleItems; UpdateFieldArray<float, 4, 187, 188> AvgItemLevel; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<192> const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const; - void AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; - void FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags) const; + void AppendAllowedFieldsMaskForFlag(UpdateMask<192>& allowedMaskForTarget, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; + void FilterDisallowedFieldsMaskForFlag(UpdateMask<192>& changesMask, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags) const; void ClearChangesMask(); bool IsQuestLogChangesMaskSkipped() const { return false; } // bandwidth savings aren't worth the cpu time }; @@ -651,8 +651,8 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateFieldArray<uint32, 7, 610, 611> BankBagSlotFlags; UpdateFieldArray<uint64, 875, 618, 619> QuestCompleted; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<1494> const& changesMask, bool ignoreNestedChangesMask, Player const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -682,8 +682,8 @@ struct GameObjectData : public IsUpdateFieldStructureTag, public HasChangesMask< UpdateField<uint32, 0, 18> ArtKit; UpdateField<uint32, 0, 19> CustomParam; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, GameObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<20> const& changesMask, bool ignoreNestedChangesMask, GameObject const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -697,8 +697,8 @@ struct DynamicObjectData : public IsUpdateFieldStructureTag, public HasChangesMa UpdateField<uint32, 0, 5> CastTime; UpdateField<uint8, 0, 6> Type; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, DynamicObject const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<7> const& changesMask, bool ignoreNestedChangesMask, DynamicObject const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -723,8 +723,8 @@ struct CorpseData : public IsUpdateFieldStructureTag, public HasChangesMask<40> UpdateFieldArray<uint32, 19, 16, 17> Items; UpdateFieldArray<uint8, 3, 36, 37> CustomDisplayOption; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Corpse const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<40> const& changesMask, bool ignoreNestedChangesMask, Corpse const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -757,8 +757,8 @@ struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask UpdateField<uint32, 0, 12> DecalPropertiesID; UpdateField<ObjectGuid, 0, 13> CreatingEffectGUID; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, AreaTrigger const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<14> const& changesMask, bool ignoreNestedChangesMask, AreaTrigger const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -770,8 +770,8 @@ struct SceneObjectData : public IsUpdateFieldStructureTag, public HasChangesMask UpdateField<ObjectGuid, 0, 3> CreatedBy; UpdateField<uint32, 0, 4> SceneType; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<5> const& changesMask, bool ignoreNestedChangesMask, Object const* owner, Player const* receiver) const; void ClearChangesMask(); }; @@ -807,8 +807,8 @@ struct ConversationData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<int32, 0, 3> LastLineEndTime; UpdateField<uint32, 0, 4> Field_1C; - void WriteCreate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; - void WriteUpdate(ByteBuffer& data, EnumFlag_t<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; + void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; + void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Conversation const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, UpdateMask<5> const& changesMask, bool ignoreNestedChangesMask, Conversation const* owner, Player const* receiver) const; void ClearChangesMask(); }; diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp index e2d434cc85a..a715ea37b6a 100644 --- a/src/server/game/Entities/Player/CollectionMgr.cpp +++ b/src/server/game/Entities/Player/CollectionMgr.cpp @@ -72,7 +72,7 @@ void CollectionMgr::LoadMountDefinitions() namespace { - EnumFlag_t<ToyFlags> GetToyFlags(bool isFavourite, bool hasFanfare) + EnumFlag<ToyFlags> GetToyFlags(bool isFavourite, bool hasFanfare) { ToyFlags flags = ToyFlags::None; if (isFavourite) diff --git a/src/server/game/Entities/Player/CollectionMgr.h b/src/server/game/Entities/Player/CollectionMgr.h index 8c37ca1e666..bd92481fbe1 100644 --- a/src/server/game/Entities/Player/CollectionMgr.h +++ b/src/server/game/Entities/Player/CollectionMgr.h @@ -62,9 +62,9 @@ enum class ToyFlags : uint32 HasFanfare = 0x02 }; -namespace EnumFlag { template<> struct IsFlag<ToyFlags> : std::true_type { }; } +DEFINE_ENUM_FLAG(ToyFlags); -typedef std::map<uint32, EnumFlag_t<ToyFlags>> ToyBoxContainer; +typedef std::map<uint32, EnumFlag<ToyFlags>> ToyBoxContainer; typedef std::map<uint32, HeirloomData> HeirloomContainer; enum MountStatusFlags : uint8 diff --git a/src/server/game/Phasing/PhaseShift.cpp b/src/server/game/Phasing/PhaseShift.cpp index a93101c5687..16ed9aaa5e8 100644 --- a/src/server/game/Phasing/PhaseShift.cpp +++ b/src/server/game/Phasing/PhaseShift.cpp @@ -169,7 +169,7 @@ void PhaseShift::ModifyPhasesReferences(PhaseContainer::iterator itr, int32 refe void PhaseShift::UpdateUnphasedFlag() { - EnumFlag_t<PhaseShiftFlags> unphasedFlag = !Flags.HasFlag(PhaseShiftFlags::Inverse) ? PhaseShiftFlags::Unphased : PhaseShiftFlags::InverseUnphased; + EnumFlag<PhaseShiftFlags> unphasedFlag = !Flags.HasFlag(PhaseShiftFlags::Inverse) ? PhaseShiftFlags::Unphased : PhaseShiftFlags::InverseUnphased; Flags &= ~(!Flags.HasFlag(PhaseShiftFlags::Inverse) ? PhaseShiftFlags::InverseUnphased : PhaseShiftFlags::Unphased); if (NonCosmeticReferences && !DefaultReferences) Flags &= ~unphasedFlag; diff --git a/src/server/game/Phasing/PhaseShift.h b/src/server/game/Phasing/PhaseShift.h index dc77665e3e6..0fadbcc42df 100644 --- a/src/server/game/Phasing/PhaseShift.h +++ b/src/server/game/Phasing/PhaseShift.h @@ -48,11 +48,8 @@ enum class PhaseFlags : uint16 Personal = 0x2 }; -namespace EnumFlag -{ - template<> struct IsFlag<PhaseShiftFlags> : std::true_type { }; - template<> struct IsFlag<PhaseFlags> : std::true_type { }; -} +DEFINE_ENUM_FLAG(PhaseShiftFlags); +DEFINE_ENUM_FLAG(PhaseFlags); class TC_GAME_API PhaseShift { @@ -63,7 +60,7 @@ public: : Id(id), Flags(flags), References(0), AreaConditions(conditions) { } uint16 Id; - EnumFlag_t<PhaseFlags> Flags; + EnumFlag<PhaseFlags> Flags; int32 References; std::vector<Condition*> const* AreaConditions; bool operator<(PhaseRef const& right) const { return Id < right.Id; } @@ -113,7 +110,7 @@ public: protected: friend class PhasingHandler; - EnumFlag_t<PhaseShiftFlags> Flags; + EnumFlag<PhaseShiftFlags> Flags; ObjectGuid PersonalGuid; PhaseContainer Phases; VisibleMapIdContainer VisibleMapIds; diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp index aefaecc57d7..edb176de644 100644 --- a/src/server/game/Phasing/PhasingHandler.cpp +++ b/src/server/game/Phasing/PhasingHandler.cpp @@ -438,7 +438,7 @@ void PhasingHandler::InitDbPhaseShift(PhaseShift& phaseShift, uint8 phaseUseFlag phaseShift.ClearPhases(); phaseShift.IsDbPhaseShift = true; - EnumFlag_t<PhaseShiftFlags> flags = PhaseShiftFlags::None; + EnumFlag<PhaseShiftFlags> flags = PhaseShiftFlags::None; if (phaseUseFlags & PHASE_USE_FLAGS_ALWAYS_VISIBLE) flags |= PhaseShiftFlags::AlwaysVisible | PhaseShiftFlags::Unphased; if (phaseUseFlags & PHASE_USE_FLAGS_INVERSE) diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index fd9c0382421..a1bd2a25598 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -699,3 +699,12 @@ void WorldPackets::Misc::CloseInteraction::Read() { _worldPacket >> SourceGuid; } + +WorldPacket const* WorldPackets::Misc::StartTimer::Write() +{ + _worldPacket << int32(TimeLeft); + _worldPacket << int32(TotalTime); + _worldPacket << int32(Type); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index 3b1118b0d1f..683340529d8 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -902,6 +902,18 @@ namespace WorldPackets ObjectGuid SourceGuid; }; + + class StartTimer final : public ServerPacket + { + public: + StartTimer() : ServerPacket(SMSG_START_TIMER, 12) { } + + WorldPacket const* Write() override; + + int32 Type = 0; + int32 TimeLeft = 0; + int32 TotalTime = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index cd566b41876..076e0c55d08 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1821,7 +1821,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMERS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_LOOT_ROLL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); |