diff options
author | Shauren <shauren.trinity@gmail.com> | 2025-02-23 12:10:33 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2025-04-06 19:23:23 +0200 |
commit | 29e00190843888ca72eceeb9c1a9a6ba2de5b8ae (patch) | |
tree | e89f2664dacd03faccef823df89afdd0f6f624b1 | |
parent | 27e7a99106e7796057ca74cd4edfac28b09f6554 (diff) |
Core/Misc: Add a bunch of examples for 67418a1aeee9035234d304b5e9653b832488dd66
(cherry picked from commit 00223f3bee137f3b3f3a8e0ec33b634b4511cc0b)
# Conflicts:
# src/server/game/Entities/Player/Player.cpp
# src/server/game/Globals/ObjectMgr.cpp
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 7 | ||||
-rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/BattlePets/BattlePetMgr.cpp | 36 | ||||
-rw-r--r-- | src/server/game/BattlePets/BattlePetMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/CreatureGroups.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Loot/Loot.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Loot/LootMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 7 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_npc.cpp | 3 |
13 files changed, 36 insertions, 45 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 845cfbb3ef6..4215c577ae6 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -36,6 +36,7 @@ #include "Util.h" #include "WaypointDefines.h" #include "WaypointManager.h" +#include "advstd.h" #include <algorithm> #define TC_SAI_IS_BOOLEAN_VALID(e, value) \ @@ -2030,7 +2031,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) return false; } - if (std::ranges::none_of(InventoryTypesEquipable, [dbcItem](InventoryType inventoryType) { return inventoryType == dbcItem->InventoryType; })) + if (!advstd::ranges::contains(InventoryTypesEquipable, dbcItem->InventoryType)) { TC_LOG_ERROR("sql.sql", "SmartScript: SMART_ACTION_EQUIP uses item {} (slot {}) not equipable in a hand for creature {}, skipped.", itemEntry, slot, e.entryOrGuid); return false; diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 8d317892ec1..979ff16e7da 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -77,11 +77,8 @@ uint32 AchievementMgr::GetAchievementPoints() const std::vector<uint32> AchievementMgr::GetCompletedAchievementIds() const { - std::vector<uint32> achievementIds; - std::transform(_completedAchievements.begin(), _completedAchievements.end(), std::back_inserter(achievementIds), [](std::pair<uint32 const, CompletedAchievementData> const& achievement) - { - return achievement.first; - }); + std::vector<uint32> achievementIds(_completedAchievements.size()); + std::ranges::transform(_completedAchievements, achievementIds.begin(), Trinity::Containers::MapKey); return achievementIds; } diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 74308cd6b1e..29f11b82d59 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -910,10 +910,10 @@ void AuctionHouseObject::AddAuction(CharacterDatabaseTransaction trans, AuctionP if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = auction.Items[0]->GetItemModifiedAppearance()) { - auto itr = std::ranges::find(bucket->ItemModifiedAppearanceId, itemModifiedAppearance->ID, &std::pair<uint32, uint32>::first); + auto itr = std::ranges::find(bucket->ItemModifiedAppearanceId, itemModifiedAppearance->ID, Trinity::TupleElement<0>); if (itr == bucket->ItemModifiedAppearanceId.end()) - itr = std::ranges::find(bucket->ItemModifiedAppearanceId, 0u, &std::pair<uint32, uint32>::first); + itr = std::ranges::find(bucket->ItemModifiedAppearanceId, 0u, Trinity::TupleElement<0>); if (itr != bucket->ItemModifiedAppearanceId.end()) { diff --git a/src/server/game/BattlePets/BattlePetMgr.cpp b/src/server/game/BattlePets/BattlePetMgr.cpp index 16014538b23..ee53c8b879a 100644 --- a/src/server/game/BattlePets/BattlePetMgr.cpp +++ b/src/server/game/BattlePets/BattlePetMgr.cpp @@ -37,8 +37,8 @@ namespace BattlePets { namespace { -std::unordered_map<uint16 /*BreedID*/, std::unordered_map<BattlePetState /*state*/, int32 /*value*/, std::hash<std::underlying_type<BattlePetState>::type> >> _battlePetBreedStates; -std::unordered_map<uint32 /*SpeciesID*/, std::unordered_map<BattlePetState /*state*/, int32 /*value*/, std::hash<std::underlying_type<BattlePetState>::type> >> _battlePetSpeciesStates; +std::unordered_map<uint16 /*BreedID*/, std::unordered_map<BattlePetState /*state*/, int32 /*value*/>> _battlePetBreedStates; +std::unordered_map<uint32 /*SpeciesID*/, std::unordered_map<BattlePetState /*state*/, int32 /*value*/>> _battlePetSpeciesStates; std::unordered_map<uint32 /*CreatureID*/, BattlePetSpeciesEntry const*> _battlePetSpeciesByCreature; std::unordered_map<uint32 /*SpellID*/, BattlePetSpeciesEntry const*> _battlePetSpeciesBySpell; std::unordered_map<uint32 /*SpeciesID*/, std::unordered_set<uint8 /*breed*/>> _availableBreedsPerSpecies; @@ -47,18 +47,14 @@ std::unordered_map<uint32 /*SpeciesID*/, uint8 /*quality*/> _defaultQualityPerSp void BattlePet::CalculateStats() { - float health = 0.0f; - float power = 0.0f; - float speed = 0.0f; - // get base breed stats auto breedState = _battlePetBreedStates.find(PacketInfo.Breed); if (breedState == _battlePetBreedStates.end()) // non existing breed id return; - health = breedState->second[STATE_STAT_STAMINA]; - power = breedState->second[STATE_STAT_POWER]; - speed = breedState->second[STATE_STAT_SPEED]; + float health = breedState->second[STATE_STAT_STAMINA]; + float power = breedState->second[STATE_STAT_POWER]; + float speed = breedState->second[STATE_STAT_SPEED]; // modify stats depending on species - not all pets have this auto speciesState = _battlePetSpeciesStates.find(PacketInfo.Species); @@ -538,7 +534,7 @@ void BattlePetMgr::ModifyName(ObjectGuid guid, std::string const& name, std::uni summonedBattlePet->SetBattlePetCompanionNameTimestamp(pet->NameTimestamp); } -bool BattlePetMgr::IsPetInSlot(ObjectGuid guid) +bool BattlePetMgr::IsPetInSlot(ObjectGuid guid) const { for (WorldPackets::BattlePet::BattlePetSlot const& slot : _slots) if (slot.Pet.Guid == guid) @@ -549,21 +545,21 @@ bool BattlePetMgr::IsPetInSlot(ObjectGuid guid) uint8 BattlePetMgr::GetPetCount(BattlePetSpeciesEntry const* battlePetSpecies, ObjectGuid ownerGuid) const { - return uint8(std::count_if(_pets.begin(), _pets.end(), [battlePetSpecies, ownerGuid](std::pair<uint64 const, BattlePet> const& pet) + return uint8(std::ranges::count_if(_pets, [battlePetSpecies, ownerGuid](BattlePet const& pet) { - if (pet.second.PacketInfo.Species != battlePetSpecies->ID) + if (pet.PacketInfo.Species != battlePetSpecies->ID) return false; - if (pet.second.SaveInfo == BATTLE_PET_REMOVED) + if (pet.SaveInfo == BATTLE_PET_REMOVED) return false; if (battlePetSpecies->GetFlags().HasFlag(BattlePetSpeciesFlags::NotAccountWide)) - if (!ownerGuid.IsEmpty() && pet.second.PacketInfo.OwnerInfo) - if (pet.second.PacketInfo.OwnerInfo->Guid != ownerGuid) + if (!ownerGuid.IsEmpty() && pet.PacketInfo.OwnerInfo) + if (pet.PacketInfo.OwnerInfo->Guid != ownerGuid) return false; return true; - })); + }, Trinity::Containers::MapValue)); } bool BattlePetMgr::HasMaxPetCount(BattlePetSpeciesEntry const* battlePetSpecies, ObjectGuid ownerGuid) const @@ -576,10 +572,10 @@ bool BattlePetMgr::HasMaxPetCount(BattlePetSpeciesEntry const* battlePetSpecies, uint32 BattlePetMgr::GetPetUniqueSpeciesCount() const { std::set<uint32> speciesIds; - std::transform(_pets.begin(), _pets.end(), std::inserter(speciesIds, speciesIds.end()), [](std::pair<uint64 const, BattlePet> const& pet) + std::ranges::transform(_pets, std::inserter(speciesIds, speciesIds.end()), [](BattlePet const& pet) { - return pet.second.PacketInfo.Species; - }); + return pet.PacketInfo.Species; + }, Trinity::Containers::MapValue); return speciesIds.size(); } @@ -889,7 +885,7 @@ void BattlePetMgr::SendJournal() battlePetJournal.Pets.push_back(std::ref(pet.second.PacketInfo)); battlePetJournal.Slots.reserve(_slots.size()); - std::transform(_slots.begin(), _slots.end(), std::back_inserter(battlePetJournal.Slots), [](WorldPackets::BattlePet::BattlePetSlot& slot) { return std::ref(slot); }); + std::ranges::transform(_slots, std::back_inserter(battlePetJournal.Slots), [](WorldPackets::BattlePet::BattlePetSlot& slot) { return std::ref(slot); }); _owner->SendPacket(battlePetJournal.Write()); } diff --git a/src/server/game/BattlePets/BattlePetMgr.h b/src/server/game/BattlePets/BattlePetMgr.h index 781adb0788c..5d4378c07ed 100644 --- a/src/server/game/BattlePets/BattlePetMgr.h +++ b/src/server/game/BattlePets/BattlePetMgr.h @@ -167,7 +167,7 @@ public: void RemovePet(ObjectGuid guid); void ClearFanfare(ObjectGuid guid); void ModifyName(ObjectGuid guid, std::string const& name, std::unique_ptr<DeclinedName> declinedName); - bool IsPetInSlot(ObjectGuid guid); + bool IsPetInSlot(ObjectGuid guid) const; uint8 GetPetCount(BattlePetSpeciesEntry const* battlePetSpecies, ObjectGuid ownerGuid) const; bool HasMaxPetCount(BattlePetSpeciesEntry const* battlePetSpecies, ObjectGuid ownerGuid) const; diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index ccdc27ef11f..705b5252718 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -2102,7 +2102,8 @@ MapDifficultyEntry const* DB2Manager::GetDefaultMapDifficulty(uint32 mapId, Diff // first find any valid difficulty auto foundDifficulty = std::ranges::find_if(difficultiesForMap->begin(), difficultyEnd, - [](std::pair<uint32 const, MapDifficultyEntry const*> const& p) { return sDifficultyStore.HasRecord(p.first); }); + [](uint32 difficultyId) { return sDifficultyStore.HasRecord(difficultyId); }, + Trinity::Containers::MapKey); if (foundDifficulty == difficultyEnd) return nullptr; // nothing valid was found diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp index 97e64340f3c..628535e0033 100644 --- a/src/server/game/Entities/Creature/CreatureGroups.cpp +++ b/src/server/game/Entities/Creature/CreatureGroups.cpp @@ -312,7 +312,7 @@ bool CreatureGroup::CanLeaderStartMoving() const bool CreatureGroup::HasAliveMembers() const { - return std::ranges::any_of(_members, [](Creature const* member) { return member->IsAlive(); }, &MembersMap::value_type::first); + return std::ranges::any_of(_members, [](Creature const* member) { return member->IsAlive(); }, Trinity::Containers::MapKey); } bool CreatureGroup::LeaderHasStringId(std::string_view id) const diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 65f77b98da9..b06e1eb5d1f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3042,7 +3042,7 @@ void Player::RemoveSpell(uint32 spell_id, bool disabled /*= false*/, bool learn_ if (!learnNode->Active) return false; return HasSpell(learnNode->SourceSpell); - }, &SpellLearnedBySpellMap::value_type::second); + }, Trinity::Containers::MapValue); if (hasOtherSpellTeachingThis) continue; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 62a812b90a3..0a33363f2b8 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -70,6 +70,7 @@ #include "VMapManager2.h" #include "Vehicle.h" #include "World.h" +#include "advstd.h" #include <G3D/g3dmath.h> #include <limits> #include <numeric> @@ -1549,7 +1550,7 @@ void ObjectMgr::LoadEquipmentTemplates() continue; } - if (std::ranges::none_of(InventoryTypesEquipable, [dbcItem](InventoryType inventoryType) { return inventoryType == dbcItem->InventoryType; })) + if (!advstd::ranges::contains(InventoryTypesEquipable, dbcItem->InventoryType)) { TC_LOG_ERROR("sql.sql", "Item (ID={}) in creature_equip_template.ItemID{} for CreatureID = {} and ID = {} is not equipable in a hand, forced to 0.", equipmentInfo.Items[i].ItemId, i + 1, entry, id); diff --git a/src/server/game/Loot/Loot.cpp b/src/server/game/Loot/Loot.cpp index b1185cb459a..37012bc23f7 100644 --- a/src/server/game/Loot/Loot.cpp +++ b/src/server/game/Loot/Loot.cpp @@ -216,10 +216,7 @@ Optional<LootSlotType> LootItem::GetUiTypeForPlayer(Player const* player, Loot c { if (NotNormalLootItemList const* ffaItems = Trinity::Containers::MapGetValuePtr(loot.GetPlayerFFAItems(), player->GetGUID())) { - auto ffaItemItr = std::ranges::find_if(*ffaItems, [&](NotNormalLootItem const& ffaItem) - { - return ffaItem.LootListId == LootListId; - }); + auto ffaItemItr = std::ranges::find(*ffaItems, LootListId, &NotNormalLootItem::LootListId); if (ffaItemItr != ffaItems->end() && !ffaItemItr->is_looted) return loot.GetLootMethod() == FREE_FOR_ALL ? LOOT_SLOT_TYPE_OWNER : LOOT_SLOT_TYPE_ALLOW_LOOT; } @@ -1092,7 +1089,7 @@ bool Loot::hasItemFor(Player const* player) const return true; if (NotNormalLootItemList const* ffaItems = Trinity::Containers::MapGetValuePtr(GetPlayerFFAItems(), player->GetGUID())) - if (std::ranges::any_of(*ffaItems, std::identity(), &NotNormalLootItem::is_looted)) + if (std::ranges::any_of(*ffaItems, &NotNormalLootItem::is_looted)) return true; return false; diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index d8af2922175..56ca47db058 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -213,7 +213,7 @@ uint32 LootStore::LoadAndCollectLootIds(LootIdSet& lootIdSet) { uint32 count = LoadLootTable(); - std::ranges::transform(m_LootTemplates, std::inserter(lootIdSet, lootIdSet.end()), &LootTemplateMap::value_type::first); + std::ranges::transform(m_LootTemplates, std::inserter(lootIdSet, lootIdSet.end()), Trinity::Containers::MapKey); return count; } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 9559d37ccec..e962659526e 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -9303,10 +9303,7 @@ void SelectRandomInjuredTargets(std::list<WorldObject*>& targets, size_t maxTarg return std::make_pair(target, negativePoints); }); - std::sort(tempTargets.begin(), tempTargets.end(), [](std::pair<WorldObject*, int32> const& left, std::pair<WorldObject*, int32> const& right) - { - return left.second < right.second; - }); + std::ranges::sort(tempTargets, {}, Trinity::TupleElement<1>); std::size_t foundTargets = 0; for (std::ptrdiff_t countForPriority : countsByPriority) @@ -9324,7 +9321,7 @@ void SelectRandomInjuredTargets(std::list<WorldObject*>& targets, size_t maxTarg } targets.resize(maxTargets); - std::transform(tempTargets.begin(), tempTargets.begin() + maxTargets, targets.begin(), std::mem_fn(&std::pair<WorldObject*, int32>::first)); + std::ranges::transform(tempTargets.begin(), tempTargets.begin() + maxTargets, targets.begin(), Trinity::TupleElement<0>); } } //namespace Trinity diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index ea62d0ca55b..1d705c675df 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -35,6 +35,7 @@ EndScriptData */ #include "Language.h" #include "Loot.h" #include "Map.h" +#include "MapUtils.h" #include "MotionMaster.h" #include "MovementDefines.h" #include "ObjectAccessor.h" @@ -1313,7 +1314,7 @@ public: Loot const* loot = creatureTarget->m_loot.get(); if ((!loot || loot->isLooted()) - && !std::ranges::count_if(creatureTarget->m_personalLoot, std::not_fn(&Loot::isLooted), &std::unordered_map<ObjectGuid, std::unique_ptr<Loot>>::value_type::second)) + && !std::ranges::count_if(creatureTarget->m_personalLoot, std::not_fn(&Loot::isLooted), Trinity::Containers::MapValue)) { handler->PSendSysMessage(LANG_COMMAND_NOT_DEAD_OR_NO_LOOT, creatureTarget->GetName().c_str()); handler->SetSentErrorMessage(true); |