mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
Add and use function for more fast way to get areflag by area id.
This commit is contained in:
parent
333146baaf
commit
bd3eca6904
3 changed files with 16 additions and 8 deletions
|
|
@ -542,14 +542,12 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
if(!worldOverlayEntry)
|
if(!worldOverlayEntry)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
AreaTableEntry const* areaTableEntry = GetAreaEntryByAreaID(worldOverlayEntry->areatableID);
|
int32 exploreFlag = GetAreaFlagByAreaID(worldOverlayEntry->areatableID);
|
||||||
|
if(exploreFlag < 0)
|
||||||
if(!areaTableEntry)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
uint32 exploreFlag = areaTableEntry->exploreFlag;
|
uint32 playerIndexOffset = uint32(exploreFlag) / 32;
|
||||||
uint32 playerIndexOffset = exploreFlag / 32;
|
uint32 mask = 1<< (uint32(exploreFlag) % 32);
|
||||||
uint32 mask = 1<< (exploreFlag % 32);
|
|
||||||
|
|
||||||
if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask)
|
if(GetPlayer()->GetUInt32Value(PLAYER_EXPLORED_ZONES_1 + playerIndexOffset) & mask)
|
||||||
SetCriteriaProgress(achievementCriteria, 1);
|
SetCriteriaProgress(achievementCriteria, 1);
|
||||||
|
|
|
||||||
|
|
@ -524,13 +524,22 @@ uint32 GetTalentSpellCost(uint32 spellId)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id)
|
int32 GetAreaFlagByAreaID(uint32 area_id)
|
||||||
{
|
{
|
||||||
AreaFlagByAreaID::iterator i = sAreaFlagByAreaID.find(area_id);
|
AreaFlagByAreaID::iterator i = sAreaFlagByAreaID.find(area_id);
|
||||||
if(i == sAreaFlagByAreaID.end())
|
if(i == sAreaFlagByAreaID.end())
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return i->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id)
|
||||||
|
{
|
||||||
|
int32 areaflag = GetAreaFlagByAreaID(area_id);
|
||||||
|
if(areaflag < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return sAreaStore.LookupEntry(i->second);
|
return sAreaStore.LookupEntry(areaflag );
|
||||||
}
|
}
|
||||||
|
|
||||||
AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag,uint32 map_id)
|
AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag,uint32 map_id)
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ char* GetPetName(uint32 petfamily, uint32 dbclang);
|
||||||
uint32 GetTalentSpellCost(uint32 spellId);
|
uint32 GetTalentSpellCost(uint32 spellId);
|
||||||
TalentSpellPos const* GetTalentSpellPos(uint32 spellId);
|
TalentSpellPos const* GetTalentSpellPos(uint32 spellId);
|
||||||
|
|
||||||
|
int32 GetAreaFlagByAreaID(uint32 area_id); // -1 if not found
|
||||||
AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id);
|
AreaTableEntry const* GetAreaEntryByAreaID(uint32 area_id);
|
||||||
AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag,uint32 map_id);
|
AreaTableEntry const* GetAreaEntryByAreaFlagAndMap(uint32 area_flag,uint32 map_id);
|
||||||
uint32 GetAreaFlagByMapId(uint32 mapid);
|
uint32 GetAreaFlagByMapId(uint32 mapid);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue