aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2013-01-02 09:07:52 +0100
committerSpp <spp@jorge.gr>2013-01-02 09:07:52 +0100
commit2292025bf9ccd78c004027f2e0621473ced82b22 (patch)
tree077a93d879c3e8740c72df1830c9ad7fca36bf88 /src
parentc85dc26584decad8e4b8d1cb5a05bdb899a56e63 (diff)
Core/Misc: Replaced some macro definitions with inline functions
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp16
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp4
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp2
-rw-r--r--src/server/game/Entities/Object/ObjectDefines.h231
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp2
-rw-r--r--src/server/shared/Utilities/Util.h9
6 files changed, 194 insertions, 70 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 3b57f02bf7c..2550f909a8b 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -51,7 +51,7 @@ void LFGMgr::_LoadFromDB(Field* fields, uint64 guid)
if (!fields)
return;
- if (!IS_GROUP(guid))
+ if (!IS_GROUP_GUID(guid))
return;
SetLeader(guid, MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER));
@@ -77,7 +77,7 @@ void LFGMgr::_LoadFromDB(Field* fields, uint64 guid)
void LFGMgr::_SaveToDB(uint64 guid, uint32 db_guid)
{
- if (!IS_GROUP(guid))
+ if (!IS_GROUP_GUID(guid))
return;
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_LFG_DATA);
@@ -758,7 +758,7 @@ void LFGMgr::LeaveLfg(uint64 guid)
{
sLog->outDebug(LOG_FILTER_LFG, "LFGMgr::LeaveLfg: [" UI64FMTD "]", guid);
- uint64 gguid = IS_GROUP(guid) ? guid : GetGroup(guid);
+ uint64 gguid = IS_GROUP_GUID(guid) ? guid : GetGroup(guid);
LfgState state = GetState(guid);
switch (state)
{
@@ -1624,7 +1624,7 @@ LfgType LFGMgr::GetDungeonType(uint32 dungeonId)
LfgState LFGMgr::GetState(uint64 guid)
{
LfgState state;
- if (IS_GROUP(guid))
+ if (IS_GROUP_GUID(guid))
state = GroupsStore[guid].GetState();
else
state = PlayersStore[guid].GetState();
@@ -1696,7 +1696,7 @@ uint8 LFGMgr::GetKicksLeft(uint64 guid)
void LFGMgr::RestoreState(uint64 guid, char const *debugMsg)
{
- if (IS_GROUP(guid))
+ if (IS_GROUP_GUID(guid))
{
LfgGroupData& data = GroupsStore[guid];
if (sLog->ShouldLog(LOG_FILTER_LFG, LOG_LEVEL_DEBUG))
@@ -1725,7 +1725,7 @@ void LFGMgr::RestoreState(uint64 guid, char const *debugMsg)
void LFGMgr::SetState(uint64 guid, LfgState state)
{
- if (IS_GROUP(guid))
+ if (IS_GROUP_GUID(guid))
{
LfgGroupData& data = GroupsStore[guid];
if (sLog->ShouldLog(LOG_FILTER_LFG, LOG_LEVEL_DEBUG))
@@ -1932,13 +1932,13 @@ void LFGMgr::SendLfgQueueStatus(uint64 guid, LfgQueueStatusData const& data)
bool LFGMgr::IsLfgGroup(uint64 guid)
{
- return guid && IS_GROUP(guid) && GroupsStore[guid].IsLfgGroup();
+ return guid && IS_GROUP_GUID(guid) && GroupsStore[guid].IsLfgGroup();
}
LFGQueue& LFGMgr::GetQueue(uint64 guid)
{
uint8 queueId = 0;
- if (IS_GROUP(guid))
+ if (IS_GROUP_GUID(guid))
{
const LfgGuidSet& players = GetPlayers(guid);
uint64 pguid = players.empty() ? 0 : (*players.begin());
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index 81c9705704d..dae789b2eb4 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -358,7 +358,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
// Store group so we don't need to call Mgr to get it later (if it's player group will be 0 otherwise would have joined as group)
for (LfgRolesMap::const_iterator it2 = itQueue->second.roles.begin(); it2 != itQueue->second.roles.end(); ++it2)
- proposalGroups[it2->first] = IS_GROUP(itQueue->first) ? itQueue->first : 0;
+ proposalGroups[it2->first] = IS_GROUP_GUID(itQueue->first) ? itQueue->first : 0;
numPlayers += itQueue->second.roles.size();
@@ -601,7 +601,7 @@ std::string LFGQueue::DumpQueueInfo() const
for (LfgGuidList::const_iterator it = queue.begin(); it != queue.end(); ++it)
{
uint64 guid = *it;
- if (IS_GROUP(guid))
+ if (IS_GROUP_GUID(guid))
{
groups++;
playersInGroup += sLFGMgr->GetPlayerCount(guid);
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index bab2eaa4186..508147cec9f 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -270,7 +270,7 @@ void GameObject::Update(uint32 diff)
} else
AI()->UpdateAI(diff);
- if (IS_MO_TRANSPORT(GetGUID()))
+ if (IS_MO_TRANSPORT_GUID(GetGUID()))
{
//((Transport*)this)->Update(p_time);
return;
diff --git a/src/server/game/Entities/Object/ObjectDefines.h b/src/server/game/Entities/Object/ObjectDefines.h
index c9ee1cd2dc6..647386e0f75 100644
--- a/src/server/game/Entities/Object/ObjectDefines.h
+++ b/src/server/game/Entities/Object/ObjectDefines.h
@@ -21,64 +21,195 @@
#include "Define.h"
-// used for creating values for respawn for example
-#define MAKE_PAIR64(l, h) uint64(uint32(l) | (uint64(h) << 32))
-#define PAIR64_HIPART(x) (uint32)((uint64(x) >> 32) & UI64LIT(0x00000000FFFFFFFF))
-#define PAIR64_LOPART(x) (uint32)(uint64(x) & UI64LIT(0x00000000FFFFFFFF))
-
-#define MAKE_PAIR16(l, h) uint16(uint8(l) | (uint16(h) << 8))
-#define MAKE_PAIR32(l, h) uint32(uint16(l) | (uint32(h) << 16))
-#define PAIR32_HIPART(x) (uint16)((uint32(x) >> 16) & 0x0000FFFF)
-#define PAIR32_LOPART(x) (uint16)(uint32(x) & 0x0000FFFF)
-
enum HighGuid
{
- HIGHGUID_ITEM = 0x4000, // blizz 4000
- HIGHGUID_CONTAINER = 0x4000, // blizz 4000
- HIGHGUID_PLAYER = 0x0000, // blizz 0000
- HIGHGUID_GAMEOBJECT = 0xF110, // blizz F110
- HIGHGUID_TRANSPORT = 0xF120, // blizz F120 (for GAMEOBJECT_TYPE_TRANSPORT)
- HIGHGUID_UNIT = 0xF130, // blizz F130
- HIGHGUID_PET = 0xF140, // blizz F140
- HIGHGUID_VEHICLE = 0xF150, // blizz F550
- HIGHGUID_DYNAMICOBJECT = 0xF100, // blizz F100
- HIGHGUID_CORPSE = 0xF101, // blizz F100
- HIGHGUID_MO_TRANSPORT = 0x1FC0, // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
- HIGHGUID_GROUP = 0x1F50
+ HIGHGUID_ITEM = 0x400, // blizz 4000
+ HIGHGUID_CONTAINER = 0x400, // blizz 4000
+ HIGHGUID_PLAYER = 0x000, // blizz 0000
+ HIGHGUID_GAMEOBJECT = 0xF11, // blizz F110
+ HIGHGUID_TRANSPORT = 0xF12, // blizz F120 (for GAMEOBJECT_TYPE_TRANSPORT)
+ HIGHGUID_UNIT = 0xF13, // blizz F130
+ HIGHGUID_PET = 0xF14, // blizz F140
+ HIGHGUID_VEHICLE = 0xF15, // blizz F550
+ HIGHGUID_DYNAMICOBJECT = 0xF10, // blizz F100
+ HIGHGUID_CORPSE = 0xF101, // blizz F100
+ HIGHGUID_MO_TRANSPORT = 0x1FC, // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
+ HIGHGUID_GROUP = 0x1F5
};
-#define IS_EMPTY_GUID(Guid) (Guid == 0)
-
-#define IS_CREATURE_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_UNIT)
-#define IS_PET_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_PET)
-#define IS_VEHICLE_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_VEHICLE)
-#define IS_CRE_OR_VEH_GUID(Guid) (IS_CREATURE_GUID(Guid) || IS_VEHICLE_GUID(Guid))
-#define IS_CRE_OR_VEH_OR_PET_GUID(Guid)(IS_CRE_OR_VEH_GUID(Guid) || IS_PET_GUID(Guid))
-#define IS_PLAYER_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_PLAYER && Guid != 0)
-#define IS_UNIT_GUID(Guid) (IS_CRE_OR_VEH_OR_PET_GUID(Guid) || IS_PLAYER_GUID(Guid))
- // special case for empty guid need check
-#define IS_ITEM_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_ITEM)
-#define IS_GAMEOBJECT_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_GAMEOBJECT)
-#define IS_DYNAMICOBJECT_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_DYNAMICOBJECT)
-#define IS_CORPSE_GUID(Guid) (GUID_HIPART(Guid) == HIGHGUID_CORPSE)
-#define IS_TRANSPORT(Guid) (GUID_HIPART(Guid) == HIGHGUID_TRANSPORT)
-#define IS_MO_TRANSPORT(Guid) (GUID_HIPART(Guid) == HIGHGUID_MO_TRANSPORT)
-#define IS_GROUP(Guid) (GUID_HIPART(Guid) == HIGHGUID_GROUP)
+// used for creating values for respawn for example
+inline uint64 MAKE_PAIR64(uint32 l, uint32 h);
+inline uint32 PAIR64_HIPART(uint64 x);
+inline uint32 PAIR64_LOPART(uint64 x);
+inline uint16 MAKE_PAIR16(uint8 l, uint8 h);
+inline uint32 MAKE_PAIR32(uint16 l, uint16 h);
+inline uint16 PAIR32_HIPART(uint32 x);
+inline uint16 PAIR32_LOPART(uint32 x);
+
+inline bool IS_EMPTY_GUID(uint64 guid);
+inline bool IS_CREATURE_GUID(uint64 guid);
+inline bool IS_PET_GUID(uint64 guid);
+inline bool IS_VEHICLE_GUID(uint64 guid);
+inline bool IS_CRE_OR_VEH_GUID(uint64 guid);
+inline bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid);
+inline bool IS_PLAYER_GUID(uint64 guid);
+inline bool IS_UNIT_GUID(uint64 guid);
+inline bool IS_ITEM_GUID(uint64 guid);
+inline bool IS_GAMEOBJECT_GUID(uint64 guid);
+inline bool IS_DYNAMICOBJECT_GUID(uint64 guid);
+inline bool IS_CORPSE_GUID(uint64 guid);
+inline bool IS_TRANSPORT_GUID(uint64 guid);
+inline bool IS_MO_TRANSPORT_GUID(uint64 guid);
+inline bool IS_GROUP_GUID(uint64 guid);
// l - OBJECT_FIELD_GUID
// e - OBJECT_FIELD_ENTRY for GO (except GAMEOBJECT_TYPE_MO_TRANSPORT) and creatures or UNIT_FIELD_PETNUMBER for pets
// h - OBJECT_FIELD_GUID + 1
-#define MAKE_NEW_GUID(l, e, h) uint64(uint64(l) | (uint64(e) << 24) | (uint64(h) << 48))
+inline uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h);
+
+//#define GUID_HIPART(x) (uint32)((uint64(x) >> 52)) & 0x0000FFFF)
+inline uint32 GUID_HIPART(uint64 guid);
+inline uint32 GUID_ENPART(uint64 x);
+inline uint32 GUID_LOPART(uint64 x);
+
+inline bool IsGuidHaveEnPart(uint64 guid);
+inline char const* GetLogNameForGuid(uint64 guid);
+
+uint64 MAKE_PAIR64(uint32 l, uint32 h)
+{
+ return uint64(l | (uint64(h) << 32));
+}
+
+uint32 PAIR64_HIPART(uint64 x)
+{
+ return (uint32)((x >> 32) & UI64LIT(0x00000000FFFFFFFF));
+}
-#define GUID_HIPART(x) (uint32)((uint64(x) >> 48) & 0x0000FFFF)
+uint32 PAIR64_LOPART(uint64 x)
+{
+ return (uint32)(x & UI64LIT(0x00000000FFFFFFFF));
+}
-// We have different low and middle part size for different guid types
-#define _GUID_ENPART_2(x) 0
-#define _GUID_ENPART_3(x) (uint32)((uint64(x) >> 24) & UI64LIT(0x0000000000FFFFFF))
-#define _GUID_LOPART_2(x) (uint32)(uint64(x) & UI64LIT(0x00000000FFFFFFFF))
-#define _GUID_LOPART_3(x) (uint32)(uint64(x) & UI64LIT(0x0000000000FFFFFF))
+uint16 MAKE_PAIR16(uint8 l, uint8 h)
+{
+ return uint16(l | (uint16(h) << 8));
+}
-inline bool IsGuidHaveEnPart(uint64 guid)
+uint32 MAKE_PAIR32(uint16 l, uint16 h)
+{
+ return uint32(l | (uint32(h) << 16));
+}
+
+uint16 PAIR32_HIPART(uint32 x)
+{
+ return (uint16)((x >> 16) & 0x0000FFFF);
+}
+
+uint16 PAIR32_LOPART(uint32 x)
+{
+ return (uint16)(x & 0x0000FFFF);
+}
+
+bool IS_EMPTY_GUID(uint64 guid)
+{
+ return guid == 0;
+}
+
+bool IS_CREATURE_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_UNIT;
+}
+
+bool IS_PET_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_PET;
+}
+
+bool IS_VEHICLE_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_VEHICLE;
+}
+
+bool IS_CRE_OR_VEH_GUID(uint64 guid)
+{
+ return IS_CREATURE_GUID(guid) || IS_VEHICLE_GUID(guid);
+}
+
+bool IS_CRE_OR_VEH_OR_PET_GUID(uint64 guid)
+{
+ return IS_CRE_OR_VEH_GUID(guid) || IS_PET_GUID(guid);
+}
+
+bool IS_PLAYER_GUID(uint64 guid)
+{
+ return guid != 0 && GUID_HIPART(guid) == HIGHGUID_PLAYER;
+}
+
+bool IS_UNIT_GUID(uint64 guid)
+{
+ return IS_CRE_OR_VEH_OR_PET_GUID(guid) || IS_PLAYER_GUID(guid);
+}
+
+bool IS_ITEM_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_ITEM;
+}
+
+bool IS_GAMEOBJECT_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_GAMEOBJECT;
+}
+
+bool IS_DYNAMICOBJECT_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_DYNAMICOBJECT;
+}
+
+bool IS_CORPSE_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_CORPSE;
+}
+
+bool IS_TRANSPORT_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_TRANSPORT;
+}
+
+bool IS_MO_TRANSPORT_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_MO_TRANSPORT;
+}
+
+bool IS_GROUP_GUID(uint64 guid)
+{
+ return GUID_HIPART(guid) == HIGHGUID_GROUP;
+}
+
+uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
+{
+ return uint64(uint64(l) | (uint64(e) << 32) | (uint64(h) << (h == HIGHGUID_CORPSE) ? 48 : 52));
+}
+
+uint32 GUID_HIPART(uint64 guid)
+{
+ uint32 t = ((uint64(guid) >> 48) & 0x0000FFFF);
+ return (t == HIGHGUID_CORPSE) ? t : ((t >> 4) & 0x00000FFF);
+}
+
+uint32 GUID_ENPART(uint64 x)
+{
+ return IsGuidHaveEnPart(x)
+ ? ((uint32)((x >> 32) & UI64LIT(0x00000000000FFFFF)))
+ : 0;
+}
+
+uint32 GUID_LOPART(uint64 x)
+{
+ // _GUID_LOPART_3 and _GUID_LOPART_2 were both equal to PAIR64_LOPART
+ return PAIR64_LOPART(x);
+}
+
+bool IsGuidHaveEnPart(uint64 guid)
{
switch (GUID_HIPART(guid))
{
@@ -99,10 +230,7 @@ inline bool IsGuidHaveEnPart(uint64 guid)
}
}
-#define GUID_ENPART(x) (IsGuidHaveEnPart(x) ? _GUID_ENPART_3(x) : _GUID_ENPART_2(x))
-#define GUID_LOPART(x) (IsGuidHaveEnPart(x) ? _GUID_LOPART_3(x) : _GUID_LOPART_2(x))
-
-inline char const* GetLogNameForGuid(uint64 guid)
+char const* GetLogNameForGuid(uint64 guid)
{
switch (GUID_HIPART(guid))
{
@@ -121,4 +249,5 @@ inline char const* GetLogNameForGuid(uint64 guid)
return "<unknown>";
}
}
+
#endif
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index fcbc87ad47d..25daff60761 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -771,7 +771,7 @@ public:
}
}
- void UpdateAI(uint32 const diff)
+ void UpdateAI(uint32 const /*diff*/)
{
// When duration of oppened riff visual ends,
// closed one should be cast
diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h
index 3cf8857ead6..10c2e866a7d 100644
--- a/src/server/shared/Utilities/Util.h
+++ b/src/server/shared/Utilities/Util.h
@@ -352,11 +352,6 @@ std::string ByteArrayToHexStr(uint8 const* bytes, uint32 length, bool reverse =
#ifndef _FLAG96
#define _FLAG96
-#ifndef PAIR64_HIPART
-#define PAIR64_HIPART(x) (uint32)((uint64(x) >> 32) & UI64LIT(0x00000000FFFFFFFF))
-#define PAIR64_LOPART(x) (uint32)(uint64(x) & UI64LIT(0x00000000FFFFFFFF))
-#endif
-
// simple class for not-modifyable list
template <typename T>
class HookList
@@ -404,8 +399,8 @@ public:
flag96(uint64 p1, uint32 p2)
{
- part[0] = PAIR64_LOPART(p1);
- part[1] = PAIR64_HIPART(p1);
+ part[0] = (uint32)(p1 & UI64LIT(0x00000000FFFFFFFF));
+ part[1] = (uint32)((p1 >> 32) & UI64LIT(0x00000000FFFFFFFF));
part[2] = p2;
}