diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-07-17 21:25:10 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-07-17 21:25:10 +0200 |
commit | 26d757946f4e26397930e2d8733c0b1c7f76d0a6 (patch) | |
tree | a1977ad322527994f390f1641a4a6ce4652c289b /src | |
parent | cb99b08b86f8773563276bf16ccc2210003b056b (diff) |
Core/Players: Cleaned some old updatefield definitions and updated values for completed quests size
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateField.h | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 38 |
3 files changed, 16 insertions, 29 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateField.h b/src/server/game/Entities/Object/Updates/UpdateField.h index 9ad32f62d78..9c2eebb82af 100644 --- a/src/server/game/Entities/Object/Updates/UpdateField.h +++ b/src/server/game/Entities/Object/Updates/UpdateField.h @@ -726,7 +726,7 @@ namespace UF { }; - template<typename T, std::size_t Size> + template<typename T, std::size_t Size_> class UpdateFieldArrayBase : public UpdateFieldArrayBaseWithoutSize<T> { template<typename F, bool PublicSet> @@ -740,6 +740,7 @@ namespace UF public: using value_type = T; + static constexpr std::size_t Size = Size_; T const* begin() const { diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 96f375f3590..974c8cc21d8 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16291,11 +16291,11 @@ void Player::SetQuestCompletedBit(uint32 questBit, bool completed) if (!questBit) return; - uint32 fieldOffset = (questBit - 1) >> 6; + uint32 fieldOffset = (questBit - 1) / QUESTS_COMPLETED_BITS_PER_BLOCK; if (fieldOffset >= QUESTS_COMPLETED_BITS_SIZE) return; - uint64 flag = UI64LIT(1) << ((questBit - 1) & 63); + uint64 flag = UI64LIT(1) << ((questBit - 1) % QUESTS_COMPLETED_BITS_PER_BLOCK); if (completed) SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::QuestCompleted, fieldOffset), flag); else diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 228af299a99..d0b57e446ae 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -122,28 +122,14 @@ TC_GAME_API Item* GetItemInBag(Bag const* bag, uint8 slot); typedef std::deque<Mail*> PlayerMails; -#define PLAYER_MAX_SKILLS 256 - -template<typename SkillArrayType> -constexpr std::size_t CalculateSkillFieldArraySize() -{ - return PLAYER_MAX_SKILLS / sizeof(uint32) * sizeof(SkillArrayType); -} - -enum SkillFieldOffset : uint16 +enum PlayerSkillsConstants { - SKILL_ID_OFFSET = 0, - SKILL_STEP_OFFSET = SKILL_ID_OFFSET + CalculateSkillFieldArraySize<uint16>(), - SKILL_RANK_OFFSET = SKILL_STEP_OFFSET + CalculateSkillFieldArraySize<uint16>(), - SUBSKILL_START_RANK_OFFSET = SKILL_RANK_OFFSET + CalculateSkillFieldArraySize<uint16>(), - SKILL_MAX_RANK_OFFSET = SUBSKILL_START_RANK_OFFSET + CalculateSkillFieldArraySize<uint16>(), - SKILL_TEMP_BONUS_OFFSET = SKILL_MAX_RANK_OFFSET + CalculateSkillFieldArraySize<uint16>(), - SKILL_PERM_BONUS_OFFSET = SKILL_TEMP_BONUS_OFFSET + CalculateSkillFieldArraySize<uint16>() + PLAYER_MAX_SKILLS = decltype(UF::SkillInfo::SkillLineID)::Size }; enum PlayerExplorationConstants { - PLAYER_EXPLORED_ZONES_SIZE = decltype(UF::ActivePlayerData::ExploredZones){}.size(), + PLAYER_EXPLORED_ZONES_SIZE = decltype(UF::ActivePlayerData::ExploredZones)::Size, PLAYER_EXPLORED_ZONES_BITS = sizeof(decltype(UF::ActivePlayerData::ExploredZones)::value_type) * 8 }; @@ -598,18 +584,16 @@ enum QuestSaveType typedef std::map<uint32, QuestSaveType> QuestStatusSaveMap; // Size of client completed quests bit map -#define QUESTS_COMPLETED_BITS_SIZE 1750 - -enum QuestSlotOffsets +enum PlayerQuestCompletedConstants { - QUEST_ID_OFFSET = 0, - QUEST_STATE_OFFSET = 1, - QUEST_COUNTS_OFFSET = 2, - QUEST_TIME_OFFSET = 14 + QUESTS_COMPLETED_BITS_SIZE = decltype(UF::ActivePlayerData::QuestCompleted)::Size, + QUESTS_COMPLETED_BITS_PER_BLOCK = sizeof(decltype(UF::ActivePlayerData::QuestCompleted)::value_type) * 8 }; -#define MAX_QUEST_COUNTS 24 -#define MAX_QUEST_OFFSET 16 +enum PlayerQuestLogConstants +{ + MAX_QUEST_COUNTS = decltype(UF::QuestLog::ObjectiveProgress)::Size +}; enum QuestSlotStateMask { @@ -651,6 +635,8 @@ enum PlayerSlots PLAYER_SLOTS_COUNT = (PLAYER_SLOT_END - PLAYER_SLOT_START) }; +static_assert(decltype(UF::ActivePlayerData::InvSlots)::Size == PLAYER_SLOT_END); + #define INVENTORY_SLOT_BAG_0 255 #define INVENTORY_DEFAULT_SIZE 16 |