diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-08-17 12:40:27 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-08-17 12:40:27 +0200 |
commit | edb20999a3b414ebe1b89410f08f2434e8da1cdb (patch) | |
tree | b12ed325f926bd7a98bd6a4e819c1a5ba6ae933b /src/server/game/Globals/ObjectMgr.cpp | |
parent | 1f952893fc82bc677058737f77de710c426c60ee (diff) |
Core/Utils: Unwrap non-copyable pointers (unique_ptr) from Trinity::Containers::MapGetValuePtr
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 673a1678fe0..4ad5aabf6d9 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3706,18 +3706,18 @@ PetLevelInfo const* ObjectMgr::GetPetLevelInfo(uint32 creature_id, uint8 level) void ObjectMgr::PlayerCreateInfoAddItemHelper(uint32 race_, uint32 class_, uint32 itemId, int32 count) { - std::unique_ptr<PlayerInfo>* playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race_), Classes(class_) }); + PlayerInfo* playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race_), Classes(class_) }); if (!playerInfo) return; if (count > 0) - playerInfo->get()->item.emplace_back(itemId, count); + playerInfo->item.emplace_back(itemId, count); else { if (count < -1) TC_LOG_ERROR("sql.sql", "Invalid count {} specified on item {} be removed from original player create info (use -1)!", count, itemId); - PlayerCreateInfoItems& items = playerInfo->get()->item; + PlayerCreateInfoItems& items = playerInfo->item; auto erased = std::remove_if(items.begin(), items.end(), [itemId](PlayerCreateInfoItem const& item) { return item.item_id == itemId; }); if (erased == items.end()) @@ -3886,7 +3886,7 @@ void ObjectMgr::LoadPlayerInfo() if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(characterLoadout->ChrClassID) })) { - playerInfo->get()->itemContext = ItemContext(characterLoadout->ItemContext); + playerInfo->itemContext = ItemContext(characterLoadout->ItemContext); for (ItemTemplate const* itemTemplate : *items) { @@ -3912,7 +3912,7 @@ void ObjectMgr::LoadPlayerInfo() count = itemTemplate->GetMaxStackSize(); } - playerInfo->get()->item.emplace_back(itemTemplate->GetId(), count); + playerInfo->item.emplace_back(itemTemplate->GetId(), count); } } } @@ -4000,7 +4000,7 @@ void ObjectMgr::LoadPlayerInfo() for (uint32 classIndex = CLASS_WARRIOR; classIndex < MAX_CLASSES; ++classIndex) if (rcInfo->ClassMask == -1 || rcInfo->ClassMask == 0 || ((1 << (classIndex - 1)) & rcInfo->ClassMask)) if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(classIndex) })) - playerInfo->get()->skills.push_back(rcInfo); + playerInfo->skills.push_back(rcInfo); TC_LOG_INFO("server.loading", ">> Loaded player create skills in {} ms", GetMSTimeDiffToNow(oldMSTime)); } @@ -4049,7 +4049,7 @@ void ObjectMgr::LoadPlayerInfo() { if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(classIndex) })) { - playerInfo->get()->customSpells.push_back(spellId); + playerInfo->customSpells.push_back(spellId); ++count; } // We need something better here, the check is not accounting for spells used by multiple races/classes but not all of them. @@ -4116,7 +4116,7 @@ void ObjectMgr::LoadPlayerInfo() { if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(raceIndex), Classes(classIndex) })) { - playerInfo->get()->castSpells[playerCreateMode].push_back(spellId); + playerInfo->castSpells[playerCreateMode].push_back(spellId); ++count; } } @@ -4164,7 +4164,7 @@ void ObjectMgr::LoadPlayerInfo() } if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(current_race), Classes(current_class) })) - playerInfo->get()->action.push_back(PlayerCreateInfoAction(fields[2].GetUInt16(), fields[3].GetUInt32(), fields[4].GetUInt16())); + playerInfo->action.push_back(PlayerCreateInfoAction(fields[2].GetUInt16(), fields[3].GetUInt32(), fields[4].GetUInt16())); ++count; } @@ -4247,10 +4247,10 @@ void ObjectMgr::LoadPlayerInfo() { if (auto const& playerInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(current_class) })) { - if (!playerInfo->get()->levelInfo) - playerInfo->get()->levelInfo = std::make_unique<PlayerLevelInfo[]>(sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); + if (!playerInfo->levelInfo) + playerInfo->levelInfo = std::make_unique<PlayerLevelInfo[]>(sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)); - PlayerLevelInfo& levelInfo = playerInfo->get()->levelInfo[current_level - 1]; + PlayerLevelInfo& levelInfo = playerInfo->levelInfo[current_level - 1]; for (uint8 i = 0; i < MAX_STATS; ++i) levelInfo.stats[i] = fields[i + 2].GetUInt16() + raceStatModifiers[race].StatModifier[i]; } @@ -4299,7 +4299,7 @@ void ObjectMgr::LoadPlayerInfo() continue; // fatal error if no level 1 data - if (!playerInfo->get()->levelInfo || playerInfo->get()->levelInfo[0].stats[0] == 0) + if (!playerInfo->levelInfo || playerInfo->levelInfo[0].stats[0] == 0) { TC_LOG_ERROR("sql.sql", "Race {} Class {} Level 1 does not have stats data!", race, class_); ABORT(); @@ -4308,10 +4308,10 @@ void ObjectMgr::LoadPlayerInfo() // fill level gaps for (uint8 level = 1; level < sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL); ++level) { - if (playerInfo->get()->levelInfo[level].stats[0] == 0) + if (playerInfo->levelInfo[level].stats[0] == 0) { TC_LOG_ERROR("sql.sql", "Race {} Class {} Level {} does not have stats data. Using stats data of level {}.", race, class_, level + 1, level); - playerInfo->get()->levelInfo[level] = playerInfo->get()->levelInfo[level - 1]; + playerInfo->levelInfo[level] = playerInfo->levelInfo[level - 1]; } } } @@ -4400,12 +4400,12 @@ void ObjectMgr::GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, Play if (level < 1 || race >= MAX_RACES || class_ >= MAX_CLASSES) return; - auto const& pInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(class_) }); + PlayerInfo const* pInfo = Trinity::Containers::MapGetValuePtr(_playerInfo, {Races(race), Classes(class_)}); if (!pInfo) return; if (level <= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL)) - *info = pInfo->get()->levelInfo[level - 1]; + *info = pInfo->levelInfo[level - 1]; else BuildPlayerLevelInfo(race, class_, level, info); } @@ -4413,7 +4413,7 @@ void ObjectMgr::GetPlayerLevelInfo(uint32 race, uint32 class_, uint8 level, Play void ObjectMgr::BuildPlayerLevelInfo(uint8 race, uint8 _class, uint8 level, PlayerLevelInfo* info) const { // base data (last known level) - *info = ASSERT_NOTNULL(Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(_class) }))->get()->levelInfo[sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) - 1]; + *info = ASSERT_NOTNULL(Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(_class) }))->levelInfo[sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) - 1]; // if conversion from uint32 to uint8 causes unexpected behaviour, change lvl to uint32 for (uint8 lvl = sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) - 1; lvl < level; ++lvl) @@ -10620,10 +10620,7 @@ PlayerInfo const* ObjectMgr::GetPlayerInfo(uint32 race, uint32 class_) const return nullptr; if (class_ >= MAX_CLASSES) return nullptr; - auto const& info = Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(class_) }); - if (!info) - return nullptr; - return info->get(); + return Trinity::Containers::MapGetValuePtr(_playerInfo, { Races(race), Classes(class_) }); } void ObjectMgr::LoadRaceAndClassExpansionRequirements() |