From dc741a2d5685cfcd1755a5855587614a04453506 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 16 Dec 2019 19:14:58 +0000 Subject: [PATCH] Fast label changes When a speed is now locked, if the speed is a strong speed, then the fast label is not lit, if it is a fast speed then it stays lit. --- __resource.lua | 2 +- cl_radar.lua | 61 ++++++++++++++++++++++++++++++++++-------------- docs/version.txt | 2 +- nui/radar.js | 15 +++++++----- 4 files changed, 55 insertions(+), 25 deletions(-) diff --git a/__resource.lua b/__resource.lua index 7410b10..76da125 100644 --- a/__resource.lua +++ b/__resource.lua @@ -10,7 +10,7 @@ resource_manifest_version '44febabe-d386-4d18-afbe-5e627f4af937' name 'Wraith ARS 2X' description 'An advanced radar system for FiveM' author 'WolfKnight' -version 'beta2a' +version 'beta2b' ui_page "nui/radar.html" diff --git a/cl_radar.lua b/cl_radar.lua index 9567066..22fd60e 100644 --- a/cl_radar.lua +++ b/cl_radar.lua @@ -124,8 +124,9 @@ RADAR.vars = fastSpeed = 0, -- Speed of the fastest vehicle caught by the front antenna fastDir = nil, -- Direction the fastest vehicle is going speedLocked = false, -- A speed has been locked for this antenna - lockedSpeed = 0, -- The locked speed - lockedDir = 0 -- The direction of the vehicle that was locked + lockedSpeed = nil, -- The locked speed + lockedDir = nil, -- The direction of the vehicle that was locked + lockedType = nil -- The locked type, 1 = strongest, 2 = fastest }, [ "rear" ] = { @@ -136,8 +137,9 @@ RADAR.vars = fastSpeed = 0, -- Speed of the fastest vehicle caught by the front antenna fastDir = nil, -- Direction the fastest vehicle is going speedLocked = false, -- A speed has been locked for this antenna - lockedSpeed = 0, -- The locked speed - lockedDir = 0 -- The direction of the vehicle that was locked + lockedSpeed = nil, -- The locked speed + lockedDir = nil, -- The direction of the vehicle that was locked + lockedType = nil -- The locked type, 1 = strongest, 2 = fastest } }, @@ -285,12 +287,18 @@ end -- Sends an update to the NUI side with the current state of the antennas and if the fast system is enabled function RADAR:SendSettingUpdate() - -- Grab the antennas table and the fast system state - local antennas = self.vars.antennas - local fast = self:IsFastDisplayEnabled() + local antennas = {} - -- Send a message to the NUI side with the current state of the antennas and the fast mode - SendNUIMessage( { _type = "settingUpdate", antennaData = antennas, fast = fast } ) + for ant in UTIL:Values( { "front", "rear" } ) do + antennas[ant] = {} + antennas[ant].xmit = self:IsAntennaTransmitting( ant ) + antennas[ant].mode = self:GetAntennaMode( ant ) + antennas[ant].speedLocked = self:IsAntennaSpeedLocked( ant ) + antennas[ant].fast = self:ShouldFastBeDisplayed( ant ) + end + + -- Send a message to the NUI side with the current state of the antennas + SendNUIMessage( { _type = "settingUpdate", antennaData = antennas } ) end -- Returns if a main task can be performed @@ -795,6 +803,15 @@ function RADAR:DoesAntennaHaveValidFastData( ant ) return self:GetAntennaFastSpeed( ant ) ~= nil end +-- Returns if the fast label should be displayed +function RADAR:ShouldFastBeDisplayed( ant ) + if ( self:IsAntennaSpeedLocked( ant ) ) then + return self:GetAntennaLockedType( ant ) == 2 + else + return self:IsFastDisplayEnabled() + end +end + -- Returns if the given antenna has a locked speed function RADAR:IsAntennaSpeedLocked( ant ) return self.vars.antennas[ant].speedLocked @@ -806,12 +823,13 @@ function RADAR:SetAntennaSpeedIsLocked( ant, state ) end -- Sets a speed and direction to be locked in for the given antenna -function RADAR:SetAntennaSpeedLock( ant, speed, dir ) +function RADAR:SetAntennaSpeedLock( ant, speed, dir, lockType ) -- Check that the passed speed and direction are actually valid - if ( speed ~= nil and dir ~= nil ) then + if ( speed ~= nil and dir ~= nil and lockType ~= nil ) then -- Set the locked speed and direction to the passed values self.vars.antennas[ant].lockedSpeed = speed - self.vars.antennas[ant].lockedDir = dir + self.vars.antennas[ant].lockedDir = dir + self.vars.antennas[ant].lockedType = lockType -- Tell the system that a speed has been locked for the given antenna self:SetAntennaSpeedIsLocked( ant, true ) @@ -831,11 +849,17 @@ function RADAR:GetAntennaLockedDir( ant ) return self.vars.antennas[ant].lockedDir end +-- Returns the lock type for the given antenna +function RADAR:GetAntennaLockedType( ant ) + return self.vars.antennas[ant].lockedType +end + -- Resets the speed lock info to do with the given antenna function RADAR:ResetAntennaSpeedLock( ant ) -- Blank the locked speed and direction self.vars.antennas[ant].lockedSpeed = nil - self.vars.antennas[ant].lockedDir = nil + self.vars.antennas[ant].lockedDir = nil + self.vars.antennas[ant].lockedType = nil -- Set the locked state to false self:SetAntennaSpeedIsLocked( ant, false ) @@ -851,30 +875,33 @@ function RADAR:LockAntennaSpeed( ant ) if ( self:IsAntennaSpeedLocked( ant ) ) then self:ResetAntennaSpeedLock( ant ) else - -- Set up a temporary table with 2 nil values, this way if the system isn't able to get a speed or + -- Set up a temporary table with 3 nil values, this way if the system isn't able to get a speed or -- direction, the speed lock function won't work - local data = { nil, nil } + local data = { nil, nil, nil } -- As the lock system is based on which speed is displayed, we have to check if there is a speed in the -- fast box, if there is then we lock in the fast speed, otherwise we lock in the strongest speed if ( self:IsFastDisplayEnabled() and self:DoesAntennaHaveValidFastData( ant ) ) then data[1] = self:GetAntennaFastSpeed( ant ) data[2] = self:GetAntennaFastDir( ant ) + data[3] = 2 else data[1] = self:GetAntennaSpeed( ant ) data[2] = self:GetAntennaDir( ant ) + data[3] = 1 end -- Lock in the speed data for the antenna - self:SetAntennaSpeedLock( ant, data[1], data[2] ) + self:SetAntennaSpeedLock( ant, data[1], data[2], data[3] ) end -- Attempt for fixing speed lock bugging every now and then, doesn't seem to happen as often -- with this wait in place - Citizen.Wait( 10 ) + -- Citizen.Wait( 10 ) -- Send an NUI message to change the lock label, otherwise we'd have to wait until the next main loop SendNUIMessage( { _type = "antennaLock", ant = ant, state = self:IsAntennaSpeedLocked( ant ) } ) + SendNUIMessage( { _type = "antennaFast", ant = ant, state = self:ShouldFastBeDisplayed( ant ) } ) end end diff --git a/docs/version.txt b/docs/version.txt index 574b4d9..62d3a3b 100644 --- a/docs/version.txt +++ b/docs/version.txt @@ -1 +1 @@ -beta2a \ No newline at end of file +beta2b \ No newline at end of file diff --git a/nui/radar.js b/nui/radar.js index 8f40dda..823f431 100644 --- a/nui/radar.js +++ b/nui/radar.js @@ -210,7 +210,7 @@ function setAntennaFastMode( ant, state ) function setAntennaLock( ant, state ) { - setLight( ant, "fast", "lockLabel", state ); + setLight( ant, "fast", "lockLabel", state ); } function setAntennaDirs( ant, dir, fastDir ) @@ -289,13 +289,13 @@ function menu( optionText, option ) elements.patrolSpeed.html( option ); } -function settingUpdate( ants, fast ) +function settingUpdate( ants ) { for ( let ant in ants ) { setAntennaXmit( ant, ants[ant].xmit ); setAntennaMode( ant, ants[ant].mode ); - setAntennaFastMode( ant, fast ); + setAntennaFastMode( ant, ants[ant].fast ); setAntennaLock( ant, ants[ant].speedLocked ); } } @@ -432,13 +432,16 @@ window.addEventListener( "message", function( event ) { setAntennaMode( item.ant, item.mode ); break; case "antennaLock": - setAntennaLock( item.ant, item.state ); - break; + setAntennaLock( item.ant, item.state ); + break; + case "antennaFast": + setAntennaFastMode( item.ant, item.state ); + break; case "menu": menu( item.text, item.option ); break; case "settingUpdate": - settingUpdate( item.antennaData, item.fast ); + settingUpdate( item.antennaData ); break; case "audio": playAudio( item.name, item.vol );