diff options
27 files changed, 236 insertions, 245 deletions
diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index e30031c22f7..ed6aea45f77 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -99,8 +99,8 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass) ByteBuffer& operator>>(ByteBuffer& data, AuctionSortDef& sortDef) { data.ResetBitPos(); - sortDef.SortOrder = static_cast<AuctionHouseSortOrder>(data.ReadBits(4)); - sortDef.ReverseSort = data.ReadBit(); + data >> Bits<4>(sortDef.SortOrder); + data >> Bits<1>(sortDef.ReverseSort); return data; } diff --git a/src/server/game/Server/Packets/AuthenticationPackets.cpp b/src/server/game/Server/Packets/AuthenticationPackets.cpp index 8dace8d9a40..5ae68849569 100644 --- a/src/server/game/Server/Packets/AuthenticationPackets.cpp +++ b/src/server/game/Server/Packets/AuthenticationPackets.cpp @@ -327,7 +327,7 @@ void WorldPackets::Auth::AuthContinuedSession::Read() void WorldPackets::Auth::ConnectToFailed::Read() { - Serial = _worldPacket.read<ConnectToSerial>(); + _worldPacket >> As<uint32>(Serial); _worldPacket >> Con; } diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp index 7bd73d0fc45..07cb5393c06 100644 --- a/src/server/game/Server/Packets/CalendarPackets.cpp +++ b/src/server/game/Server/Packets/CalendarPackets.cpp @@ -290,8 +290,8 @@ WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write() _worldPacket << LockDate; _worldPacket << uint64(EventClubID); _worldPacket << uint32(Invites.size()); - _worldPacket.WriteBits(EventName.size(), 8); - _worldPacket.WriteBits(Description.size(), 11); + _worldPacket << BitsSize<8>(EventName); + _worldPacket << BitsSize<11>(Description); _worldPacket.FlushBits(); for (auto const& invite : Invites) @@ -319,7 +319,7 @@ WorldPacket const* WorldPackets::Calendar::CalendarInviteAlert::Write() _worldPacket << InvitedByGuid; _worldPacket << OwnerGuid; - _worldPacket.WriteBits(EventName.size(), 8); + _worldPacket << BitsSize<8>(EventName); _worldPacket.FlushBits(); _worldPacket.WriteString(EventName); diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index 075d404cc05..5dd7ba275cf 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -49,16 +49,7 @@ namespace Character { void SortCustomizations(Array<ChrCustomizationChoice, 250>& customizations) { - auto first = customizations.begin(); - auto last = customizations.end(); - for (auto itr = first; itr != last; ++itr) - { - auto insertion = std::upper_bound(first, itr, *itr, [](ChrCustomizationChoice const& left, ChrCustomizationChoice const& right) - { - return left.ChrCustomizationOptionID < right.ChrCustomizationOptionID; - }); - std::rotate(insertion, itr, std::next(itr)); - } + std::ranges::sort(customizations, std::ranges::less(), &ChrCustomizationChoice::ChrCustomizationOptionID); } ByteBuffer& operator<<(ByteBuffer& data, CustomTabardInfo const& customTabardInfo) @@ -88,7 +79,7 @@ EnumCharacters::EnumCharacters(WorldPacket&& packet) : ClientPacket(std::move(pa ASSERT(GetOpcode() == CMSG_ENUM_CHARACTERS || GetOpcode() == CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT); } -EnumCharactersResult::CharacterInfo::CharacterInfo(Field* fields) +EnumCharactersResult::CharacterInfo::CharacterInfo(Field const* fields) { // 0 1 2 3 4 5 // "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.level, " @@ -248,15 +239,15 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo con if (!charInfo.MailSenderTypes.empty()) data.append(charInfo.MailSenderTypes.data(), charInfo.MailSenderTypes.size()); - data.WriteBits(charInfo.Name.length(), 6); - data.WriteBit(charInfo.FirstLogin); - data.WriteBit(charInfo.BoostInProgress); - data.WriteBits(charInfo.unkWod61x, 5); - data.WriteBit(charInfo.RpeResetAvailable); - data.WriteBit(charInfo.RpeResetQuestClearAvailable); + data << BitsSize<6>(charInfo.Name); + data << Bits<1>(charInfo.FirstLogin); + data << Bits<1>(charInfo.BoostInProgress); + data << Bits<5>(charInfo.unkWod61x); + data << Bits<1>(charInfo.RpeResetAvailable); + data << Bits<1>(charInfo.RpeResetQuestClearAvailable); for (std::string const& str : charInfo.MailSenders) - data.WriteBits(str.length() + 1, 6); + data << Bits<6>(str.length() + 1); data.FlushBits(); @@ -272,11 +263,11 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfo con ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::RaceUnlock const& raceUnlock) { data << int32(raceUnlock.RaceID); - data.WriteBit(raceUnlock.HasExpansion); - data.WriteBit(raceUnlock.HasAchievement); - data.WriteBit(raceUnlock.HasHeritageArmor); - data.WriteBit(raceUnlock.IsLocked); - data.WriteBit(raceUnlock.Unused1027); + data << Bits<1>(raceUnlock.HasExpansion); + data << Bits<1>(raceUnlock.HasAchievement); + data << Bits<1>(raceUnlock.HasHeritageArmor); + data << Bits<1>(raceUnlock.IsLocked); + data << Bits<1>(raceUnlock.Unused1027); data.FlushBits(); return data; @@ -302,13 +293,13 @@ WorldPacket const* EnumCharactersResult::Write() { _worldPacket.reserve(9 + Characters.size() * sizeof(CharacterInfo) + RaceUnlockData.size() * sizeof(RaceUnlock)); - _worldPacket.WriteBit(Success); - _worldPacket.WriteBit(IsDeletedCharacters); - _worldPacket.WriteBit(IsNewPlayerRestrictionSkipped); - _worldPacket.WriteBit(IsNewPlayerRestricted); - _worldPacket.WriteBit(IsNewPlayer); - _worldPacket.WriteBit(IsTrialAccountRestricted); - _worldPacket.WriteBit(DisabledClassesMask.has_value()); + _worldPacket << Bits<1>(Success); + _worldPacket << Bits<1>(IsDeletedCharacters); + _worldPacket << Bits<1>(IsNewPlayerRestrictionSkipped); + _worldPacket << Bits<1>(IsNewPlayerRestricted); + _worldPacket << Bits<1>(IsNewPlayer); + _worldPacket << Bits<1>(IsTrialAccountRestricted); + _worldPacket << OptionalInit(DisabledClassesMask); _worldPacket << uint32(Characters.size()); _worldPacket << int32(MaxCharacterLevel); _worldPacket << uint32(RaceUnlockData.size()); diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 572ce9761f3..89d4312a6fc 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -128,7 +128,7 @@ namespace WorldPackets * * @param fields Field set of CharacterDatabaseStatements::CHAR_SEL_ENUM */ - CharacterInfo(Field* fields); + CharacterInfo(Field const* fields); ObjectGuid Guid; uint64 GuildClubMemberID = 0; ///< same as bgs.protocol.club.v1.MemberId.unique_id, guessed basing on SMSG_QUERY_PLAYER_NAME_RESPONSE (that one is known) diff --git a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp index a19ec0502f8..11b66971073 100644 --- a/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CombatLogPacketsCommon.cpp @@ -55,7 +55,7 @@ void SpellCastLogData::Initialize(Spell const* spell) } if (!primaryPowerAdded) - PowerData.insert(PowerData.begin(), SpellLogPowerData(int32(primaryPowerType), unitCaster->GetPower(primaryPowerType), 0)); + PowerData.emplace(PowerData.begin(), int32(primaryPowerType), unitCaster->GetPower(primaryPowerType), 0); } } @@ -160,10 +160,10 @@ ByteBuffer& operator<<(ByteBuffer& data, SpellCastLogData const& spellCastLogDat data << int32(spellCastLogData.AttackPower); data << int32(spellCastLogData.SpellPower); data << int32(spellCastLogData.Armor); - data.WriteBits(spellCastLogData.PowerData.size(), 9); + data << BitsSize<9>(spellCastLogData.PowerData); data.FlushBits(); - for (WorldPackets::Spells::SpellLogPowerData const& powerData : spellCastLogData.PowerData) + for (SpellLogPowerData const& powerData : spellCastLogData.PowerData) { data << int32(powerData.PowerType); data << int32(powerData.Amount); diff --git a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp index de5189183e5..d5518dda79e 100644 --- a/src/server/game/Server/Packets/CraftingPacketsCommon.cpp +++ b/src/server/game/Server/Packets/CraftingPacketsCommon.cpp @@ -48,10 +48,10 @@ ByteBuffer& operator<<(ByteBuffer& data, CraftingData const& craftingData) for (SpellReducedReagent const& spellReducedReagent : craftingData.ResourcesReturned) data << spellReducedReagent; - data.WriteBit(craftingData.IsCrit); - data.WriteBit(craftingData.field_29); - data.WriteBit(craftingData.field_2A); - data.WriteBit(craftingData.BonusCraft); + data << Bits<1>(craftingData.IsCrit); + data << Bits<1>(craftingData.field_29); + data << Bits<1>(craftingData.field_2A); + data << Bits<1>(craftingData.BonusCraft); data.FlushBits(); data << craftingData.OldItem; diff --git a/src/server/game/Server/Packets/EquipmentSetPackets.cpp b/src/server/game/Server/Packets/EquipmentSetPackets.cpp index 45442f9db31..7d7fa640b9a 100644 --- a/src/server/game/Server/Packets/EquipmentSetPackets.cpp +++ b/src/server/game/Server/Packets/EquipmentSetPackets.cpp @@ -67,7 +67,7 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write() void WorldPackets::EquipmentSet::SaveEquipmentSet::Read() { - Set.Type = _worldPacket.read<EquipmentSetInfo::EquipmentSetType, int32>(); + _worldPacket >> As<int32>(Set.Type); _worldPacket >> Set.Guid; _worldPacket >> Set.SetID; _worldPacket >> Set.IgnoreMask; diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index 0796748d877..c3212ea899c 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -253,7 +253,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GarrisonInfo const& garrison) data << uint32(garrison.NumMissionsStartedToday); data << int32(garrison.MinAutoTroopLevel); - for (GarrisonPlotInfo* plot : garrison.Plots) + for (GarrisonPlotInfo const* plot : garrison.Plots) data << *plot; for (std::vector<GarrisonMissionReward> const& missionReward : garrison.MissionRewards) diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index fe80b31595d..88c971c8ae7 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -906,8 +906,7 @@ void WorldPackets::Guild::GuildNewsUpdateSticky::Read() { _worldPacket >> GuildGUID; _worldPacket >> NewsID; - - NewsID = _worldPacket.ReadBit(); + _worldPacket >> Bits<1>(Sticky); } void WorldPackets::Guild::GuildSetGuildMaster::Read() diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp index bea2ce488c9..41e73128573 100644 --- a/src/server/game/Server/Packets/InstancePackets.cpp +++ b/src/server/game/Server/Packets/InstancePackets.cpp @@ -16,6 +16,7 @@ */ #include "InstancePackets.h" +#include "PacketUtilities.h" WorldPacket const* WorldPackets::Instance::UpdateLastInstance::Write() { @@ -110,8 +111,8 @@ WorldPacket const* WorldPackets::Instance::RaidInstanceMessage::Write() _worldPacket << uint8(Type); _worldPacket << uint32(MapID); _worldPacket << uint32(DifficultyID); - _worldPacket.WriteBit(Locked); - _worldPacket.WriteBit(Extended); + _worldPacket << Bits<1>(Locked); + _worldPacket << Bits<1>(Extended); _worldPacket.FlushBits(); return &_worldPacket; diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index 04c446ff3ae..7dc3dc23138 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -264,14 +264,14 @@ WorldPacket const* WorldPackets::Item::ItemPushResult::Write() for (UiEventToast const& uiEventToast : Toasts) _worldPacket << uiEventToast; - _worldPacket.WriteBit(Pushed); - _worldPacket.WriteBit(Created); - _worldPacket.WriteBit(Unused_1017); - _worldPacket.WriteBits(DisplayText, 3); - _worldPacket.WriteBit(IsBonusRoll); - _worldPacket.WriteBit(IsEncounterLoot); - _worldPacket.WriteBit(CraftingData.has_value()); - _worldPacket.WriteBit(FirstCraftOperationID.has_value()); + _worldPacket << Bits<1>(Pushed); + _worldPacket << Bits<1>(Created); + _worldPacket << Bits<1>(Unused_1017); + _worldPacket << Bits<3>(DisplayText); + _worldPacket << Bits<1>(IsBonusRoll); + _worldPacket << Bits<1>(IsEncounterLoot); + _worldPacket << OptionalInit(CraftingData); + _worldPacket << OptionalInit(FirstCraftOperationID); _worldPacket.FlushBits(); _worldPacket << Item; diff --git a/src/server/game/Server/Packets/ItemPacketsCommon.cpp b/src/server/game/Server/Packets/ItemPacketsCommon.cpp index 5078787c245..e68a6f35dca 100644 --- a/src/server/game/Server/Packets/ItemPacketsCommon.cpp +++ b/src/server/game/Server/Packets/ItemPacketsCommon.cpp @@ -147,17 +147,16 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemBonuses const& itemBonusInstanceDat ByteBuffer& operator>>(ByteBuffer& data, ItemBonuses& itemBonusInstanceData) { - uint32 bonusListIdSize; - itemBonusInstanceData.Context = data.read<ItemContext>(); + uint32 bonusListIdSize; data >> bonusListIdSize; + if (bonusListIdSize > 32) + throw PacketArrayMaxCapacityException(bonusListIdSize, 32); - for (uint32 i = 0u; i < bonusListIdSize; ++i) - { - uint32 bonusId; - data >> bonusId; - itemBonusInstanceData.BonusListIDs.push_back(bonusId); - } + itemBonusInstanceData.BonusListIDs.resize(bonusListIdSize); + + for (int32& bonusListID : itemBonusInstanceData.BonusListIDs) + data >> bonusListID; return data; } @@ -173,14 +172,14 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemMod const& itemMod) ByteBuffer& operator>>(ByteBuffer& data, ItemMod& itemMod) { data >> itemMod.Value; - itemMod.Type = data.read<ItemModifier, uint8>(); + data >> As<uint8>(itemMod.Type); return data; } ByteBuffer& operator<<(ByteBuffer& data, ItemModList const& itemModList) { - data.WriteBits(itemModList.Values.size(), 6); + data << BitsSize<6>(itemModList.Values); data.FlushBits(); for (ItemMod const& itemMod : itemModList.Values) @@ -191,7 +190,7 @@ ByteBuffer& operator<<(ByteBuffer& data, ItemModList const& itemModList) ByteBuffer& operator>>(ByteBuffer& data, ItemModList& itemModList) { - itemModList.Values.resize(data.ReadBits(6)); + data >> BitsSize<6>(itemModList.Values); data.ResetBitPos(); for (ItemMod& itemMod : itemModList.Values) diff --git a/src/server/game/Server/Packets/NPCPackets.cpp b/src/server/game/Server/Packets/NPCPackets.cpp index ec32ed95325..4a81fef3f0b 100644 --- a/src/server/game/Server/Packets/NPCPackets.cpp +++ b/src/server/game/Server/Packets/NPCPackets.cpp @@ -16,13 +16,12 @@ */ #include "NPCPackets.h" -#include "Util.h" namespace WorldPackets::NPC { ByteBuffer& operator<<(ByteBuffer& data, TreasureItem const& treasureItem) { - data.WriteBits(AsUnderlyingType(treasureItem.Type), 1); + data << Bits<1>(treasureItem.Type); data << int32(treasureItem.ID); data << int32(treasureItem.Quantity); @@ -47,11 +46,11 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipOptions const& gossipOption data << uint32(gossipOption.OptionLanguage); data << int32(gossipOption.Flags); data << int32(gossipOption.OrderIndex); - data.WriteBits(gossipOption.Text.size(), 12); - data.WriteBits(gossipOption.Confirm.size(), 12); - data.WriteBits(AsUnderlyingType(gossipOption.Status), 2); - data.WriteBit(gossipOption.SpellID.has_value()); - data.WriteBit(gossipOption.OverrideIconID.has_value()); + data << BitsSize<12>(gossipOption.Text); + data << BitsSize<12>(gossipOption.Confirm); + data << Bits<2>(gossipOption.Status); + data << OptionalInit(gossipOption.SpellID); + data << OptionalInit(gossipOption.OverrideIconID); data.FlushBits(); data << gossipOption.Treasure; @@ -76,9 +75,9 @@ ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText) data << int32(gossipText.QuestFlags[0]); data << int32(gossipText.QuestFlags[1]); - data.WriteBit(gossipText.Repeatable); - data.WriteBit(gossipText.Important); - data.WriteBits(gossipText.QuestTitle.size(), 9); + data << Bits<1>(gossipText.Repeatable); + data << Bits<1>(gossipText.Important); + data << BitsSize<9>(gossipText.QuestTitle); data.FlushBits(); data.WriteString(gossipText.QuestTitle); @@ -108,8 +107,8 @@ WorldPacket const* GossipMessage::Write() _worldPacket << int32(FriendshipFactionID); _worldPacket << uint32(GossipOptions.size()); _worldPacket << uint32(GossipText.size()); - _worldPacket.WriteBit(TextID.has_value()); - _worldPacket.WriteBit(BroadcastTextID.has_value()); + _worldPacket << OptionalInit(TextID); + _worldPacket << OptionalInit(BroadcastTextID); _worldPacket.FlushBits(); for (ClientGossipOptions const& options : GossipOptions) diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index 6aba0696f26..79b2bd45625 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -94,13 +94,13 @@ namespace WorldPackets struct ClientGossipText { - int32 QuestID = 0; + int32 QuestID = 0; int32 ContentTuningID = 0; - int32 QuestType = 0; - bool Repeatable = false; - bool Important = false; + int32 QuestType = 0; + bool Repeatable = false; + bool Important = false; std::string QuestTitle; - int32 QuestFlags[2] = { }; + std::array<int32, 2> QuestFlags = { }; }; ByteBuffer& operator<<(ByteBuffer& data, ClientGossipText const& gossipText); diff --git a/src/server/game/Server/Packets/PartyPackets.cpp b/src/server/game/Server/Packets/PartyPackets.cpp index 0791574e61c..fc8365dd507 100644 --- a/src/server/game/Server/Packets/PartyPackets.cpp +++ b/src/server/game/Server/Packets/PartyPackets.cpp @@ -735,9 +735,9 @@ WorldPacket const* WorldPackets::Party::BroadcastSummonResponse::Write() void WorldPackets::Party::SetRestrictPingsToAssistants::Read() { - bool hasPartyIndex = _worldPacket.ReadBit(); - RestrictPingsToAssistants = _worldPacket.ReadBit(); - if (hasPartyIndex) + _worldPacket >> OptionalInit(PartyIndex); + _worldPacket >> Bits<1>(RestrictPingsToAssistants); + if (PartyIndex) _worldPacket >> PartyIndex.emplace(); } @@ -764,7 +764,7 @@ void WorldPackets::Party::SendPingWorldPoint::Read() _worldPacket >> SenderGUID; _worldPacket >> MapID; _worldPacket >> Point; - Type = _worldPacket.read<PingSubjectType, uint8>(); + _worldPacket >> As<uint8>(Type); _worldPacket >> PinFrameID; } diff --git a/src/server/game/Server/Packets/QueryPackets.cpp b/src/server/game/Server/Packets/QueryPackets.cpp index cf826d3eeea..72bde99ff5d 100644 --- a/src/server/game/Server/Packets/QueryPackets.cpp +++ b/src/server/game/Server/Packets/QueryPackets.cpp @@ -369,7 +369,7 @@ void QueryCorpseLocationFromClient::Read() WorldPacket const* CorpseLocation::Write() { - _worldPacket.WriteBit(Valid); + _worldPacket << Bits<1>(Valid); _worldPacket.FlushBits(); _worldPacket << Player; diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 9eae0a7c3b0..1d8dc537de5 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -194,16 +194,16 @@ WorldPacket const* QueryQuestInfoResponse::Write() for (QuestCompleteDisplaySpell const& rewardDisplaySpell : Info.RewardDisplaySpell) _worldPacket << rewardDisplaySpell; - _worldPacket.WriteBits(Info.LogTitle.size(), 9); - _worldPacket.WriteBits(Info.LogDescription.size(), 12); - _worldPacket.WriteBits(Info.QuestDescription.size(), 12); - _worldPacket.WriteBits(Info.AreaDescription.size(), 9); - _worldPacket.WriteBits(Info.PortraitGiverText.size(), 10); - _worldPacket.WriteBits(Info.PortraitGiverName.size(), 8); - _worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10); - _worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8); - _worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11); - _worldPacket.WriteBit(Info.ReadyForTranslation); + _worldPacket << BitsSize<9>(Info.LogTitle); + _worldPacket << BitsSize<12>(Info.LogDescription); + _worldPacket << BitsSize<12>(Info.QuestDescription); + _worldPacket << BitsSize<9>(Info.AreaDescription); + _worldPacket << BitsSize<10>(Info.PortraitGiverText); + _worldPacket << BitsSize<8>(Info.PortraitGiverName); + _worldPacket << BitsSize<10>(Info.PortraitTurnInText); + _worldPacket << BitsSize<8>(Info.PortraitTurnInName); + _worldPacket << BitsSize<11>(Info.QuestCompletionLog); + _worldPacket << Bits<1>(Info.ReadyForTranslation); _worldPacket.FlushBits(); for (QuestObjective const& questObjective : Info.Objectives) @@ -221,7 +221,7 @@ WorldPacket const* QueryQuestInfoResponse::Write() for (int32 visualEffect : questObjective.VisualEffects) _worldPacket << int32(visualEffect); - _worldPacket.WriteBits(questObjective.Description.size(), 8); + _worldPacket << BitsSize<8>(questObjective.Description); _worldPacket.FlushBits(); _worldPacket.WriteString(questObjective.Description); @@ -278,7 +278,7 @@ WorldPacket const* QuestUpdateAddPvPCredit::Write() ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem) { - data.WriteBits(AsUnderlyingType(questChoiceItem.LootItemType), 2); + data << Bits<2>(questChoiceItem.LootItemType); data << questChoiceItem.Item; data << int32(questChoiceItem.Quantity); @@ -288,7 +288,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestChoiceItem const& questChoiceItem) ByteBuffer& operator>>(ByteBuffer& data, QuestChoiceItem& questChoiceItem) { data.ResetBitPos(); - questChoiceItem.LootItemType = LootItemType(data.ReadBits(2)); + data >> Bits<2>(questChoiceItem.LootItemType); data >> questChoiceItem.Item; data >> questChoiceItem.Quantity; @@ -339,7 +339,7 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestRewards const& questRewards) for (QuestChoiceItem const& choiceItem : questRewards.ChoiceItems) data << choiceItem; - data.WriteBit(questRewards.IsBoostSpell); + data << Bits<1>(questRewards.IsBoostSpell); data.FlushBits(); return data; @@ -361,8 +361,8 @@ ByteBuffer& operator<<(ByteBuffer& data, QuestGiverOfferReward const& offer) data << uint32(emote.Delay); } - data.WriteBit(offer.AutoLaunched); - data.WriteBit(false); // Unused + data << Bits<1>(offer.AutoLaunched); + data << Bits<1>(false); // Unused data.FlushBits(); data << offer.Rewards; // QuestRewards @@ -381,12 +381,12 @@ WorldPacket const* QuestGiverOfferRewardMessage::Write() _worldPacket << int32(QuestGiverCreatureID); _worldPacket << uint32(ConditionalRewardText.size()); - _worldPacket.WriteBits(QuestTitle.size(), 9); - _worldPacket.WriteBits(RewardText.size(), 12); - _worldPacket.WriteBits(PortraitGiverText.size(), 10); - _worldPacket.WriteBits(PortraitGiverName.size(), 8); - _worldPacket.WriteBits(PortraitTurnInText.size(), 10); - _worldPacket.WriteBits(PortraitTurnInName.size(), 8); + _worldPacket << BitsSize<9>(QuestTitle); + _worldPacket << BitsSize<12>(RewardText); + _worldPacket << BitsSize<10>(PortraitGiverText); + _worldPacket << BitsSize<8>(PortraitGiverName); + _worldPacket << BitsSize<10>(PortraitTurnInText); + _worldPacket << BitsSize<8>(PortraitTurnInName); _worldPacket.FlushBits(); for (ConditionalQuestText const& conditionalQuestText : ConditionalRewardText) @@ -477,18 +477,18 @@ WorldPacket const* QuestGiverQuestDetails::Write() _worldPacket << uint8(obj.Type); } - _worldPacket.WriteBits(QuestTitle.size(), 9); - _worldPacket.WriteBits(DescriptionText.size(), 12); - _worldPacket.WriteBits(LogDescription.size(), 12); - _worldPacket.WriteBits(PortraitGiverText.size(), 10); - _worldPacket.WriteBits(PortraitGiverName.size(), 8); - _worldPacket.WriteBits(PortraitTurnInText.size(), 10); - _worldPacket.WriteBits(PortraitTurnInName.size(), 8); - _worldPacket.WriteBit(AutoLaunched); - _worldPacket.WriteBit(FromContentPush); - _worldPacket.WriteBit(false); // unused in client - _worldPacket.WriteBit(StartCheat); - _worldPacket.WriteBit(DisplayPopup); + _worldPacket << BitsSize<9>(QuestTitle); + _worldPacket << BitsSize<12>(DescriptionText); + _worldPacket << BitsSize<12>(LogDescription); + _worldPacket << BitsSize<10>(PortraitGiverText); + _worldPacket << BitsSize<8>(PortraitGiverName); + _worldPacket << BitsSize<10>(PortraitTurnInText); + _worldPacket << BitsSize<8>(PortraitTurnInName); + _worldPacket << Bits<1>(AutoLaunched); + _worldPacket << Bits<1>(FromContentPush); + _worldPacket << Bits<1>(false); // unused in client + _worldPacket << Bits<1>(StartCheat); + _worldPacket << Bits<1>(DisplayPopup); _worldPacket.FlushBits(); _worldPacket << Rewards; // QuestRewards @@ -535,14 +535,14 @@ WorldPacket const* QuestGiverRequestItems::Write() _worldPacket << int32(cur.Amount); } - _worldPacket.WriteBit(AutoLaunched); + _worldPacket << Bits<1>(AutoLaunched); _worldPacket.FlushBits(); _worldPacket << int32(QuestGiverCreatureID); _worldPacket << uint32(ConditionalCompletionText.size()); - _worldPacket.WriteBits(QuestTitle.size(), 9); - _worldPacket.WriteBits(CompletionText.size(), 12); + _worldPacket << BitsSize<9>(QuestTitle); + _worldPacket << BitsSize<12>(CompletionText); _worldPacket.FlushBits(); for (ConditionalQuestText const& conditionalQuestText : ConditionalCompletionText) diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index ad8d8f957e2..a6c89c0cd69 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -280,7 +280,7 @@ namespace WorldPackets int32 SkillLineID = 0; int32 NumSkillUps = 0; int32 TreasurePickerID = 0; - std::array<QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT> ChoiceItems; + std::array<QuestChoiceItem, QUEST_REWARD_CHOICES_COUNT> ChoiceItems = { }; std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemID = { }; std::array<int32, QUEST_REWARD_ITEM_COUNT> ItemQty = { }; std::array<int32, QUEST_REWARD_REPUTATIONS_COUNT> FactionID = { }; @@ -302,13 +302,13 @@ namespace WorldPackets struct QuestGiverOfferReward { ObjectGuid QuestGiverGUID; - int32 QuestGiverCreatureID = 0; - int32 QuestID = 0; - bool AutoLaunched = false; - int32 SuggestedPartyMembers = 0; + int32 QuestGiverCreatureID = 0; + int32 QuestID = 0; + bool AutoLaunched = false; + int32 SuggestedPartyMembers = 0; QuestRewards Rewards; std::vector<QuestDescEmote> Emotes; - int32 QuestFlags[3] = { }; // Flags and FlagsEx + std::array<int32, 3> QuestFlags = { }; }; class QuestGiverOfferRewardMessage final : public ServerPacket diff --git a/src/server/game/Server/Packets/ReputationPackets.cpp b/src/server/game/Server/Packets/ReputationPackets.cpp index 6ba3c02f264..aff39c3bbde 100644 --- a/src/server/game/Server/Packets/ReputationPackets.cpp +++ b/src/server/game/Server/Packets/ReputationPackets.cpp @@ -16,6 +16,7 @@ */ #include "ReputationPackets.h" +#include "PacketUtilities.h" WorldPacket const* WorldPackets::Reputation::InitializeFactions::Write() { diff --git a/src/server/game/Server/Packets/ScenePackets.cpp b/src/server/game/Server/Packets/ScenePackets.cpp index e3d4489e8b4..98ead11342e 100644 --- a/src/server/game/Server/Packets/ScenePackets.cpp +++ b/src/server/game/Server/Packets/ScenePackets.cpp @@ -16,6 +16,7 @@ */ #include "ScenePackets.h" +#include "PacketUtilities.h" WorldPacket const* WorldPackets::Scenes::PlayScene::Write() { @@ -24,8 +25,8 @@ WorldPacket const* WorldPackets::Scenes::PlayScene::Write() _worldPacket << uint32(SceneInstanceID); _worldPacket << int32(SceneScriptPackageID); _worldPacket << TransportGUID; - _worldPacket << Location.PositionXYZOStream(); - _worldPacket.WriteBit(Encrypted); + _worldPacket << Location; + _worldPacket << Bits<1>(Encrypted); _worldPacket.FlushBits(); return &_worldPacket; diff --git a/src/server/game/Server/Packets/ScenePackets.h b/src/server/game/Server/Packets/ScenePackets.h index 99f217f5fbe..af33a9e68ab 100644 --- a/src/server/game/Server/Packets/ScenePackets.h +++ b/src/server/game/Server/Packets/ScenePackets.h @@ -18,8 +18,9 @@ #ifndef ScenePackets_h__ #define ScenePackets_h__ +#include "ObjectGuid.h" #include "Packet.h" -#include "Object.h" +#include "Position.h" namespace WorldPackets { @@ -37,7 +38,7 @@ namespace WorldPackets uint32 SceneInstanceID = 0; int32 SceneScriptPackageID = 0; ObjectGuid TransportGUID; - Position Location; + TaggedPosition<Position::XYZO> Location; bool Encrypted = false; }; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 8be021086f5..e4a06ff214f 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -94,13 +94,13 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData) data << uint16(auraData.CastLevel); data << uint8(auraData.Applications); data << int32(auraData.ContentTuningID); - data.WriteBit(auraData.CastUnit.has_value()); - data.WriteBit(auraData.Duration.has_value()); - data.WriteBit(auraData.Remaining.has_value()); - data.WriteBit(auraData.TimeMod.has_value()); - data.WriteBits(auraData.Points.size(), 6); - data.WriteBits(auraData.EstimatedPoints.size(), 6); - data.WriteBit(auraData.ContentTuning.has_value()); + data << OptionalInit(auraData.CastUnit); + data << OptionalInit(auraData.Duration); + data << OptionalInit(auraData.Remaining); + data << OptionalInit(auraData.TimeMod); + data << BitsSize<6>(auraData.Points); + data << BitsSize<6>(auraData.EstimatedPoints); + data << OptionalInit(auraData.ContentTuning); if (auraData.ContentTuning) data << *auraData.ContentTuning; @@ -129,7 +129,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraDataInfo const& auraData) ByteBuffer& operator<<(ByteBuffer& data, AuraInfo const& aura) { data << aura.Slot; - data.WriteBit(aura.AuraData.has_value()); + data << OptionalInit(aura.AuraData); data.FlushBits(); if (aura.AuraData) @@ -141,7 +141,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuraInfo const& aura) WorldPacket const* AuraUpdate::Write() { _worldPacket.WriteBit(UpdateAll); - _worldPacket.WriteBits(Auras.size(), 9); + _worldPacket << BitsSize<9>(Auras); for (AuraInfo const& aura : Auras) _worldPacket << aura; diff --git a/src/server/game/Server/Packets/SystemPackets.cpp b/src/server/game/Server/Packets/SystemPackets.cpp index b2f97c95063..3e0bee090bb 100644 --- a/src/server/game/Server/Packets/SystemPackets.cpp +++ b/src/server/game/Server/Packets/SystemPackets.cpp @@ -30,10 +30,10 @@ ByteBuffer& operator<<(ByteBuffer& data, SavedThrottleObjectState const& throttl ByteBuffer& operator<<(ByteBuffer& data, EuropaTicketConfig const& europaTicketSystemStatus) { - data.WriteBit(europaTicketSystemStatus.TicketsEnabled); - data.WriteBit(europaTicketSystemStatus.BugsEnabled); - data.WriteBit(europaTicketSystemStatus.ComplaintsEnabled); - data.WriteBit(europaTicketSystemStatus.SuggestionsEnabled); + data << Bits<1>(europaTicketSystemStatus.TicketsEnabled); + data << Bits<1>(europaTicketSystemStatus.BugsEnabled); + data << Bits<1>(europaTicketSystemStatus.ComplaintsEnabled); + data << Bits<1>(europaTicketSystemStatus.SuggestionsEnabled); data << europaTicketSystemStatus.ThrottleState; @@ -50,7 +50,7 @@ ByteBuffer& operator<<(ByteBuffer& data, GameRuleValuePair const& gameRuleValue) ByteBuffer& operator<<(ByteBuffer& data, DebugTimeEventInfo const& debugTimeEventInfo) { data << uint32(debugTimeEventInfo.TimeEvent); - data.WriteBits(debugTimeEventInfo.Text.length(), 7); + data << BitsSize<7>(debugTimeEventInfo.Text); data.FlushBits(); data.WriteString(debugTimeEventInfo.Text); @@ -94,59 +94,59 @@ WorldPacket const* FeatureSystemStatus::Write() for (GameRuleValuePair const& gameRuleValue : GameRuleValues) _worldPacket << gameRuleValue; - _worldPacket.WriteBit(VoiceEnabled); - _worldPacket.WriteBit(EuropaTicketSystemStatus.has_value()); - _worldPacket.WriteBit(BpayStoreEnabled); - _worldPacket.WriteBit(BpayStoreAvailable); - _worldPacket.WriteBit(BpayStoreDisabledByParentalControls); - _worldPacket.WriteBit(ItemRestorationButtonEnabled); - _worldPacket.WriteBit(BrowserEnabled); - _worldPacket.WriteBit(SessionAlert.has_value()); - - _worldPacket.WriteBit(RAFSystem.Enabled); - _worldPacket.WriteBit(RAFSystem.RecruitingEnabled); - _worldPacket.WriteBit(CharUndeleteEnabled); - _worldPacket.WriteBit(RestrictedAccount); - _worldPacket.WriteBit(CommerceSystemEnabled); - _worldPacket.WriteBit(TutorialsEnabled); - _worldPacket.WriteBit(Unk67); - _worldPacket.WriteBit(WillKickFromWorld); - - _worldPacket.WriteBit(KioskModeEnabled); - _worldPacket.WriteBit(CompetitiveModeEnabled); - _worldPacket.WriteBit(TokenBalanceEnabled); - _worldPacket.WriteBit(WarModeFeatureEnabled); - _worldPacket.WriteBit(ClubsEnabled); - _worldPacket.WriteBit(ClubsBattleNetClubTypeAllowed); - _worldPacket.WriteBit(ClubsCharacterClubTypeAllowed); - _worldPacket.WriteBit(ClubsPresenceUpdateEnabled); - - _worldPacket.WriteBit(VoiceChatDisabledByParentalControl); - _worldPacket.WriteBit(VoiceChatMutedByParentalControl); - _worldPacket.WriteBit(QuestSessionEnabled); - _worldPacket.WriteBit(IsMuted); - _worldPacket.WriteBit(ClubFinderEnabled); - _worldPacket.WriteBit(CommunityFinderEnabled); - _worldPacket.WriteBit(Unknown901CheckoutRelated); - _worldPacket.WriteBit(TextToSpeechFeatureEnabled); - - _worldPacket.WriteBit(ChatDisabledByDefault); - _worldPacket.WriteBit(ChatDisabledByPlayer); - _worldPacket.WriteBit(LFGListCustomRequiresAuthenticator); - _worldPacket.WriteBit(AddonsDisabled); - _worldPacket.WriteBit(WarGamesEnabled); - _worldPacket.WriteBit(ContentTrackingEnabled); - _worldPacket.WriteBit(IsSellAllJunkEnabled); - _worldPacket.WriteBit(IsGroupFinderEnabled); - - _worldPacket.WriteBit(IsLFDEnabled); - _worldPacket.WriteBit(IsLFREnabled); - _worldPacket.WriteBit(IsPremadeGroupEnabled); - _worldPacket.WriteBit(CanShowSetRoleButton); - _worldPacket.WriteBit(false); // unused 10.2.7 - _worldPacket.WriteBit(false); // unused 10.2.7 - - _worldPacket.WriteBits(Unknown1027.length(), 7); + _worldPacket << Bits<1>(VoiceEnabled); + _worldPacket << OptionalInit(EuropaTicketSystemStatus); + _worldPacket << Bits<1>(BpayStoreEnabled); + _worldPacket << Bits<1>(BpayStoreAvailable); + _worldPacket << Bits<1>(BpayStoreDisabledByParentalControls); + _worldPacket << Bits<1>(ItemRestorationButtonEnabled); + _worldPacket << Bits<1>(BrowserEnabled); + _worldPacket << OptionalInit(SessionAlert); + + _worldPacket << Bits<1>(RAFSystem.Enabled); + _worldPacket << Bits<1>(RAFSystem.RecruitingEnabled); + _worldPacket << Bits<1>(CharUndeleteEnabled); + _worldPacket << Bits<1>(RestrictedAccount); + _worldPacket << Bits<1>(CommerceSystemEnabled); + _worldPacket << Bits<1>(TutorialsEnabled); + _worldPacket << Bits<1>(Unk67); + _worldPacket << Bits<1>(WillKickFromWorld); + + _worldPacket << Bits<1>(KioskModeEnabled); + _worldPacket << Bits<1>(CompetitiveModeEnabled); + _worldPacket << Bits<1>(TokenBalanceEnabled); + _worldPacket << Bits<1>(WarModeFeatureEnabled); + _worldPacket << Bits<1>(ClubsEnabled); + _worldPacket << Bits<1>(ClubsBattleNetClubTypeAllowed); + _worldPacket << Bits<1>(ClubsCharacterClubTypeAllowed); + _worldPacket << Bits<1>(ClubsPresenceUpdateEnabled); + + _worldPacket << Bits<1>(VoiceChatDisabledByParentalControl); + _worldPacket << Bits<1>(VoiceChatMutedByParentalControl); + _worldPacket << Bits<1>(QuestSessionEnabled); + _worldPacket << Bits<1>(IsMuted); + _worldPacket << Bits<1>(ClubFinderEnabled); + _worldPacket << Bits<1>(CommunityFinderEnabled); + _worldPacket << Bits<1>(Unknown901CheckoutRelated); + _worldPacket << Bits<1>(TextToSpeechFeatureEnabled); + + _worldPacket << Bits<1>(ChatDisabledByDefault); + _worldPacket << Bits<1>(ChatDisabledByPlayer); + _worldPacket << Bits<1>(LFGListCustomRequiresAuthenticator); + _worldPacket << Bits<1>(AddonsDisabled); + _worldPacket << Bits<1>(WarGamesEnabled); + _worldPacket << Bits<1>(ContentTrackingEnabled); + _worldPacket << Bits<1>(IsSellAllJunkEnabled); + _worldPacket << Bits<1>(IsGroupFinderEnabled); + + _worldPacket << Bits<1>(IsLFDEnabled); + _worldPacket << Bits<1>(IsLFREnabled); + _worldPacket << Bits<1>(IsPremadeGroupEnabled); + _worldPacket << Bits<1>(CanShowSetRoleButton); + _worldPacket << Bits<1>(false); // unused 10.2.7 + _worldPacket << Bits<1>(false); // unused 10.2.7 + + _worldPacket << BitsSize<7>(Unknown1027); _worldPacket.FlushBits(); @@ -186,7 +186,7 @@ WorldPacket const* FeatureSystemStatus::Write() _worldPacket.WriteString(Unknown1027); { - _worldPacket.WriteBit(Squelch.IsSquelched); + _worldPacket << Bits<1>(Squelch.IsSquelched); _worldPacket << Squelch.BnetAccountGuid; _worldPacket << Squelch.GuildGuid; } @@ -199,38 +199,38 @@ WorldPacket const* FeatureSystemStatus::Write() WorldPacket const* FeatureSystemStatusGlueScreen::Write() { - _worldPacket.WriteBit(BpayStoreEnabled); - _worldPacket.WriteBit(BpayStoreAvailable); - _worldPacket.WriteBit(BpayStoreDisabledByParentalControls); - _worldPacket.WriteBit(CharUndeleteEnabled); - _worldPacket.WriteBit(CommerceSystemEnabled); - _worldPacket.WriteBit(Unk14); - _worldPacket.WriteBit(WillKickFromWorld); - _worldPacket.WriteBit(IsExpansionPreorderInStore); - - _worldPacket.WriteBit(KioskModeEnabled); - _worldPacket.WriteBit(CompetitiveModeEnabled); - _worldPacket.WriteBit(IsBoostEnabled); - _worldPacket.WriteBit(TrialBoostEnabled); - _worldPacket.WriteBit(TokenBalanceEnabled); - _worldPacket.WriteBit(LiveRegionCharacterListEnabled); - _worldPacket.WriteBit(LiveRegionCharacterCopyEnabled); - _worldPacket.WriteBit(LiveRegionAccountCopyEnabled); - - _worldPacket.WriteBit(LiveRegionKeyBindingsCopyEnabled); - _worldPacket.WriteBit(Unknown901CheckoutRelated); - _worldPacket.WriteBit(false); // unused, 10.0.2 - _worldPacket.WriteBit(EuropaTicketSystemStatus.has_value()); - _worldPacket.WriteBit(IsNameReservationEnabled); - _worldPacket.WriteBit(LaunchETA.has_value()); - _worldPacket.WriteBit(TimerunningEnabled); - _worldPacket.WriteBit(AddonsDisabled); - - _worldPacket.WriteBit(Unused1000); - _worldPacket.WriteBit(AccountSaveDataExportEnabled); - _worldPacket.WriteBit(AccountLockedByExport); - - _worldPacket.WriteBits(RealmHiddenAlert.length() + 1, 11); + _worldPacket << Bits<1>(BpayStoreEnabled); + _worldPacket << Bits<1>(BpayStoreAvailable); + _worldPacket << Bits<1>(BpayStoreDisabledByParentalControls); + _worldPacket << Bits<1>(CharUndeleteEnabled); + _worldPacket << Bits<1>(CommerceSystemEnabled); + _worldPacket << Bits<1>(Unk14); + _worldPacket << Bits<1>(WillKickFromWorld); + _worldPacket << Bits<1>(IsExpansionPreorderInStore); + + _worldPacket << Bits<1>(KioskModeEnabled); + _worldPacket << Bits<1>(CompetitiveModeEnabled); + _worldPacket << Bits<1>(IsBoostEnabled); + _worldPacket << Bits<1>(TrialBoostEnabled); + _worldPacket << Bits<1>(TokenBalanceEnabled); + _worldPacket << Bits<1>(LiveRegionCharacterListEnabled); + _worldPacket << Bits<1>(LiveRegionCharacterCopyEnabled); + _worldPacket << Bits<1>(LiveRegionAccountCopyEnabled); + + _worldPacket << Bits<1>(LiveRegionKeyBindingsCopyEnabled); + _worldPacket << Bits<1>(Unknown901CheckoutRelated); + _worldPacket << Bits<1>(false); // unused, 10.0.2 + _worldPacket << OptionalInit(EuropaTicketSystemStatus); + _worldPacket << Bits<1>(IsNameReservationEnabled); + _worldPacket << OptionalInit(LaunchETA); + _worldPacket << Bits<1>(TimerunningEnabled); + _worldPacket << Bits<1>(AddonsDisabled); + + _worldPacket << Bits<1>(Unused1000); + _worldPacket << Bits<1>(AccountSaveDataExportEnabled); + _worldPacket << Bits<1>(AccountLockedByExport); + + _worldPacket << Bits<11>(RealmHiddenAlert.length() + 1); _worldPacket.FlushBits(); @@ -278,9 +278,9 @@ WorldPacket const* FeatureSystemStatusGlueScreen::Write() WorldPacket const* SetTimeZoneInformation::Write() { - _worldPacket.WriteBits(ServerTimeTZ.length(), 7); - _worldPacket.WriteBits(GameTimeTZ.length(), 7); - _worldPacket.WriteBits(ServerRegionalTZ.length(), 7); + _worldPacket << BitsSize<7>(ServerTimeTZ); + _worldPacket << BitsSize<7>(GameTimeTZ); + _worldPacket << BitsSize<7>(ServerRegionalTZ); _worldPacket.FlushBits(); _worldPacket.WriteString(ServerTimeTZ); diff --git a/src/server/game/Server/Packets/TradePackets.h b/src/server/game/Server/Packets/TradePackets.h index 44fc6497b87..db4caa1135d 100644 --- a/src/server/game/Server/Packets/TradePackets.h +++ b/src/server/game/Server/Packets/TradePackets.h @@ -152,7 +152,6 @@ namespace WorldPackets struct UnwrappedTradeItem { - WorldPackets::Item::ItemInstance Item; int32 EnchantID = 0; int32 OnUseEnchantmentID = 0; ObjectGuid Creator; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 2fe22b2cc7e..a0752dac0ed 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5191,7 +5191,7 @@ SpellLogEffect& Spell::GetExecuteLogEffect(SpellEffectName effect) return _executeLogEffects.back(); } -void Spell::ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, uint32 powerType, uint32 points, float amplitude) +void Spell::ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, Powers powerType, uint32 points, float amplitude) { SpellLogEffectPowerDrainParams spellLogEffectPowerDrainParams; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 4364bcbdbf4..8a2253dd060 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -176,7 +176,7 @@ struct SpellLogEffectPowerDrainParams { ObjectGuid Victim; uint32 Points = 0; - uint32 PowerType = 0; + Powers PowerType = POWER_MANA; float Amplitude = 0; }; @@ -549,7 +549,7 @@ class TC_GAME_API Spell return *opt; } - void ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, uint32 powerType, uint32 points, float amplitude); + void ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, Powers powerType, uint32 points, float amplitude); void ExecuteLogEffectExtraAttacks(SpellEffectName effect, Unit* victim, uint32 numAttacks); void ExecuteLogEffectDurabilityDamage(SpellEffectName effect, Unit* victim, int32 itemId, int32 amount); void ExecuteLogEffectOpenLock(SpellEffectName effect, Object* obj); |