From 4b316e7c6278da30c2c4383bfd863a8aa9667577 Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 3 Dec 2019 22:10:29 +0000 Subject: [PATCH] Radar display now hides when needed --- cl_radar.lua | 62 +++++++++++++++++++++++++++++++++++++++++++++++--- nui/radar.html | 2 +- nui/radar.js | 20 ++++++++-------- 3 files changed, 70 insertions(+), 14 deletions(-) diff --git a/cl_radar.lua b/cl_radar.lua index e0f347c..cd21435 100644 --- a/cl_radar.lua +++ b/cl_radar.lua @@ -43,10 +43,16 @@ PLY.vehClassValid = false ------------------------------------------------------------------------]]-- RADAR.vars = { + -- The display state + displayed = false, + -- The radar's power power = false, poweringUp = false, + -- Whether the radar is hidden or not + hidden = false, + -- These are the settings that are used in the operator menu settings = { ["fastDisplay"] = true, @@ -188,6 +194,15 @@ function RADAR:TogglePower() end end +function RADAR:ToggleDisplayState() + self.vars.displayed = not self.vars.displayed + SendNUIMessage( { _type = "toggleDisplay" } ) +end + +function RADAR:GetDisplayState() + return self.vars.displayed +end + function RADAR:SetSettingValue( setting, value ) if ( value ~= nil ) then self.vars.settings[setting] = value @@ -229,6 +244,21 @@ function RADAR:SetThreadWaitTime( time ) self.vars.threadWaitTime = time end +function RADAR:SetDisplayHidden( state ) + self.vars.hidden = state +end + +function RADAR:GetDisplayHidden() + return self.vars.hidden +end + +function RADAR:OpenRemote() + if ( not IsPauseMenuActive() ) then + SendNUIMessage( { _type = "openRemote" } ) + SetNuiFocus( true, true ) + end +end + --[[------------------------------------------------------------------------ Radar menu functions @@ -811,8 +841,7 @@ function RADAR:RunControlManager() end if ( IsDisabledControlJustPressed( 1, 166 ) ) then - SendNUIMessage( { _type = "openRemote" } ) - SetNuiFocus( true, true ) + self:OpenRemote() end if ( IsDisabledControlJustPressed( 1, 117 ) ) then @@ -840,6 +869,10 @@ end --[[------------------------------------------------------------------------ NUI callback ------------------------------------------------------------------------]]-- +RegisterNUICallback( "toggleDisplay", function() + RADAR:ToggleDisplayState() +end ) + RegisterNUICallback( "togglePower", function() RADAR:TogglePower() end ) @@ -887,7 +920,7 @@ end ) --[[------------------------------------------------------------------------ - Main function + Main threads ------------------------------------------------------------------------]]-- function RADAR:RunDynamicThreadWaitCheck() local speed = self:GetPatrolSpeed() @@ -1021,10 +1054,33 @@ Citizen.CreateThread( function() PLY.inDriverSeat = GetPedInVehicleSeat( PLY.veh, -1 ) == PLY.ped PLY.vehClassValid = GetVehicleClass( PLY.veh ) == 18 + print( tostring( PLY.ped ) ) + print( tostring( PLY.veh ) ) + print( tostring( PLY.inDriverSeat ) ) + print( tostring( PLY.vehClassValid ) ) + Citizen.Wait( 500 ) end end ) +function RADAR:RunDisplayValidationCheck() + if ( ( ( PLY.veh == 0 or ( PLY.veh ~= 0 and not PLY.vehClassValid ) ) and self:GetDisplayState() and not self:GetDisplayHidden() ) or IsPauseMenuActive() and self:GetDisplayState() ) then + self:SetDisplayHidden( true ) + SendNUIMessage( { _type = "hideDisplay", state = true } ) + elseif ( PLY.veh ~= 0 and PLY.vehClassValid and self:GetDisplayState() and self:GetDisplayHidden() ) then + self:SetDisplayHidden( false ) + SendNUIMessage( { _type = "hideDisplay", state = false } ) + end +end + +Citizen.CreateThread( function() + while ( true ) do + RADAR:RunDisplayValidationCheck() + + Citizen.Wait( 0 ) + end +end ) + -- Update the vehicle pool every 3 seconds Citizen.CreateThread( function() while ( true ) do diff --git a/nui/radar.html b/nui/radar.html index 861c0c2..4a62622 100644 --- a/nui/radar.html +++ b/nui/radar.html @@ -112,7 +112,7 @@
- +

FRONT ANTENNA

diff --git a/nui/radar.js b/nui/radar.js index e5027c1..95e6014 100644 --- a/nui/radar.js +++ b/nui/radar.js @@ -95,21 +95,17 @@ const dirs = } // Hide the radar and remote, this way we can bypass setting a style of 'display: none;' in the HTML file -// elements.radar.hide(); +elements.radar.hide(); elements.remote.hide(); -// Create the onclick event for the toggle display button -elements.toggleDisplay.click( function() { - toggleRadar(); -} ) - elements.pwrBtn.click( function() { togglePower(); } ) -function toggleRadar() +function toggleRadar( state ) { - elements.radar.fadeToggle(); + // state ? elements.radar.fadeIn() : elements.radar.fadeOut(); + elements.radar.fadeToggle(); } function toggleRemote() @@ -127,10 +123,8 @@ function setLight( ant, cat, item, state ) let obj = elements.antennas[ant][cat][item]; if ( state ) { - // if ( cat == "dirs" ) { obj.addClass( "active_arrow" ) } else { obj.addClass( "active" ) }; cat == "dirs" ? obj.addClass( "active_arrow" ) : obj.addClass( "active" ); } else { - // if ( cat == "dirs" ) { obj.removeClass( "active_arrow" ) } else { obj.removeClass( "active" ) }; cat == "dirs" ? obj.removeClass( "active_arrow" ) : obj.removeClass( "active" ); } } @@ -349,6 +343,12 @@ window.addEventListener( "message", function( event ) { case "openRemote": toggleRemote(); break; + case "toggleDisplay": + toggleRadar( item.state ); + break; + case "hideDisplay": + item.state ? elements.radar.fadeOut() : elements.radar.fadeIn(); + break; case "radarPower": radarPower( item.state ); break;