diff options
author | Spp <spp@jorge.gr> | 2013-01-02 09:07:52 +0100 |
---|---|---|
committer | Spp <spp@jorge.gr> | 2013-01-02 09:07:52 +0100 |
commit | 2292025bf9ccd78c004027f2e0621473ced82b22 (patch) | |
tree | 077a93d879c3e8740c72df1830c9ad7fca36bf88 | |
parent | c85dc26584decad8e4b8d1cb5a05bdb899a56e63 (diff) |
Core/Misc: Replaced some macro definitions with inline functions
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 16 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGQueue.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Object/ObjectDefines.h | 231 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Utilities/Util.h | 9 |
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; } |