diff options
| author | Sevi <gonzo1247@yahoo.de> | 2020-12-28 16:27:44 +0100 | 
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2021-01-03 22:10:55 +0100 | 
| commit | 6392d9ac481dd015133d6b69a6642437a503d94a (patch) | |
| tree | 6cd12944a72343c1bf1e90955a16ab0474c8e3ee /src/server/game/Globals/ObjectMgr.cpp | |
| parent | ed975ef4c0e614addc069785f23c1b7f522f3b8e (diff) | |
Core/Vehicles: add a way to delay the Vehicle despawn Time if its needed.
* New database table `vehicle_template` holds info for despawn delay with option to extend it in the future
(cherry picked from commit c7b10d3c5fd082faf6c2835239e340babc3dfc76)
# Conflicts:
#	src/server/game/Entities/Unit/Unit.cpp
#	src/server/game/Entities/Vehicle/Vehicle.cpp
#	src/server/game/Globals/ObjectMgr.cpp
#	src/server/game/Globals/ObjectMgr.h
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 40 | 
1 files changed, 40 insertions, 0 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index fdd51329b91..db4a45d5011 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3577,6 +3577,41 @@ void ObjectMgr::LoadVehicleTemplateAccessories()      TC_LOG_INFO("server.loading", ">> Loaded %u Vehicle Template Accessories in %u ms", count, GetMSTimeDiffToNow(oldMSTime));  } +void ObjectMgr::LoadVehicleTemplate() +{ +    uint32 oldMSTime = getMSTime(); + +    _vehicleTemplateStore.clear(); + +    //                                               0           1 +    QueryResult result = WorldDatabase.Query("SELECT creatureId, despawnDelayMs FROM vehicle_template"); + +    if (!result) +    { +        TC_LOG_INFO("server.loading", ">> Loaded 0 vehicle template. DB table `vehicle_template` is empty."); +        return; +    } + +    do +    { +        Field* fields = result->Fetch(); + +        uint32 creatureId = fields[0].GetUInt32(); + +        if (!sObjectMgr->GetCreatureTemplate(creatureId)) +        { +            TC_LOG_ERROR("sql.sql", "Table `vehicle_template`: Vehicle %u does not exist.", creatureId); +            continue; +        } + +        VehicleTemplate& vehicleTemplate = _vehicleTemplateStore[creatureId]; +        vehicleTemplate.DespawnDelay = Milliseconds(fields[1].GetInt32()); + +    } while (result->NextRow()); + +    TC_LOG_INFO("server.loading", ">> Loaded " SZFMTD " Vehicle Template entries in %u ms", _vehicleTemplateStore.size(), GetMSTimeDiffToNow(oldMSTime)); +} +  void ObjectMgr::LoadVehicleAccessories()  {      uint32 oldMSTime = getMSTime(); @@ -10143,6 +10178,11 @@ QuestPOIWrapper const* ObjectMgr::GetQuestPOIWrapper(uint32 questId) const      return Trinity::Containers::MapGetValuePtr(_questPOIStore, questId);  } +VehicleTemplate const* ObjectMgr::GetVehicleTemplate(Vehicle* veh) const +{ +    return Trinity::Containers::MapGetValuePtr(_vehicleTemplateStore, veh->GetCreatureEntry()); +} +  VehicleAccessoryList const* ObjectMgr::GetVehicleAccessoryList(Vehicle* veh) const  {      if (Creature* cre = veh->GetBase()->ToCreature())  | 
