Add RoofState sync.

This commit is contained in:
Sardelka
2022-06-19 13:36:23 +08:00
parent 9a9fb2870c
commit 376830d6dc
7 changed files with 22 additions and 17 deletions

View File

@ -358,6 +358,7 @@ namespace RageCoop.Client
v.ModelHash=packet.ModelHash; v.ModelHash=packet.ModelHash;
v.Colors=packet.Colors; v.Colors=packet.Colors;
v.LandingGear=packet.LandingGear; v.LandingGear=packet.LandingGear;
v.RoofState=(VehicleRoofState)packet.RoofState;
v.EngineRunning = packet.Flag.HasFlag(VehicleDataFlags.IsEngineRunning); v.EngineRunning = packet.Flag.HasFlag(VehicleDataFlags.IsEngineRunning);
v.LightsOn = packet.Flag.HasFlag(VehicleDataFlags.AreLightsOn); v.LightsOn = packet.Flag.HasFlag(VehicleDataFlags.AreLightsOn);
v.BrakeLightsOn = packet.Flag.HasFlag(VehicleDataFlags.AreBrakeLightsOn); v.BrakeLightsOn = packet.Flag.HasFlag(VehicleDataFlags.AreBrakeLightsOn);

View File

@ -105,6 +105,7 @@ namespace RageCoop.Client
Colors=new byte[] { primaryColor, secondaryColor }, Colors=new byte[] { primaryColor, secondaryColor },
DamageModel=veh.GetVehicleDamageModel(), DamageModel=veh.GetVehicleDamageModel(),
LandingGear = veh.IsAircraft ? (byte)veh.LandingGearState : (byte)0, LandingGear = veh.IsAircraft ? (byte)veh.LandingGearState : (byte)0,
RoofState=(byte)veh.RoofState,
Mods = veh.Mods.GetVehicleMods(), Mods = veh.Mods.GetVehicleMods(),
ModelHash=veh.Model.Hash, ModelHash=veh.Model.Hash,
EngineHealth=veh.EngineHealth, EngineHealth=veh.EngineHealth,

View File

@ -598,7 +598,6 @@ namespace RageCoop.Client
Function.Call(Hash.GIVE_WEAPON_OBJECT_TO_PED, _lastWeaponObj, MainPed.Handle); Function.Call(Hash.GIVE_WEAPON_OBJECT_TO_PED, _lastWeaponObj, MainPed.Handle);
} }
_lastWeaponComponents = WeaponComponents; _lastWeaponComponents = WeaponComponents;
} }
if (Function.Call<int>(Hash.GET_PED_WEAPON_TINT_INDEX,MainPed,CurrentWeaponHash)!=WeaponTint) if (Function.Call<int>(Hash.GET_PED_WEAPON_TINT_INDEX,MainPed,CurrentWeaponHash)!=WeaponTint)

View File

@ -83,7 +83,7 @@ namespace RageCoop.Client
internal bool BrakeLightsOn { get; set; } = false; internal bool BrakeLightsOn { get; set; } = false;
internal bool HighBeamsOn { get; set; } internal bool HighBeamsOn { get; set; }
internal byte LandingGear { get; set; } internal byte LandingGear { get; set; }
internal bool RoofOpened { get; set; } internal VehicleRoofState RoofState { get; set; }
internal bool SireneActive { get; set; } internal bool SireneActive { get; set; }
internal VehicleDamageModel DamageModel { get; set; } internal VehicleDamageModel DamageModel { get; set; }
internal int ModelHash { get; set; } internal int ModelHash { get; set; }
@ -308,13 +308,9 @@ namespace RageCoop.Client
MainVehicle.SoundHorn(1); MainVehicle.SoundHorn(1);
} }
if (MainVehicle.HasRoof) if (MainVehicle.HasRoof && MainVehicle.RoofState!=RoofState)
{ {
bool roofOpened = MainVehicle.RoofState == VehicleRoofState.Opened || MainVehicle.RoofState == VehicleRoofState.Opening; MainVehicle.RoofState=RoofState;
if (roofOpened != RoofOpened)
{
MainVehicle.RoofState = RoofOpened ? VehicleRoofState.Opening : VehicleRoofState.Closing;
}
} }
Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle.Handle, BrakeLightsOn); Function.Call(Hash.SET_VEHICLE_BRAKE_LIGHTS, MainVehicle.Handle, BrakeLightsOn);
@ -373,14 +369,9 @@ namespace RageCoop.Client
EntityPool.Add( this); EntityPool.Add( this);
} }
MainVehicle.Quaternion = Quaternion; MainVehicle.Quaternion = Quaternion;
if (MainVehicle.HasRoof) if (MainVehicle.HasRoof)
{ {
bool roofOpened = MainVehicle.RoofState == VehicleRoofState.Opened || MainVehicle.RoofState == VehicleRoofState.Opening; MainVehicle.RoofState=RoofState;
if (roofOpened != RoofOpened)
{
MainVehicle.RoofState = RoofOpened ? VehicleRoofState.Opened : VehicleRoofState.Closed;
}
} }
vehicleModel.MarkAsNoLongerNeeded(); vehicleModel.MarkAsNoLongerNeeded();
} }

View File

@ -72,7 +72,10 @@ namespace RageCoop.Client
{ {
flags|= VehicleDataFlags.IsDeluxoHovering; flags|= VehicleDataFlags.IsDeluxoHovering;
} }
if (veh.HasRoof)
{
flags|=VehicleDataFlags.HasRoof;
}
return flags; return flags;

View File

@ -103,6 +103,7 @@ namespace RageCoop.Core
OnTurretSeat = 1 << 9, OnTurretSeat = 1 << 9,
IsAircraft = 1 << 10, IsAircraft = 1 << 10,
IsDeluxoHovering=1 << 11, IsDeluxoHovering=1 << 11,
HasRoof=1 << 12,
} }

View File

@ -30,6 +30,7 @@ namespace RageCoop.Core
public VehicleDamageModel DamageModel { get; set; } public VehicleDamageModel DamageModel { get; set; }
public byte LandingGear { get; set; } public byte LandingGear { get; set; }
public byte RoofState { get; set; }
public VehicleDataFlags Flag { get; set; } public VehicleDataFlags Flag { get; set; }
@ -66,7 +67,11 @@ namespace RageCoop.Core
if (Flag.HasFlag(VehicleDataFlags.IsAircraft)) if (Flag.HasFlag(VehicleDataFlags.IsAircraft))
{ {
// Write the vehicle landing gear // Write the vehicle landing gear
byteArray.AddRange(BitConverter.GetBytes(LandingGear)); byteArray.Add(LandingGear);
}
if (Flag.HasFlag(VehicleDataFlags.HasRoof))
{
byteArray.Add(RoofState);
} }
// Write vehicle colors // Write vehicle colors
@ -151,7 +156,11 @@ namespace RageCoop.Core
if (Flag.HasFlag(VehicleDataFlags.IsAircraft)) if (Flag.HasFlag(VehicleDataFlags.IsAircraft))
{ {
// Read vehicle landing gear // Read vehicle landing gear
LandingGear = (byte)reader.ReadShort(); LandingGear = reader.ReadByte();
}
if (Flag.HasFlag(VehicleDataFlags.HasRoof))
{
RoofState=reader.ReadByte();
} }
// Read vehicle colors // Read vehicle colors