refactor(resource/vehicleProperties): typings and formatting

This commit is contained in:
Linden
2022-09-18 11:25:07 +10:00
parent 6254ba9ba2
commit d08101c545

View File

@@ -1,3 +1,85 @@
---@class VehicleProperties
---@field model? string
---@field plate? string
---@field plateIndex? number
---@field bodyHealth? number
---@field engineHealth? number
---@field tankHealth? number
---@field fuelLevel? number
---@field oilLevel? number
---@field dirtLevel? number
---@field color1? number
---@field color2? number
---@field pearlescentColor? number
---@field interiorColor? number
---@field dashboardColor? number
---@field wheelColor? number
---@field wheelWidth? number
---@field wheelSize? number
---@field wheels? number
---@field windowTint? number
---@field xenonColor? number
---@field neonEnabled? boolean[]
---@field neonColor? number | number[]
---@field extras? boolean[]
---@field tyreSmokeColor? number | number[]
---@field modSpoilers? number
---@field modFrontBumper? number
---@field modRearBumper? number
---@field modSideSkirt? number
---@field modExhaust? number
---@field modFrame? number
---@field modGrille? number
---@field modHood? number
---@field modFender? number
---@field modRightFender? number
---@field modRoof? number
---@field modEngine? number
---@field modBrakes? number
---@field modTransmission? number
---@field modHorns? number
---@field modSuspension? number
---@field modArmor? number
---@field modNitrous? number
---@field modTurbo? boolean
---@field modSubwoofer? boolean
---@field modSmokeEnabled? boolean
---@field modHydraulics? boolean
---@field modXenon? boolean
---@field modFrontWheels? number
---@field modBackWheels? number
---@field modCustomTiresF? boolean
---@field modCustomTiresR? boolean
---@field modPlateHolder? number
---@field modVanityPlate? number
---@field modTrimA? number
---@field modOrnaments? number
---@field modDashboard? number
---@field modDial? number
---@field modDoorSpeaker? number
---@field modSeats? number
---@field modSteeringWheel? number
---@field modShifterLeavers? number
---@field modAPlate? number
---@field modSpeakers? number
---@field modTrunk? number
---@field modHydrolic? number
---@field modEngineBlock? number
---@field modAirFilter? number
---@field modStruts? number
---@field modArchCover? number
---@field modAerials? number
---@field modTrimB? number
---@field modTank? number
---@field modWindows? number
---@field modDoorR? number
---@field modLivery? number
---@field modRoofLivery? number
---@field modLightbar? number
---@field windows? number[]
---@field doors? number[]
---@field tyres? number[]
RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data)
local timeout = 100
while not NetworkDoesEntityExistWithNetworkId(netid) and timeout > 0 do
@@ -9,8 +91,11 @@ RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data)
end
end)
---@param vehicle number
---@return VehicleProperties?
function lib.getVehicleProperties(vehicle)
if DoesEntityExist(vehicle) then
---@type number | number[], number | number[]
local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
@@ -84,6 +169,7 @@ function lib.getVehicleProperties(vehicle)
engineHealth = math.floor(GetVehicleEngineHealth(vehicle) + 0.5),
tankHealth = math.floor(GetVehiclePetrolTankHealth(vehicle) + 0.5),
fuelLevel = math.floor(GetVehicleFuelLevel(vehicle) + 0.5),
oilLevel = math.floor(GetVehicleOilLevel(vehicle) + 0.5),
dirtLevel = math.floor(GetVehicleDirtLevel(vehicle) + 0.5),
color1 = colorPrimary,
color2 = colorSecondary,
@@ -156,19 +242,25 @@ function lib.getVehicleProperties(vehicle)
windows = damage.windows,
doors = damage.doors,
tyres = damage.tyres,
leftHeadlight = damage.leftHeadlight,
rightHeadlight = damage.rightHeadlight,
frontBumper = damage.frontBumper,
rearBumper = damage.rearBumper,
-- no setters?
-- leftHeadlight = GetIsLeftVehicleHeadlightDamaged(vehicle),
-- rightHeadlight = GetIsRightVehicleHeadlightDamaged(vehicle),
-- frontBumper = IsVehicleBumperBrokenOff(vehicle, true),
-- rearBumper = IsVehicleBumperBrokenOff(vehicle, false),
}
end
end
---@param vehicle number Entity handle
---@param props table Properties
---@param vehicle number
---@param props VehicleProperties
---@return boolean?
function lib.setVehicleProperties(vehicle, props)
if not DoesEntityExist(vehicle) then error(("Unable to set vehicle properties for '%s' (entity does not exist)"):format(vehicle)) end
if NetworkGetEntityIsNetworked(vehicle) and NetworkGetEntityOwner(vehicle) ~= cache.playerId then error(("Unable to set vehicle properties for '%s' (client is not entity owner)"):format(vehicle)) end
if not DoesEntityExist(vehicle) then error(("Unable to set vehicle properties for '%s' (entity does not exist)"):
format(vehicle))
end
if NetworkGetEntityIsNetworked(vehicle) and NetworkGetEntityOwner(vehicle) ~= cache.playerId then error((
"Unable to set vehicle properties for '%s' (client is not entity owner)"):format(vehicle))
end
local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
@@ -290,8 +382,8 @@ function lib.setVehicleProperties(vehicle, props)
SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3])
end
if props.modSmokeEnabled then
ToggleVehicleMod(vehicle, 20, true)
if props.modSmokeEnabled ~= nil then
ToggleVehicleMod(vehicle, 20, props.modSmokeEnabled)
end
if props.tyreSmokeColor then
@@ -370,19 +462,19 @@ function lib.setVehicleProperties(vehicle, props)
SetVehicleMod(vehicle, 17, props.modNitrous, false)
end
if props.modTurbo then
if props.modTurbo ~= nil then
ToggleVehicleMod(vehicle, 18, props.modTurbo)
end
if props.modSubwoofer then
if props.modSubwoofer ~= nil then
ToggleVehicleMod(vehicle, 19, props.modSubwoofer)
end
if props.modHydraulics then
if props.modHydraulics ~= nil then
ToggleVehicleMod(vehicle, 21, props.modHydraulics)
end
if props.modXenon then
if props.modXenon ~= nil then
ToggleVehicleMod(vehicle, 22, props.modXenon)
end
@@ -495,6 +587,10 @@ function lib.setVehicleProperties(vehicle, props)
SetVehicleLivery(vehicle, props.modLivery)
end
if props.modRoofLivery then
SetVehicleRoofLivery(vehicle, props.modRoofLivery)
end
if props.modLightbar then
SetVehicleMod(vehicle, 49, props.modLightbar, false)
end