*Update relocation notify code. Only notify units within max visible distance.

*Delete a duplicated config option.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-19 23:31:02 -06:00
parent d7c37e157a
commit ac9e2ac6d2
5 changed files with 24 additions and 33 deletions
+14 -4
View File
@@ -656,12 +656,22 @@ void Map::Update(const uint32 &t_diff)
unit->m_Notified = true; unit->m_Notified = true;
if(!unit->IsInWorld()) if(!unit->IsInWorld())
continue; continue;
CellPair val = Trinity::ComputeCellPair(unit->GetPositionX(), unit->GetPositionY()); //CellPair val = Trinity::ComputeCellPair(unit->GetPositionX(), unit->GetPositionY());
Cell cell(val); //Cell cell(val);
//if(unit->GetTypeId() == TYPEID_PLAYER)
// PlayerRelocationNotify((Player*)unit, cell, val);
//else
// CreatureRelocationNotify((Creature*)unit, cell, val);
if(unit->GetTypeId() == TYPEID_PLAYER) if(unit->GetTypeId() == TYPEID_PLAYER)
PlayerRelocationNotify((Player*)unit, cell, val); {
Trinity::PlayerRelocationNotifier notifier(*((Player*)unit));
VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
}
else else
CreatureRelocationNotify((Creature*)unit, cell, val); {
Trinity::CreatureRelocationNotifier notifier(*((Creature*)unit));
VisitAll(unit->GetPositionX(), unit->GetPositionY(), World::GetMaxVisibleDistance(), notifier);
}
} }
for(std::vector<uint64>::iterator iter = i_unitsToNotify.begin(); iter != i_unitsToNotify.end(); ++iter) for(std::vector<uint64>::iterator iter = i_unitsToNotify.begin(); iter != i_unitsToNotify.end(); ++iter)
{ {
-16
View File
@@ -587,22 +587,6 @@ void Spell::FillTargetMap()
if(IsChanneledSpell(m_spellInfo) && !tmpUnitMap.empty()) if(IsChanneledSpell(m_spellInfo) && !tmpUnitMap.empty())
m_needAliveTargetMask |= (1<<i); m_needAliveTargetMask |= (1<<i);
/*if(m_caster->GetTypeId() == TYPEID_PLAYER)
{
Player *me = (Player*)m_caster;
for (std::list<Unit*>::const_iterator itr = tmpUnitMap.begin(); itr != tmpUnitMap.end(); ++itr)
{
Unit *owner = (*itr)->GetOwner();
Unit *u = owner ? owner : (*itr);
if(u!=m_caster && u->IsPvP() && (!me->duel || me->duel->opponent != u))
{
me->UpdatePvP(true);
me->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_ENTER_PVP_COMBAT);
break;
}
}
}*/
for (std::list<Unit*>::iterator itr = tmpUnitMap.begin() ; itr != tmpUnitMap.end();) for (std::list<Unit*>::iterator itr = tmpUnitMap.begin() ; itr != tmpUnitMap.end();)
{ {
if(!CheckTarget(*itr, i, false )) if(!CheckTarget(*itr, i, false ))
+8 -7
View File
@@ -904,6 +904,7 @@ void World::LoadConfigSettings(bool reload)
sLog.outError("Visibility. Distance .Creature can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); sLog.outError("Visibility. Distance .Creature can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance);
m_MaxVisibleDistanceForCreature = MAX_VISIBILITY_DISTANCE-m_VisibleUnitGreyDistance; m_MaxVisibleDistanceForCreature = MAX_VISIBILITY_DISTANCE-m_VisibleUnitGreyDistance;
} }
m_MaxVisibleDistanceForPlayer = sConfig.GetFloatDefault("Visibility.Distance.Player", DEFAULT_VISIBILITY_DISTANCE); m_MaxVisibleDistanceForPlayer = sConfig.GetFloatDefault("Visibility.Distance.Player", DEFAULT_VISIBILITY_DISTANCE);
if(m_MaxVisibleDistanceForPlayer < 45*sWorld.getRate(RATE_CREATURE_AGGRO)) if(m_MaxVisibleDistanceForPlayer < 45*sWorld.getRate(RATE_CREATURE_AGGRO))
{ {
@@ -915,6 +916,8 @@ void World::LoadConfigSettings(bool reload)
sLog.outError("Visibility.Distance.Player can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance); sLog.outError("Visibility.Distance.Player can't be greater %f",MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance);
m_MaxVisibleDistanceForPlayer = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance; m_MaxVisibleDistanceForPlayer = MAX_VISIBILITY_DISTANCE - m_VisibleUnitGreyDistance;
} }
m_MaxVisibleDistance = std::max(m_MaxVisibleDistanceForPlayer, m_MaxVisibleDistanceForCreature);
m_MaxVisibleDistanceForObject = sConfig.GetFloatDefault("Visibility.Distance.Gameobject", DEFAULT_VISIBILITY_DISTANCE); m_MaxVisibleDistanceForObject = sConfig.GetFloatDefault("Visibility.Distance.Gameobject", DEFAULT_VISIBILITY_DISTANCE);
if(m_MaxVisibleDistanceForObject < INTERACTION_DISTANCE) if(m_MaxVisibleDistanceForObject < INTERACTION_DISTANCE)
{ {
@@ -926,12 +929,17 @@ void World::LoadConfigSettings(bool reload)
sLog.outError("Visibility.Distance.Object can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance); sLog.outError("Visibility.Distance.Object can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance);
m_MaxVisibleDistanceForObject = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance; m_MaxVisibleDistanceForObject = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance;
} }
if(m_MaxVisibleDistance < m_MaxVisibleDistanceForObject)
m_MaxVisibleDistance = m_MaxVisibleDistanceForObject;
m_MaxVisibleDistanceInFlight = sConfig.GetFloatDefault("Visibility.Distance.InFlight", DEFAULT_VISIBILITY_DISTANCE); m_MaxVisibleDistanceInFlight = sConfig.GetFloatDefault("Visibility.Distance.InFlight", DEFAULT_VISIBILITY_DISTANCE);
if(m_MaxVisibleDistanceInFlight + m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE) if(m_MaxVisibleDistanceInFlight + m_VisibleObjectGreyDistance > MAX_VISIBILITY_DISTANCE)
{ {
sLog.outError("Visibility.Distance.InFlight can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance); sLog.outError("Visibility.Distance.InFlight can't be greater %f",MAX_VISIBILITY_DISTANCE-m_VisibleObjectGreyDistance);
m_MaxVisibleDistanceInFlight = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance; m_MaxVisibleDistanceInFlight = MAX_VISIBILITY_DISTANCE - m_VisibleObjectGreyDistance;
} }
if(m_MaxVisibleDistance < m_MaxVisibleDistanceInFlight)
m_MaxVisibleDistance = m_MaxVisibleDistanceInFlight;
///- Read the "Data" directory from the config file ///- Read the "Data" directory from the config file
std::string dataPath = sConfig.GetStringDefault("DataDir","./"); std::string dataPath = sConfig.GetStringDefault("DataDir","./");
@@ -980,13 +988,6 @@ void World::LoadConfigSettings(bool reload)
m_configs[CONFIG_PVP_TOKEN_COUNT] = 1; m_configs[CONFIG_PVP_TOKEN_COUNT] = 1;
m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false); m_configs[CONFIG_NO_RESET_TALENT_COST] = sConfig.GetBoolDefault("NoResetTalentsCost", false);
m_configs[CONFIG_ARENA_MAX_RATING_DIFFERENCE] = sConfig.GetIntDefault("Arena.MaxRatingDifference", 0);
m_configs[CONFIG_ARENA_RATING_DISCARD_TIMER] = sConfig.GetIntDefault("Arena.RatingDiscardTimer",300000);
m_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS] = sConfig.GetBoolDefault("Arena.AutoDistributePoints", false);
m_configs[CONFIG_ARENA_AUTO_DISTRIBUTE_INTERVAL_DAYS] = sConfig.GetIntDefault("Arena.AutoDistributeInterval", 7);
m_configs[CONFIG_BATTLEGROUND_PREMATURE_FINISH_TIMER] = sConfig.GetIntDefault("BattleGround.PrematureFinishTimer", 0);
std::string forbiddenmaps = sConfig.GetStringDefault("ForbiddenMaps", ""); std::string forbiddenmaps = sConfig.GetStringDefault("ForbiddenMaps", "");
char * forbiddenMaps = new char[forbiddenmaps.length() + 1]; char * forbiddenMaps = new char[forbiddenmaps.length() + 1];
forbiddenMaps[forbiddenmaps.length()] = 0; forbiddenMaps[forbiddenmaps.length()] = 0;
+2
View File
@@ -474,6 +474,7 @@ class World
bool IsAllowedMap(uint32 mapid) { return m_forbiddenMapIds.count(mapid) == 0 ;} bool IsAllowedMap(uint32 mapid) { return m_forbiddenMapIds.count(mapid) == 0 ;}
// for max speed access // for max speed access
static float GetMaxVisibleDistance() { return m_MaxVisibleDistance; }
static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; } static float GetMaxVisibleDistanceForCreature() { return m_MaxVisibleDistanceForCreature; }
static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; } static float GetMaxVisibleDistanceForPlayer() { return m_MaxVisibleDistanceForPlayer; }
static float GetMaxVisibleDistanceForObject() { return m_MaxVisibleDistanceForObject; } static float GetMaxVisibleDistanceForObject() { return m_MaxVisibleDistanceForObject; }
@@ -542,6 +543,7 @@ class World
std::set<uint32> m_forbiddenMapIds; std::set<uint32> m_forbiddenMapIds;
// for max speed access // for max speed access
static float m_MaxVisibleDistance;
static float m_MaxVisibleDistanceForCreature; static float m_MaxVisibleDistanceForCreature;
static float m_MaxVisibleDistanceForPlayer; static float m_MaxVisibleDistanceForPlayer;
static float m_MaxVisibleDistanceForObject; static float m_MaxVisibleDistanceForObject;
-6
View File
@@ -1215,11 +1215,6 @@ Ra.Secure = 1
# PlayerStart.MapsExplored # PlayerStart.MapsExplored
# Players will start with all maps explored if enabled # Players will start with all maps explored if enabled
# #
# PlayerInstantLogout
# Enable or disable instant logout for all players (NOT in combat/while dueling/while falling)
# Default: 0 - off
# 1 - on
#
# MusicInBattleground # MusicInBattleground
# If enabled, "L70ETC - Power of the horde" will be played when BG starts ;) # If enabled, "L70ETC - Power of the horde" will be played when BG starts ;)
# #
@@ -1261,7 +1256,6 @@ Ra.Secure = 1
PlayerStart.AllReputation = 0 PlayerStart.AllReputation = 0
PlayerStart.AllSpells = 0 PlayerStart.AllSpells = 0
PlayerStart.MapsExplored = 0 PlayerStart.MapsExplored = 0
PlayerInstantLogout = 0
MusicInBattleground = 0 MusicInBattleground = 0
HonorPointsAfterDuel = 0 HonorPointsAfterDuel = 0
AlwaysMaxWeaponSkill = 0 AlwaysMaxWeaponSkill = 0