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) RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data)
local timeout = 100 local timeout = 100
while not NetworkDoesEntityExistWithNetworkId(netid) and timeout > 0 do while not NetworkDoesEntityExistWithNetworkId(netid) and timeout > 0 do
@@ -9,8 +91,11 @@ RegisterNetEvent('ox_lib:setVehicleProperties', function(netid, data)
end end
end) end)
---@param vehicle number
---@return VehicleProperties?
function lib.getVehicleProperties(vehicle) function lib.getVehicleProperties(vehicle)
if DoesEntityExist(vehicle) then if DoesEntityExist(vehicle) then
---@type number | number[], number | number[]
local colorPrimary, colorSecondary = GetVehicleColours(vehicle) local colorPrimary, colorSecondary = GetVehicleColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle) local pearlescentColor, wheelColor = GetVehicleExtraColours(vehicle)
@@ -84,6 +169,7 @@ function lib.getVehicleProperties(vehicle)
engineHealth = math.floor(GetVehicleEngineHealth(vehicle) + 0.5), engineHealth = math.floor(GetVehicleEngineHealth(vehicle) + 0.5),
tankHealth = math.floor(GetVehiclePetrolTankHealth(vehicle) + 0.5), tankHealth = math.floor(GetVehiclePetrolTankHealth(vehicle) + 0.5),
fuelLevel = math.floor(GetVehicleFuelLevel(vehicle) + 0.5), fuelLevel = math.floor(GetVehicleFuelLevel(vehicle) + 0.5),
oilLevel = math.floor(GetVehicleOilLevel(vehicle) + 0.5),
dirtLevel = math.floor(GetVehicleDirtLevel(vehicle) + 0.5), dirtLevel = math.floor(GetVehicleDirtLevel(vehicle) + 0.5),
color1 = colorPrimary, color1 = colorPrimary,
color2 = colorSecondary, color2 = colorSecondary,
@@ -156,19 +242,25 @@ function lib.getVehicleProperties(vehicle)
windows = damage.windows, windows = damage.windows,
doors = damage.doors, doors = damage.doors,
tyres = damage.tyres, tyres = damage.tyres,
leftHeadlight = damage.leftHeadlight, -- no setters?
rightHeadlight = damage.rightHeadlight, -- leftHeadlight = GetIsLeftVehicleHeadlightDamaged(vehicle),
frontBumper = damage.frontBumper, -- rightHeadlight = GetIsRightVehicleHeadlightDamaged(vehicle),
rearBumper = damage.rearBumper, -- frontBumper = IsVehicleBumperBrokenOff(vehicle, true),
-- rearBumper = IsVehicleBumperBrokenOff(vehicle, false),
} }
end end
end end
---@param vehicle number Entity handle ---@param vehicle number
---@param props table Properties ---@param props VehicleProperties
---@return boolean?
function lib.setVehicleProperties(vehicle, props) 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 not DoesEntityExist(vehicle) then error(("Unable to set vehicle properties for '%s' (entity does not exist)"):
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 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 colorPrimary, colorSecondary = GetVehicleColours(vehicle)
local pearlescentColor, wheelColor = GetVehicleExtraColours(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]) SetVehicleNeonLightsColour(vehicle, props.neonColor[1], props.neonColor[2], props.neonColor[3])
end end
if props.modSmokeEnabled then if props.modSmokeEnabled ~= nil then
ToggleVehicleMod(vehicle, 20, true) ToggleVehicleMod(vehicle, 20, props.modSmokeEnabled)
end end
if props.tyreSmokeColor then if props.tyreSmokeColor then
@@ -370,19 +462,19 @@ function lib.setVehicleProperties(vehicle, props)
SetVehicleMod(vehicle, 17, props.modNitrous, false) SetVehicleMod(vehicle, 17, props.modNitrous, false)
end end
if props.modTurbo then if props.modTurbo ~= nil then
ToggleVehicleMod(vehicle, 18, props.modTurbo) ToggleVehicleMod(vehicle, 18, props.modTurbo)
end end
if props.modSubwoofer then if props.modSubwoofer ~= nil then
ToggleVehicleMod(vehicle, 19, props.modSubwoofer) ToggleVehicleMod(vehicle, 19, props.modSubwoofer)
end end
if props.modHydraulics then if props.modHydraulics ~= nil then
ToggleVehicleMod(vehicle, 21, props.modHydraulics) ToggleVehicleMod(vehicle, 21, props.modHydraulics)
end end
if props.modXenon then if props.modXenon ~= nil then
ToggleVehicleMod(vehicle, 22, props.modXenon) ToggleVehicleMod(vehicle, 22, props.modXenon)
end end
@@ -495,6 +587,10 @@ function lib.setVehicleProperties(vehicle, props)
SetVehicleLivery(vehicle, props.modLivery) SetVehicleLivery(vehicle, props.modLivery)
end end
if props.modRoofLivery then
SetVehicleRoofLivery(vehicle, props.modRoofLivery)
end
if props.modLightbar then if props.modLightbar then
SetVehicleMod(vehicle, 49, props.modLightbar, false) SetVehicleMod(vehicle, 49, props.modLightbar, false)
end end