diff --git a/src/framework/GameSystem/Grid.h b/src/framework/GameSystem/Grid.h index f95f7f912..fb0165445 100644 --- a/src/framework/GameSystem/Grid.h +++ b/src/framework/GameSystem/Grid.h @@ -117,16 +117,12 @@ class MANGOS_DLL_DECL Grid return i_container.template remove(obj); } - uint32 GetLastUpdateTime() const { return m_LastUpdateTime; } - void SetLastUpdateTime(uint32 newtime) { m_LastUpdateTime = newtime; } - private: TypeMapContainer i_container; TypeMapContainer i_objects; typedef std::set ActiveGridObjects; ActiveGridObjects m_activeGridObjects; - uint32 m_LastUpdateTime; // last time when Update call has been or current started, used and set Map::Update }; #endif diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index d78187fa5..d029ef6d6 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -406,7 +406,7 @@ uint32 Creature::ChooseDisplayId(const CreatureInfo *cinfo, const CreatureData * return display_id; } -void Creature::Update(uint32 update_diff, uint32 tick_diff) +void Creature::Update(uint32 diff) { if (m_needNotify) { @@ -467,7 +467,7 @@ void Creature::Update(uint32 update_diff, uint32 tick_diff) if (m_isDeadByDefault) break; - if (m_corpseDecayTimer <= update_diff) + if (m_corpseDecayTimer <= diff) { // since pool system can fail to roll unspawned object, this one can remain spawned, so must set respawn nevertheless uint16 poolid = GetDBTableGUIDLow() ? sPoolMgr.IsPartOfAPool(GetDBTableGUIDLow()) : 0; @@ -482,11 +482,11 @@ void Creature::Update(uint32 update_diff, uint32 tick_diff) } else { - m_corpseDecayTimer -= update_diff; + m_corpseDecayTimer -= diff; if (m_groupLootId) { - if(update_diff < m_groupLootTimer) - m_groupLootTimer -= update_diff; + if(diff < m_groupLootTimer) + m_groupLootTimer -= diff; else StopGroupLoot(); } @@ -498,7 +498,7 @@ void Creature::Update(uint32 update_diff, uint32 tick_diff) { if (m_isDeadByDefault) { - if (m_corpseDecayTimer <= update_diff) + if (m_corpseDecayTimer <= diff) { // since pool system can fail to roll unspawned object, this one can remain spawned, so must set respawn nevertheless uint16 poolid = GetDBTableGUIDLow() ? sPoolMgr.IsPartOfAPool(GetDBTableGUIDLow()) : 0; @@ -516,11 +516,11 @@ void Creature::Update(uint32 update_diff, uint32 tick_diff) } else { - m_corpseDecayTimer -= update_diff; + m_corpseDecayTimer -= diff; } } - Unit::Update(update_diff, tick_diff); + Unit::Update( diff ); // creature can be dead after Unit::Update call // CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly) @@ -531,7 +531,7 @@ void Creature::Update(uint32 update_diff, uint32 tick_diff) { // do not allow the AI to be changed during update m_AI_locked = true; - i_AI->UpdateAI(tick_diff); // AI not react good at real update delays (while freeze in non-active part of map) + i_AI->UpdateAI(diff); m_AI_locked = false; } @@ -541,10 +541,10 @@ void Creature::Update(uint32 update_diff, uint32 tick_diff) break; if(m_regenTimer > 0) { - if(update_diff >= m_regenTimer) + if(diff >= m_regenTimer) m_regenTimer = 0; else - m_regenTimer -= update_diff; + m_regenTimer -= diff; } if (m_regenTimer != 0) break; diff --git a/src/game/Creature.h b/src/game/Creature.h index 66fe74afd..a357269f2 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -402,7 +402,7 @@ class MANGOS_DLL_SPEC Creature : public Unit uint32 GetDBTableGUIDLow() const { return m_DBTableGuid; } char const* GetSubName() const { return GetCreatureInfo()->SubName; } - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update(uint32 time); // overwrite Unit::Update void GetRespawnCoord(float &x, float &y, float &z, float* ori = NULL, float* dist =NULL) const; uint32 GetEquipmentId() const { return m_equipmentId; } diff --git a/src/game/DynamicObject.cpp b/src/game/DynamicObject.cpp index 0dd3a5ae4..b2d88f95e 100644 --- a/src/game/DynamicObject.cpp +++ b/src/game/DynamicObject.cpp @@ -106,7 +106,7 @@ Unit* DynamicObject::GetCaster() const return ObjectAccessor::GetUnit(*this, GetCasterGUID()); } -void DynamicObject::Update(uint32 update_diff, uint32 /*tick_diff*/) +void DynamicObject::Update(uint32 p_time) { // caster can be not in world at time dynamic object update, but dynamic object not yet deleted in Unit destructor Unit* caster = GetCaster(); @@ -118,8 +118,8 @@ void DynamicObject::Update(uint32 update_diff, uint32 /*tick_diff*/) bool deleteThis = false; - if(m_aliveDuration > int32(update_diff)) - m_aliveDuration -= update_diff; + if(m_aliveDuration > int32(p_time)) + m_aliveDuration -= p_time; else deleteThis = true; diff --git a/src/game/DynamicObject.h b/src/game/DynamicObject.h index 7f5c712d3..09076649b 100644 --- a/src/game/DynamicObject.h +++ b/src/game/DynamicObject.h @@ -35,7 +35,7 @@ class DynamicObject : public WorldObject void RemoveFromWorld(); bool Create(uint32 guidlow, Unit *caster, uint32 spellId, SpellEffectIndex effIndex, float x, float y, float z, int32 duration, float radius); - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update(uint32 p_time); void Delete(); uint32 GetSpellId() const { return m_spellId; } SpellEffectIndex GetEffIndex() const { return m_effIndex; } diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp index 31d75653f..6a693e8fe 100644 --- a/src/game/GameObject.cpp +++ b/src/game/GameObject.cpp @@ -159,7 +159,7 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map *map, uint32 phaseMa return true; } -void GameObject::Update(uint32 /*update_diff*/, uint32 /*tick_diff*/) +void GameObject::Update(uint32 /*p_time*/) { if (GetObjectGuid().IsMOTransport()) { diff --git a/src/game/GameObject.h b/src/game/GameObject.h index 75141af3e..f09e74958 100644 --- a/src/game/GameObject.h +++ b/src/game/GameObject.h @@ -588,7 +588,7 @@ class MANGOS_DLL_SPEC GameObject : public WorldObject void RemoveFromWorld(); bool Create(uint32 guidlow, uint32 name_id, Map *map, uint32 phaseMask, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint8 animprogress, GOState go_state); - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update(uint32 p_time); GameObjectInfo const* GetGOInfo() const; bool IsTransport() const; diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp index 0f6037ebb..ba2eb06db 100644 --- a/src/game/GridNotifiers.cpp +++ b/src/game/GridNotifiers.cpp @@ -187,7 +187,9 @@ template void ObjectUpdater::Visit(GridRefManager &m) { for(typename GridRefManager::iterator iter = m.begin(); iter != m.end(); ++iter) - iter->getSource()->Update(i_realdiff, i_diff); + { + iter->getSource()->Update(i_timeDiff); + } } bool CannibalizeObjectCheck::operator()(Corpse* u) diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index b363c0a83..45c6b9050 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -117,9 +117,8 @@ namespace MaNGOS struct MANGOS_DLL_DECL ObjectUpdater { - uint32 i_realdiff; // time from last update in msecs - uint32 i_diff; // current tick time diff in msecs - explicit ObjectUpdater(uint32 realdiff, uint32 diff) : i_realdiff(realdiff), i_diff(diff) {} + uint32 i_timeDiff; + explicit ObjectUpdater(const uint32 &diff) : i_timeDiff(diff) {} template void Visit(GridRefManager &m); void Visit(PlayerMapType &) {} void Visit(CorpseMapType &) {} diff --git a/src/game/GridNotifiersImpl.h b/src/game/GridNotifiersImpl.h index 6a6d55d44..48e119b01 100644 --- a/src/game/GridNotifiersImpl.h +++ b/src/game/GridNotifiersImpl.h @@ -41,7 +41,7 @@ inline void MaNGOS::VisibleNotifier::Visit(GridRefManager &m) inline void MaNGOS::ObjectUpdater::Visit(CreatureMapType &m) { for(CreatureMapType::iterator iter = m.begin(); iter != m.end(); ++iter) - iter->getSource()->Update(i_realdiff, i_diff); + iter->getSource()->Update(i_timeDiff); } inline void PlayerCreatureRelocationWorker(Player* pl, WorldObject const* viewPoint, Creature* c) diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 25045e0d9..e7fae9b6a 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -131,8 +131,7 @@ Map::Map(uint32 id, time_t expiry, uint32 InstanceId, uint8 SpawnMode, Map* _par i_id(id), i_InstanceId(InstanceId), m_unloadTimer(0), m_VisibleDistance(DEFAULT_VISIBILITY_DISTANCE), m_instanceSave(NULL), m_activeNonPlayersIter(m_activeNonPlayers.end()), - i_gridExpiry(expiry), m_parentMap(_parent ? _parent : this), - m_lastUpdateTime(getMSTime()) // expected that next update call will not long after map creating + i_gridExpiry(expiry), m_parentMap(_parent ? _parent : this) { for(unsigned int idx=0; idx < MAX_NUMBER_OF_GRIDS; ++idx) { @@ -511,19 +510,25 @@ bool Map::loaded(const GridPair &p) const return ( getNGrid(p.x_coord, p.y_coord) && isGridObjectDataLoaded(p.x_coord, p.y_coord) ); } -void Map::Update(uint32 time_, uint32 diff) +void Map::Update(const uint32 &t_diff) { - m_lastUpdateTime = time_; - /// update players at tick for(m_mapRefIter = m_mapRefManager.begin(); m_mapRefIter != m_mapRefManager.end(); ++m_mapRefIter) - if (Player* plr = m_mapRefIter->getSource()) - if (plr->IsInWorld()) - plr->Update(diff, diff); + { + Player* plr = m_mapRefIter->getSource(); + if(plr && plr->IsInWorld()) + plr->Update(t_diff); + } /// update active cells around players and active objects resetMarkedCells(); + MaNGOS::ObjectUpdater updater(t_diff); + // for creature + TypeContainerVisitor grid_object_update(updater); + // for pets + TypeContainerVisitor world_object_update(updater); + // the player iterator is stored in the map object // to make sure calls to Map::Remove don't invalidate it for(m_mapRefIter = m_mapRefManager.begin(); m_mapRefIter != m_mapRefManager.end(); ++m_mapRefIter) @@ -546,25 +551,9 @@ void Map::Update(uint32 time_, uint32 diff) if(!isCellMarked(cell_id)) { markCell(cell_id); - CellPair pair(x,y); Cell cell(pair); cell.SetNoCreate(); - - uint32 realdiff = diff; - if (loaded(cell.gridPair()) ) - { - GridType& celldata = (*getNGrid(cell.GridX(), cell.GridY()))(cell.CellX(), cell.CellY()); - realdiff = getMSTimeDiff(celldata.GetLastUpdateTime(), time_); - celldata.SetLastUpdateTime(time_); - } - - MaNGOS::ObjectUpdater updater(realdiff, diff); - // for creature - TypeContainerVisitor grid_object_update(updater); - // for pets - TypeContainerVisitor world_object_update(updater); - Visit(cell, grid_object_update); Visit(cell, world_object_update); } @@ -600,25 +589,9 @@ void Map::Update(uint32 time_, uint32 diff) if(!isCellMarked(cell_id)) { markCell(cell_id); - CellPair pair(x,y); Cell cell(pair); cell.SetNoCreate(); - - uint32 realdiff = diff; - if (loaded(cell.gridPair()) ) - { - GridType& celldata = (*getNGrid(cell.GridX(), cell.GridY()))(cell.CellX(), cell.CellY()); - realdiff = getMSTimeDiff(celldata.GetLastUpdateTime(), time_); - celldata.SetLastUpdateTime(time_); - } - - MaNGOS::ObjectUpdater updater(realdiff, diff); - // for creature - TypeContainerVisitor grid_object_update(updater); - // for pets - TypeContainerVisitor world_object_update(updater); - Visit(cell, grid_object_update); Visit(cell, world_object_update); } @@ -640,7 +613,7 @@ void Map::Update(uint32 time_, uint32 diff) GridInfo *info = i->getSource()->getGridInfoRef(); ++i; // The update might delete the map and we need the next map before the iterator gets invalid MANGOS_ASSERT(grid->GetGridState() >= 0 && grid->GetGridState() < MAX_GRID_STATE); - sMapMgr.UpdateGridState(grid->GetGridState(), *this, *grid, *info, grid->getX(), grid->getY(), diff); + sMapMgr.UpdateGridState(grid->GetGridState(), *this, *grid, *info, grid->getX(), grid->getY(), t_diff); } } @@ -1852,17 +1825,17 @@ bool InstanceMap::Add(Player *player) return true; } -void InstanceMap::Update(uint32 time_, uint32 diff) +void InstanceMap::Update(const uint32& t_diff) { - Map::Update(time_, diff); + Map::Update(t_diff); if(i_data) - i_data->Update(diff); + i_data->Update(t_diff); } -void BattleGroundMap::Update(uint32 time_, uint32 diff) +void BattleGroundMap::Update(const uint32& diff) { - Map::Update(time_, diff); + Map::Update(diff); GetBG()->Update(diff); } diff --git a/src/game/Map.h b/src/game/Map.h index adae8e189..c375fb060 100644 --- a/src/game/Map.h +++ b/src/game/Map.h @@ -108,7 +108,7 @@ class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::Obj template void Add(T *); template void Remove(T *, bool); - virtual void Update(uint32 time_, uint32 diff); + virtual void Update(const uint32&); void MessageBroadcast(Player *, WorldPacket *, bool to_self); void MessageBroadcast(WorldObject *, WorldPacket *); @@ -270,8 +270,6 @@ class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::Obj uint32 GenerateLocalLowGuid(HighGuid guidhigh); bool GetAreaInfo(float x, float y, float z, uint32 &mogpflags, int32 &adtId, int32 &rootId, int32 &groupId) const; bool IsOutdoors(float x, float y, float z) const; - - uint32 GetLastUpdateTime() const { return m_lastUpdateTime; } private: void LoadMapAndVMap(int gx, int gy); void LoadVMap(int gx, int gy); @@ -348,8 +346,6 @@ class MANGOS_DLL_SPEC Map : public GridRefManager, public MaNGOS::Obj std::set i_objectsToRemove; std::multimap m_scriptSchedule; - uint32 m_lastUpdateTime; // time in past when called Update last time, set to object at adding to Map - // Map local low guid counters ObjectGuidGenerator m_DynObjectGuids; ObjectGuidGenerator m_PetGuids; @@ -376,7 +372,7 @@ class MANGOS_DLL_SPEC InstanceMap : public Map ~InstanceMap(); bool Add(Player *); void Remove(Player *, bool); - void Update(uint32 time_, uint32 diff); + void Update(const uint32&); void CreateInstanceData(bool load); bool Reset(InstanceResetMethod method); uint32 GetScriptId() { return i_script_id; } @@ -401,7 +397,7 @@ class MANGOS_DLL_SPEC BattleGroundMap : public Map BattleGroundMap(uint32 id, time_t, uint32 InstanceId, Map* _parent, uint8 spawnMode); ~BattleGroundMap(); - void Update(uint32 time_, uint32 diff); + void Update(const uint32&); bool Add(Player *); void Remove(Player *, bool); bool CanEnter(Player* player); diff --git a/src/game/MapInstanced.cpp b/src/game/MapInstanced.cpp index bf0966e1e..9780d8ede 100644 --- a/src/game/MapInstanced.cpp +++ b/src/game/MapInstanced.cpp @@ -43,24 +43,24 @@ void MapInstanced::InitVisibilityDistance() } } -void MapInstanced::Update(uint32 time_, uint32 diff) +void MapInstanced::Update(const uint32& t) { // take care of loaded GridMaps (when unused, unload it!) - Map::Update(time_, diff); + Map::Update(t); // update the instanced maps InstancedMaps::iterator i = m_InstancedMaps.begin(); while (i != m_InstancedMaps.end()) { - if(i->second->CanUnload(diff)) + if(i->second->CanUnload(t)) { DestroyInstance(i); // iterator incremented } else { // update only here, because it may schedule some bad things before delete - i->second->Update(time_, diff); + i->second->Update(t); ++i; } } diff --git a/src/game/MapInstanced.h b/src/game/MapInstanced.h index 784bae0fc..1a3884b2c 100644 --- a/src/game/MapInstanced.h +++ b/src/game/MapInstanced.h @@ -34,7 +34,7 @@ class MANGOS_DLL_DECL MapInstanced : public Map ~MapInstanced() {} // functions overwrite Map versions - void Update(uint32 time_, uint32 diff); + void Update(const uint32&); void RemoveAllObjectsInRemoveList(); void UnloadAll(bool pForce); diff --git a/src/game/MapManager.cpp b/src/game/MapManager.cpp index ff7f47fec..fd8505a56 100644 --- a/src/game/MapManager.cpp +++ b/src/game/MapManager.cpp @@ -239,17 +239,17 @@ void MapManager::DeleteInstance(uint32 mapid, uint32 instanceId) } void -MapManager::Update(const uint32 time_, const uint32 diff) +MapManager::Update(uint32 diff) { i_timer.Update(diff); if( !i_timer.Passed() ) return; for(MapMapType::iterator iter=i_maps.begin(); iter != i_maps.end(); ++iter) - iter->second->Update(time_, i_timer.GetCurrent()); + iter->second->Update(i_timer.GetCurrent()); for (TransportSet::iterator iter = m_Transports.begin(); iter != m_Transports.end(); ++iter) - (*iter)->Update(i_timer.GetCurrent(), i_timer.GetCurrent()); + (*iter)->Update(i_timer.GetCurrent()); i_timer.SetCurrent(0); } diff --git a/src/game/MapManager.h b/src/game/MapManager.h index b955bf2ec..57e07075f 100644 --- a/src/game/MapManager.h +++ b/src/game/MapManager.h @@ -67,7 +67,7 @@ class MANGOS_DLL_DECL MapManager : public MaNGOS::SingletonGetLastUpdateTime(); - i_gameObjects = 0; i_creatures = 0; i_corpses = 0; i_cell.data.Part.cell_y = 0; for(unsigned int x=0; x < MAX_NUMBER_OF_CELLS; ++x) @@ -239,9 +237,6 @@ void ObjectGridLoader::LoadN(void) i_cell.data.Part.cell_y = y; GridLoader loader; loader.Load(i_grid(x, y), *this); - - // setup last update time for loaded cell - i_grid(x, y).SetLastUpdateTime(updatetime); } } DEBUG_LOG("%u GameObjects, %u Creatures, and %u Corpses/Bones loaded for grid %u on map %u", i_gameObjects, i_creatures, i_corpses,i_grid.GetGridId(), i_map->GetId()); diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 310e6e6a3..586bf176d 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -482,7 +482,7 @@ void Pet::SetDeathState(DeathState s) // overwrite virtual } } -void Pet::Update(uint32 update_diff, uint32 tick_diff) +void Pet::Update(uint32 diff) { if(m_removed) // pet already removed, just wait in remove queue, no updates return; @@ -491,7 +491,7 @@ void Pet::Update(uint32 update_diff, uint32 tick_diff) { case CORPSE: { - if (m_corpseDecayTimer <= update_diff) + if (m_corpseDecayTimer <= diff) { MANGOS_ASSERT(getPetType()!=SUMMON_PET && "Must be already removed."); Remove(PET_SAVE_NOT_IN_SLOT); //hunters' pets never get removed because of death, NEVER! @@ -520,8 +520,8 @@ void Pet::Update(uint32 update_diff, uint32 tick_diff) if (m_duration > 0) { - if (m_duration > (int32)update_diff) - m_duration -= (int32)update_diff; + if(m_duration > (int32)diff) + m_duration -= (int32)diff; else { Remove(getPetType() != SUMMON_PET ? PET_SAVE_AS_DELETED:PET_SAVE_NOT_IN_SLOT); @@ -530,7 +530,7 @@ void Pet::Update(uint32 update_diff, uint32 tick_diff) } //regenerate focus for hunter pets or energy for deathknight's ghoul - if (m_regenTimer <= update_diff) + if(m_regenTimer <= diff) { switch (getPowerType()) { @@ -544,25 +544,25 @@ void Pet::Update(uint32 update_diff, uint32 tick_diff) m_regenTimer = 4000; } else - m_regenTimer -= update_diff; + m_regenTimer -= diff; - if (getPetType() != HUNTER_PET) + if(getPetType() != HUNTER_PET) break; - if (m_happinessTimer <= update_diff) + if(m_happinessTimer <= diff) { LooseHappiness(); m_happinessTimer = 7500; } else - m_happinessTimer -= update_diff; + m_happinessTimer -= diff; break; } default: break; } - Creature::Update(update_diff, tick_diff); + Creature::Update(diff); } void Pet::Regenerate(Powers power) diff --git a/src/game/Pet.h b/src/game/Pet.h index ab6614a14..15d3a6e8d 100644 --- a/src/game/Pet.h +++ b/src/game/Pet.h @@ -157,8 +157,7 @@ class Pet : public Creature static void DeleteFromDB(uint32 guidlow); void SetDeathState(DeathState s); // overwrite virtual Creature::SetDeathState and Unit::SetDeathState - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update - + void Update(uint32 diff); // overwrite virtual Creature::Update and Unit::Update uint8 GetPetAutoSpellSize() const { return m_autospells.size(); } uint32 GetPetAutoSpellOnPos(uint8 pos) const diff --git a/src/game/Player.cpp b/src/game/Player.cpp index ef51db0e0..1795654cf 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1175,7 +1175,7 @@ void Player::SetDrunkValue(uint16 newDrunkenValue, uint32 itemId) SendMessageToSet(&data, true); } -void Player::Update(uint32 update_diff, uint32 tick_diff) +void Player::Update( uint32 p_time ) { if(!IsInWorld()) return; @@ -1195,21 +1195,25 @@ void Player::Update(uint32 update_diff, uint32 tick_diff) //used to implement delayed far teleports SetCanDelayTeleport(true); - Unit::Update(update_diff, tick_diff); + Unit::Update( p_time ); SetCanDelayTeleport(false); // update player only attacks - if (uint32 ranged_att = getAttackTimer(RANGED_ATTACK)) - setAttackTimer(RANGED_ATTACK, (update_diff >= ranged_att ? 0 : ranged_att - update_diff) ); + if(uint32 ranged_att = getAttackTimer(RANGED_ATTACK)) + { + setAttackTimer(RANGED_ATTACK, (p_time >= ranged_att ? 0 : ranged_att - p_time) ); + } - if (uint32 off_att = getAttackTimer(OFF_ATTACK)) - setAttackTimer(OFF_ATTACK, (update_diff >= off_att ? 0 : off_att - update_diff) ); + if(uint32 off_att = getAttackTimer(OFF_ATTACK)) + { + setAttackTimer(OFF_ATTACK, (p_time >= off_att ? 0 : off_att - p_time) ); + } time_t now = time (NULL); UpdatePvPFlag(now); - UpdateContestedPvP(update_diff); + UpdateContestedPvP(p_time); UpdateDuelFlag(now); @@ -1227,7 +1231,7 @@ void Player::Update(uint32 update_diff, uint32 tick_diff) while (iter != m_timedquests.end()) { QuestStatusData& q_status = mQuestStatus[*iter]; - if (q_status.m_timer <= update_diff) + if( q_status.m_timer <= p_time ) { uint32 quest_id = *iter; ++iter; // current iter will be removed in FailQuest @@ -1235,7 +1239,7 @@ void Player::Update(uint32 update_diff, uint32 tick_diff) } else { - q_status.m_timer -= update_diff; + q_status.m_timer -= p_time; if (q_status.uState != QUEST_NEW) q_status.uState = QUEST_CHANGED; ++iter; } @@ -1338,49 +1342,49 @@ void Player::Update(uint32 update_diff, uint32 tick_diff) if (m_regenTimer) { - if (update_diff >= m_regenTimer) + if(p_time >= m_regenTimer) m_regenTimer = 0; else - m_regenTimer -= update_diff; + m_regenTimer -= p_time; } if (m_weaponChangeTimer > 0) { - if (update_diff >= m_weaponChangeTimer) + if(p_time >= m_weaponChangeTimer) m_weaponChangeTimer = 0; else - m_weaponChangeTimer -= update_diff; + m_weaponChangeTimer -= p_time; } if (m_zoneUpdateTimer > 0) { - if (update_diff >= m_zoneUpdateTimer) + if(p_time >= m_zoneUpdateTimer) { uint32 newzone, newarea; GetZoneAndAreaId(newzone,newarea); - if (m_zoneUpdateId != newzone) + if( m_zoneUpdateId != newzone ) UpdateZone(newzone,newarea); // also update area else { // use area updates as well // needed for free far all arenas for example - if (m_areaUpdateId != newarea) + if( m_areaUpdateId != newarea ) UpdateArea(newarea); m_zoneUpdateTimer = ZONE_UPDATE_INTERVAL; } } else - m_zoneUpdateTimer -= update_diff; + m_zoneUpdateTimer -= p_time; } if (m_timeSyncTimer > 0) { - if (update_diff >= m_timeSyncTimer) + if(p_time >= m_timeSyncTimer) SendTimeSync(); else - m_timeSyncTimer -= update_diff; + m_timeSyncTimer -= p_time; } if (isAlive()) @@ -1396,31 +1400,31 @@ void Player::Update(uint32 update_diff, uint32 tick_diff) if (m_deathState == JUST_DIED) KillPlayer(); - if (m_nextSave > 0) + if(m_nextSave > 0) { - if (update_diff >= m_nextSave) + if(p_time >= m_nextSave) { // m_nextSave reseted in SaveToDB call SaveToDB(); DETAIL_LOG("Player '%s' (GUID: %u) saved", GetName(), GetGUIDLow()); } else - m_nextSave -= update_diff; + m_nextSave -= p_time; } //Handle Water/drowning - HandleDrowning(update_diff); + HandleDrowning(p_time); //Handle detect stealth players if (m_DetectInvTimer > 0) { - if (update_diff >= m_DetectInvTimer) + if (p_time >= m_DetectInvTimer) { HandleStealthedUnitsDetection(); m_DetectInvTimer = 3000; } else - m_DetectInvTimer -= update_diff; + m_DetectInvTimer -= p_time; } // Played time @@ -1434,27 +1438,27 @@ void Player::Update(uint32 update_diff, uint32 tick_diff) if (m_drunk) { - m_drunkTimer += update_diff; + m_drunkTimer += p_time; if (m_drunkTimer > 10*IN_MILLISECONDS) HandleSobering(); } // not auto-free ghost from body in instances - if (m_deathTimer > 0 && !GetBaseMap()->Instanceable()) + if(m_deathTimer > 0 && !GetBaseMap()->Instanceable()) { - if(update_diff >= m_deathTimer) + if(p_time >= m_deathTimer) { m_deathTimer = 0; BuildPlayerRepop(); RepopAtGraveyard(); } else - m_deathTimer -= update_diff; + m_deathTimer -= p_time; } - UpdateEnchantTime(update_diff); - UpdateHomebindTime(update_diff); + UpdateEnchantTime(p_time); + UpdateHomebindTime(p_time); // group update SendUpdateToOutOfRangeGroupMembers(); diff --git a/src/game/Player.h b/src/game/Player.h index 6f677882c..4e75e3bf7 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1124,7 +1124,7 @@ class MANGOS_DLL_SPEC Player : public Unit bool Create( uint32 guidlow, const std::string& name, uint8 race, uint8 class_, uint8 gender, uint8 skin, uint8 face, uint8 hairStyle, uint8 hairColor, uint8 facialHair, uint8 outfitId ); - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update( uint32 time ); static bool BuildEnumData( QueryResult * result, WorldPacket * p_data ); diff --git a/src/game/TemporarySummon.cpp b/src/game/TemporarySummon.cpp index 2a048c689..9bf87f59d 100644 --- a/src/game/TemporarySummon.cpp +++ b/src/game/TemporarySummon.cpp @@ -26,7 +26,7 @@ Creature(CREATURE_SUBTYPE_TEMPORARY_SUMMON), m_type(TEMPSUMMON_TIMED_OR_CORPSE_D { } -void TemporarySummon::Update(uint32 update_diff, uint32 tick_diff) +void TemporarySummon::Update( uint32 diff ) { switch(m_type) { @@ -34,26 +34,26 @@ void TemporarySummon::Update(uint32 update_diff, uint32 tick_diff) break; case TEMPSUMMON_TIMED_DESPAWN: { - if (m_timer <= update_diff) + if (m_timer <= diff) { UnSummon(); return; } - m_timer -= update_diff; + m_timer -= diff; break; } case TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT: { if (!isInCombat()) { - if (m_timer <= update_diff) + if (m_timer <= diff) { UnSummon(); return; } - m_timer -= update_diff; + m_timer -= diff; } else if (m_timer != m_lifetime) m_timer = m_lifetime; @@ -65,13 +65,13 @@ void TemporarySummon::Update(uint32 update_diff, uint32 tick_diff) { if (IsCorpse()) { - if (m_timer <= update_diff) + if (m_timer <= diff) { UnSummon(); return; } - m_timer -= update_diff; + m_timer -= diff; } break; } @@ -106,13 +106,13 @@ void TemporarySummon::Update(uint32 update_diff, uint32 tick_diff) if (!isInCombat()) { - if (m_timer <= update_diff) + if (m_timer <= diff) { UnSummon(); return; } else - m_timer -= update_diff; + m_timer -= diff; } else if (m_timer != m_lifetime) m_timer = m_lifetime; @@ -129,13 +129,13 @@ void TemporarySummon::Update(uint32 update_diff, uint32 tick_diff) if (!isInCombat() && isAlive() ) { - if (m_timer <= update_diff) + if (m_timer <= diff) { UnSummon(); return; } else - m_timer -= update_diff; + m_timer -= diff; } else if (m_timer != m_lifetime) m_timer = m_lifetime; @@ -147,7 +147,7 @@ void TemporarySummon::Update(uint32 update_diff, uint32 tick_diff) break; } - Creature::Update(update_diff, tick_diff); + Creature::Update( diff ); } void TemporarySummon::Summon(TempSummonType type, uint32 lifetime) diff --git a/src/game/TemporarySummon.h b/src/game/TemporarySummon.h index 7a0ddd694..24f8569a1 100644 --- a/src/game/TemporarySummon.h +++ b/src/game/TemporarySummon.h @@ -27,7 +27,7 @@ class TemporarySummon : public Creature public: explicit TemporarySummon(ObjectGuid summoner = ObjectGuid()); virtual ~TemporarySummon(){}; - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update(uint32 time); void Summon(TempSummonType type, uint32 lifetime); void MANGOS_DLL_SPEC UnSummon(); void SaveToDB(); diff --git a/src/game/Totem.cpp b/src/game/Totem.cpp index 4169e8766..d3c6757cf 100644 --- a/src/game/Totem.cpp +++ b/src/game/Totem.cpp @@ -31,7 +31,7 @@ Totem::Totem() : Creature(CREATURE_SUBTYPE_TOTEM) m_type = TOTEM_PASSIVE; } -void Totem::Update(uint32 update_diff, uint32 tick_diff) +void Totem::Update( uint32 time ) { Unit *owner = GetOwner(); if (!owner || !owner->isAlive() || !isAlive()) @@ -40,15 +40,15 @@ void Totem::Update(uint32 update_diff, uint32 tick_diff) return; } - if (m_duration <= update_diff) + if (m_duration <= time) { UnSummon(); // remove self return; } else - m_duration -= update_diff; + m_duration -= time; - Creature::Update(update_diff, tick_diff); + Creature::Update( time ); } void Totem::Summon(Unit* owner) diff --git a/src/game/Totem.h b/src/game/Totem.h index c1d503e14..57c1686c6 100644 --- a/src/game/Totem.h +++ b/src/game/Totem.h @@ -33,7 +33,7 @@ class Totem : public Creature public: explicit Totem(); virtual ~Totem(){}; - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update( uint32 time ); void Summon(Unit* owner); void UnSummon(); uint32 GetSpell() const { return m_spells[0]; } diff --git a/src/game/Transports.cpp b/src/game/Transports.cpp index 179d75ecf..0c3431d07 100644 --- a/src/game/Transports.cpp +++ b/src/game/Transports.cpp @@ -487,7 +487,7 @@ bool Transport::RemovePassenger(Player* passenger) return true; } -void Transport::Update(uint32 /*update_diff*/, uint32 /*tick_diff*/) +void Transport::Update(uint32 /*p_time*/) { if (m_WayPoints.size() <= 1) return; diff --git a/src/game/Transports.h b/src/game/Transports.h index 674e6cd08..a7917d69d 100644 --- a/src/game/Transports.h +++ b/src/game/Transports.h @@ -32,7 +32,7 @@ class Transport : public GameObject bool Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint8 animprogress, uint16 dynamicHighValue); bool GenerateWaypoints(uint32 pathid, std::set &mapids); - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update(uint32 p_time); bool AddPassenger(Player* passenger); bool RemovePassenger(Player* passenger); diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 79492fa54..a596be96a 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -291,7 +291,7 @@ Unit::~Unit() MANGOS_ASSERT(m_deletedHolders.size() == 0); } -void Unit::Update(uint32 update_diff, uint32 tick_diff) +void Unit::Update( uint32 p_time ) { if(!IsInWorld()) return; @@ -306,21 +306,21 @@ void Unit::Update(uint32 update_diff, uint32 tick_diff) // WARNING! Order of execution here is important, do not change. // Spells must be processed with event system BEFORE they go to _UpdateSpells. // Or else we may have some SPELL_STATE_FINISHED spells stalled in pointers, that is bad. - m_Events.Update(update_diff); - _UpdateSpells(update_diff); + m_Events.Update( p_time ); + _UpdateSpells( p_time ); CleanupDeletedAuras(); if (m_lastManaUseTimer) { - if (update_diff >= m_lastManaUseTimer) + if (p_time >= m_lastManaUseTimer) m_lastManaUseTimer = 0; else - m_lastManaUseTimer -= update_diff; + m_lastManaUseTimer -= p_time; } if (CanHaveThreatList()) - getThreatManager().UpdateForClient(update_diff); + getThreatManager().UpdateForClient(p_time); // update combat timer only for players and pets if (isInCombat() && (GetTypeId() == TYPEID_PLAYER || ((Creature*)this)->IsPet() || ((Creature*)this)->isCharmed())) @@ -331,24 +331,26 @@ void Unit::Update(uint32 update_diff, uint32 tick_diff) if (m_HostileRefManager.isEmpty()) { // m_CombatTimer set at aura start and it will be freeze until aura removing - if (m_CombatTimer <= update_diff) + if (m_CombatTimer <= p_time) CombatStop(); else - m_CombatTimer -= update_diff; + m_CombatTimer -= p_time; } } if (uint32 base_att = getAttackTimer(BASE_ATTACK)) - setAttackTimer(BASE_ATTACK, (update_diff >= base_att ? 0 : base_att - update_diff) ); + { + setAttackTimer(BASE_ATTACK, (p_time >= base_att ? 0 : base_att - p_time) ); + } // update abilities available only for fraction of time - UpdateReactives(update_diff); + UpdateReactives( p_time ); ModifyAuraState(AURA_STATE_HEALTHLESS_20_PERCENT, GetHealth() < GetMaxHealth()*0.20f); ModifyAuraState(AURA_STATE_HEALTHLESS_35_PERCENT, GetHealth() < GetMaxHealth()*0.35f); ModifyAuraState(AURA_STATE_HEALTH_ABOVE_75_PERCENT, GetHealth() > GetMaxHealth()*0.75f); - i_motionMaster.UpdateMotion(tick_diff); // movegens expected non freeze time diff + i_motionMaster.UpdateMotion(p_time); } bool Unit::haveOffhandWeapon() const diff --git a/src/game/Unit.h b/src/game/Unit.h index efd815366..28089ad9d 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1168,7 +1168,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void ApplyDiminishingAura(DiminishingGroup group, bool apply); void ClearDiminishings() { m_Diminishing.clear(); } - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + virtual void Update( uint32 time ); void setAttackTimer(WeaponAttackType type, uint32 time) { m_attackTimer[type] = time; } void resetAttackTimer(WeaponAttackType type = BASE_ATTACK); diff --git a/src/game/Vehicle.cpp b/src/game/Vehicle.cpp index b12ae8276..21db9ab8b 100644 --- a/src/game/Vehicle.cpp +++ b/src/game/Vehicle.cpp @@ -56,9 +56,9 @@ void Vehicle::SetDeathState(DeathState s) // overwrite vir Creature::SetDeathState(s); } -void Vehicle::Update(uint32 update_diff, uint32 tick_diff) +void Vehicle::Update(uint32 diff) { - Creature::Update(update_diff, tick_diff); + Creature::Update(diff); } bool Vehicle::Create(uint32 guidlow, Map *map, uint32 Entry, uint32 vehicleId, uint32 team) diff --git a/src/game/Vehicle.h b/src/game/Vehicle.h index 0938d382e..c191c094f 100644 --- a/src/game/Vehicle.h +++ b/src/game/Vehicle.h @@ -36,7 +36,7 @@ class Vehicle : public Creature bool Create (uint32 guidlow, Map *map, uint32 Entry, uint32 vehicleId, uint32 team); void SetDeathState(DeathState s); // overwrite virtual Creature::SetDeathState and Unit::SetDeathState - void Update(uint32 update_diff, uint32 tick_diff); // overwrite WorldObject::Update + void Update(uint32 diff); // overwrite virtual Creature::Update and Unit::Update uint32 GetVehicleId() { return m_vehicleId; } void SetVehicleId(uint32 vehicleid) { m_vehicleId = vehicleid; } diff --git a/src/game/World.cpp b/src/game/World.cpp index bd87e8a31..dddf31151 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -1381,7 +1381,7 @@ void World::DetectDBCLang() } /// Update the World ! -void World::Update(uint32 time_, uint32 diff) +void World::Update(uint32 diff) { ///- Update the different timers for(int i = 0; i < WUPDATE_COUNT; ++i) @@ -1461,7 +1461,7 @@ void World::Update(uint32 time_, uint32 diff) { m_timers[WUPDATE_OBJECTS].Reset(); ///- Update objects when the timer has passed (maps, transport, creatures,...) - sMapMgr.Update(time_, diff); // As interval = 0 + sMapMgr.Update(diff); // As interval = 0 sBattleGroundMgr.Update(diff); } diff --git a/src/game/World.h b/src/game/World.h index 6795475ae..ae885b3f6 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -509,7 +509,7 @@ class World static void StopNow(uint8 exitcode) { m_stopEvent = true; m_ExitCode = exitcode; } static bool IsStopped() { return m_stopEvent; } - void Update(uint32 time_, uint32 diff); + void Update(uint32 diff); void UpdateSessions( uint32 diff ); diff --git a/src/mangosd/WorldRunnable.cpp b/src/mangosd/WorldRunnable.cpp index 617096b8e..4575a6e31 100644 --- a/src/mangosd/WorldRunnable.cpp +++ b/src/mangosd/WorldRunnable.cpp @@ -57,7 +57,7 @@ void WorldRunnable::run() uint32 diff = getMSTimeDiff(realPrevTime,realCurrTime); - sWorld.Update(realCurrTime, diff); + sWorld.Update( diff ); realPrevTime = realCurrTime; // diff (D0) include time of previous sleep (d0) + tick time (t0) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 632eebca0..59a75ec97 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10716" + #define REVISION_NR "10717" #endif // __REVISION_NR_H__