aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorSevi <gonzo1247@yahoo.de>2020-12-28 16:27:44 +0100
committerjackpoz <giacomopoz@gmail.com>2021-01-03 22:10:55 +0100
commit6392d9ac481dd015133d6b69a6642437a503d94a (patch)
tree6cd12944a72343c1bf1e90955a16ab0474c8e3ee /src/server/game/Globals/ObjectMgr.cpp
parented975ef4c0e614addc069785f23c1b7f522f3b8e (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.cpp40
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())