TrinityCore
Loading...
Searching...
No Matches
VehicleDefines.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITYCORE_VEHICLE_DEFINES_H
19#define TRINITYCORE_VEHICLE_DEFINES_H
20
21#include "Define.h"
22#include "Duration.h"
23#include "EnumFlag.h"
24#include "ObjectGuid.h"
25#include "Optional.h"
26#include "Position.h"
27#include <map>
28#include <vector>
29
30class Map;
31class WorldObject;
32struct VehicleSeatEntry;
33
65
67{
68 VEHICLE_FLAG_NO_STRAFE = 0x00000001, // Sets MOVEFLAG2_NO_STRAFE
69 VEHICLE_FLAG_NO_JUMPING = 0x00000002, // Sets MOVEFLAG2_NO_JUMPING
70 VEHICLE_FLAG_FULLSPEEDTURNING = 0x00000004, // Sets MOVEFLAG2_FULLSPEEDTURNING
71 VEHICLE_FLAG_ALLOW_PITCHING = 0x00000010, // Sets MOVEFLAG2_ALLOW_PITCHING
72 VEHICLE_FLAG_FULLSPEEDPITCHING = 0x00000020, // Sets MOVEFLAG2_FULLSPEEDPITCHING
73 VEHICLE_FLAG_CUSTOM_PITCH = 0x00000040, // If set use pitchMin and pitchMax from DBC, otherwise pitchMin = -pi/2, pitchMax = pi/2
74 VEHICLE_FLAG_ADJUST_AIM_ANGLE = 0x00000400, // Lua_IsVehicleAimAngleAdjustable
75 VEHICLE_FLAG_ADJUST_AIM_POWER = 0x00000800, // Lua_IsVehicleAimPowerAdjustable
76 VEHICLE_FLAG_FIXED_POSITION = 0x00200000 // Used for cannons, when they should be rooted
77};
78
84
86{
87 VehicleExitParamNone = 0, // provided parameters will be ignored
88 VehicleExitParamOffset = 1, // provided parameters will be used as offset values
89 VehicleExitParamDest = 2, // provided parameters will be used as absolute destination
91};
92
94{
95 None = 0x0,
97};
98
100
102{
106
107 void Reset()
108 {
109 Guid.Clear();
110 IsUninteractible = false;
111 IsGravityDisabled = false;
112 }
113};
114
116{
118 VehicleSeatAddon(float orientatonOffset, float exitX, float exitY, float exitZ, float exitO, uint8 param) :
119 SeatOrientationOffset(orientatonOffset), ExitParameterX(exitX), ExitParameterY(exitY), ExitParameterZ(exitZ),
121
123 float ExitParameterX = 0.f;
124 float ExitParameterY = 0.f;
125 float ExitParameterZ = 0.f;
126 float ExitParameterO = 0.f;
128};
129
131{
132 explicit VehicleSeat(VehicleSeatEntry const* seatInfo, VehicleSeatAddon const* seatAddon) : SeatInfo(seatInfo), SeatAddon(seatAddon)
133 {
135 }
136
137 bool IsEmpty() const { return Passenger.Guid.IsEmpty(); }
138
142};
143
145{
146 VehicleAccessory(uint32 entry, int8 seatId, bool isMinion, uint8 summonType, uint32 summonTime, Optional<uint32> rideSpellID) :
147 AccessoryEntry(entry), IsMinion(isMinion), SummonTime(summonTime), SeatId(seatId), SummonedType(summonType), RideSpellID(rideSpellID) { }
154};
155
162
163typedef std::vector<VehicleAccessory> VehicleAccessoryList;
164typedef std::map<ObjectGuid::LowType, VehicleAccessoryList> VehicleAccessoryContainer;
165typedef std::map<uint32, VehicleAccessoryList> VehicleAccessoryTemplateContainer;
166typedef std::map<int8, VehicleSeat> SeatMap;
167
169{
170protected:
172 virtual ~TransportBase() { }
173
174public:
175 virtual ObjectGuid GetTransportGUID() const = 0;
176
178 virtual Position GetPositionWithOffset(Position const& offset) const = 0;
179
181 virtual Position GetPositionOffsetTo(Position const& endPos) const = 0;
182
183 virtual float GetTransportOrientation() const = 0;
184
185 virtual void AddPassenger(WorldObject* passenger, Position const& offset) = 0;
186
187 virtual TransportBase* RemovePassenger(WorldObject* passenger) = 0;
188
189 void UpdatePassengerPosition(Map* map, WorldObject* passenger, Position const& position, bool setHomePosition);
190
191 virtual int32 GetMapIdForSpawning() const = 0;
192};
193
194#endif
uint8_t uint8
Definition Define.h:156
int8_t int8
Definition Define.h:152
int32_t int32
Definition Define.h:150
uint32_t uint32
Definition Define.h:154
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
Definition Duration.h:24
#define DEFINE_ENUM_FLAG(enumType)
Definition EnumFlag.h:26
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
PowerType
@ POWER_PURPLE_POWER
@ POWER_VENOM
@ POWER_FUEL
@ POWER_LIFE_ENERGY
@ POWER_SUN_ENERGY
@ POWER_ARCANEENERGY
@ POWER_GREEN_POWER
@ POWER_ORANGE_POWER
@ POWER_FLASHFIRE
@ POWER_ORANGE_POWER_2
@ POWER_STEAM
@ POWER_BLOOD
@ POWER_SHADOWFLAME_ENERGY
@ POWER_PYRITE
@ POWER_HEAT
@ POWER_TWILIGHT_ENERGY
@ POWER_WRATH
@ POWER_OOZE
@ POWER_ARCANE_ENERGY
@ POWER_BLUE_POWER
@ POWER_ENERGY_2
@ POWER_WIND_POWER_1
@ POWER_SWING_VELOCITY
@ POWER_WIND_POWER_2
@ POWER_WIND_POWER_3
@ POWER_PYROCLASTIC_FRENZY
@ POWER_CONSUMING_FLAME
@ POWER_SUN_POWER
std::map< int8, VehicleSeat > SeatMap
std::map< ObjectGuid::LowType, VehicleAccessoryList > VehicleAccessoryContainer
VehicleSpells
@ VEHICLE_SPELL_PARACHUTE
@ VEHICLE_SPELL_RIDE_HARDCODED
VehicleFlags
@ VEHICLE_FLAG_NO_JUMPING
@ VEHICLE_FLAG_ADJUST_AIM_ANGLE
@ VEHICLE_FLAG_NO_STRAFE
@ VEHICLE_FLAG_FIXED_POSITION
@ VEHICLE_FLAG_FULLSPEEDTURNING
@ VEHICLE_FLAG_ALLOW_PITCHING
@ VEHICLE_FLAG_CUSTOM_PITCH
@ VEHICLE_FLAG_ADJUST_AIM_POWER
@ VEHICLE_FLAG_FULLSPEEDPITCHING
VehicleExitParameters
VehicleCustomFlags
std::vector< VehicleAccessory > VehicleAccessoryList
std::map< uint32, VehicleAccessoryList > VehicleAccessoryTemplateContainer
Definition Map.h:225
bool IsEmpty() const
Definition ObjectGuid.h:362
void Clear()
Definition ObjectGuid.h:329
virtual ObjectGuid GetTransportGUID() const =0
virtual Position GetPositionOffsetTo(Position const &endPos) const =0
This method transforms supplied global coordinates into local offsets.
virtual void AddPassenger(WorldObject *passenger, Position const &offset)=0
void UpdatePassengerPosition(Map *map, WorldObject *passenger, Position const &position, bool setHomePosition)
Definition Transport.cpp:36
virtual float GetTransportOrientation() const =0
virtual Position GetPositionWithOffset(Position const &offset) const =0
This method transforms supplied transport offsets into global coordinates.
virtual int32 GetMapIdForSpawning() const =0
virtual TransportBase * RemovePassenger(WorldObject *passenger)=0
virtual ~TransportBase()
ObjectGuid Guid
VehicleAccessory(uint32 entry, int8 seatId, bool isMinion, uint8 summonType, uint32 summonTime, Optional< uint32 > rideSpellID)
Optional< uint32 > RideSpellID
VehicleSeatAddon(float orientatonOffset, float exitX, float exitY, float exitZ, float exitO, uint8 param)
VehicleExitParameters ExitParameter
VehicleSeatAddon const * SeatAddon
bool IsEmpty() const
PassengerInfo Passenger
VehicleSeat(VehicleSeatEntry const *seatInfo, VehicleSeatAddon const *seatAddon)
VehicleSeatEntry const * SeatInfo
EnumFlag< VehicleCustomFlags > CustomFlags
Milliseconds DespawnDelay
Optional< float > Pitch