aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-17 21:25:10 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-17 21:25:10 +0200
commit26d757946f4e26397930e2d8733c0b1c7f76d0a6 (patch)
treea1977ad322527994f390f1641a4a6ce4652c289b /src
parentcb99b08b86f8773563276bf16ccc2210003b056b (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.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Entities/Player/Player.h38
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