diff options
| author | Sevi <gonzo1247@yahoo.de> | 2020-12-28 16:27:44 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-12-31 14:13:29 +0100 |
| commit | c7b10d3c5fd082faf6c2835239e340babc3dfc76 (patch) | |
| tree | 498fd11394f450a91b9d2b9e81f1e42a423917b1 /src/server/game/Entities/Vehicle | |
| parent | d94f0d23b3cbf0944576cfd77fb199453234817b (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
Diffstat (limited to 'src/server/game/Entities/Vehicle')
| -rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.cpp | 8 | ||||
| -rw-r--r-- | src/server/game/Entities/Vehicle/Vehicle.h | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Vehicle/VehicleDefines.h | 6 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 7e37b5212ae..1dec34be1f3 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -885,3 +885,11 @@ void VehicleJoinEvent::Abort(uint64) if (Passenger->IsInWorld() && Passenger->HasUnitTypeMask(UNIT_MASK_ACCESSORY)) Passenger->ToCreature()->DespawnOrUnsummon(); } + +Milliseconds Vehicle::GetDespawnDelay() +{ + if (VehicleTemplate const* vehicleTemplate = sObjectMgr->GetVehicleTemplate(this)) + return vehicleTemplate->DespawnDelay; + + return 1ms; +} diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h index 07f1715b5fe..081daf53250 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.h +++ b/src/server/game/Entities/Vehicle/Vehicle.h @@ -71,6 +71,8 @@ class TC_GAME_API Vehicle : public TransportBase void RemovePendingEventsForPassenger(Unit* passenger); + Milliseconds GetDespawnDelay(); + protected: friend class VehicleJoinEvent; uint32 UsableSeatNum; ///< Number of seats that match VehicleSeatEntry::UsableByPlayer, used for proper display flags diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index 6ed5e0338fa..a428de24ff4 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -19,6 +19,7 @@ #define __TRINITY_VEHICLEDEFINES_H #include "Define.h" +#include "Duration.h" #include <vector> #include <map> @@ -113,6 +114,11 @@ struct VehicleAccessory uint8 SummonedType; }; +struct VehicleTemplate +{ + Milliseconds DespawnDelay = Milliseconds::zero(); +}; + typedef std::vector<VehicleAccessory> VehicleAccessoryList; typedef std::map<ObjectGuid::LowType, VehicleAccessoryList> VehicleAccessoryContainer; typedef std::map<uint32, VehicleAccessoryList> VehicleAccessoryTemplateContainer; |
