mirror of
https://github.com/mangosfour/server.git
synced 2025-12-27 01:37:04 +00:00
Implemented vehicle opcodes that allow seat changing
This commit is contained in:
parent
6b49dfb4aa
commit
a7f0e6a4de
8 changed files with 178 additions and 18 deletions
|
|
@ -103,6 +103,12 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (element >= MSEGuid2Bit0 && element <= MSEGuid2Bit7)
|
||||
{
|
||||
guid2[element - MSEGuid2Bit0] = data.ReadBit();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (element >= MSETransportGuidBit0 && element <= MSETransportGuidBit7)
|
||||
{
|
||||
if (hasTransportData)
|
||||
|
|
@ -117,6 +123,13 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (element >= MSEGuid2Byte0 && element <= MSEGuid2Byte7)
|
||||
{
|
||||
if (guid2[element - MSEGuid2Byte0])
|
||||
guid2[element - MSEGuid2Byte0] ^= data.ReadUInt8();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (element >= MSETransportGuidByte0 && element <= MSETransportGuidByte7)
|
||||
{
|
||||
if (hasTransportData && t_guid[element - MSETransportGuidByte0])
|
||||
|
|
@ -256,6 +269,9 @@ void MovementInfo::Read(ByteBuffer& data, uint16 opcode)
|
|||
case MSEMovementCounter:
|
||||
data.read_skip<uint32>();
|
||||
break;
|
||||
case MSEByteParam:
|
||||
data >> byteParam;
|
||||
break;
|
||||
default:
|
||||
MANGOS_ASSERT(false && "Wrong movement status element");
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -738,7 +738,7 @@ class MovementInfo
|
|||
{
|
||||
public:
|
||||
MovementInfo() : moveFlags(MOVEFLAG_NONE), moveFlags2(MOVEFLAG2_NONE), time(0),
|
||||
t_time(0), t_seat(-1), t_time2(0), s_pitch(0.0f), fallTime(0), splineElevation(0.0f) {}
|
||||
t_time(0), t_seat(-1), t_time2(0), s_pitch(0.0f), fallTime(0), splineElevation(0.0f), byteParam(0) {}
|
||||
|
||||
// Read/Write methods
|
||||
void Read(ByteBuffer& data, uint16 opcode);
|
||||
|
|
@ -776,12 +776,14 @@ class MovementInfo
|
|||
t_seat = -1;
|
||||
}
|
||||
ObjectGuid const& GetGuid() const { return guid; }
|
||||
ObjectGuid const& GetGuid2() const { return guid2; }
|
||||
ObjectGuid const& GetTransportGuid() const { return t_guid; }
|
||||
Position const* GetTransportPos() const { return &t_pos; }
|
||||
int8 GetTransportSeat() const { return t_seat; }
|
||||
uint32 GetTransportTime() const { return t_time; }
|
||||
uint32 GetTransportTime2() const { return t_time2; }
|
||||
uint32 GetFallTime() const { return fallTime; }
|
||||
int8 GetByteParam() const { return byteParam; }
|
||||
void ChangeOrientation(float o) { pos.o = o; }
|
||||
void ChangePosition(float x, float y, float z, float o) { pos.x = x; pos.y = y; pos.z = z; pos.o = o; }
|
||||
void UpdateTime(uint32 _time) { time = _time; }
|
||||
|
|
@ -817,6 +819,7 @@ class MovementInfo
|
|||
private:
|
||||
// common
|
||||
ObjectGuid guid;
|
||||
ObjectGuid guid2;
|
||||
uint32 moveFlags; // see enum MovementFlags
|
||||
uint16 moveFlags2; // see enum MovementFlags2
|
||||
uint32 time;
|
||||
|
|
@ -837,6 +840,7 @@ class MovementInfo
|
|||
float splineElevation;
|
||||
// status info
|
||||
StatusInfo si;
|
||||
int8 byteParam;
|
||||
};
|
||||
|
||||
inline WorldPacket& operator<< (WorldPacket& buf, MovementInfo const& mi)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue