From 55d33a74df6076b066d3d4993f77050b88de6910 Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 29 Nov 2019 18:53:07 +0000 Subject: [PATCH] Antenna modes now displayed, optimisations --- cl_radar.lua | 16 ++++++++----- nui/radar.js | 64 +++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 63 insertions(+), 17 deletions(-) diff --git a/cl_radar.lua b/cl_radar.lua index eaa67ba..9e195ad 100644 --- a/cl_radar.lua +++ b/cl_radar.lua @@ -399,10 +399,12 @@ function RADAR:GetAntennaMode( ant ) return self.vars.antennas[ant].mode end -function RADAR:SetAntennaMode( ant, mode ) +function RADAR:SetAntennaMode( ant, mode, cb ) if ( type( mode ) == "number" ) then - if ( mode >= 0 and mode <= 3 ) then + if ( mode >= 0 and mode <= 3 and self:IsAntennaTransmitting( ant ) ) then self.vars.antennas[ant].mode = mode + + if ( cb ) then cb() end end end end @@ -645,7 +647,7 @@ function RADAR:RunControlManager() end -- 'Num8' key, toggles front antenna - if ( IsDisabledControlJustPressed( 1, 111 ) ) then + --[[ if ( IsDisabledControlJustPressed( 1, 111 ) ) then self:ToggleAntenna( "front" ) UTIL:Notify( "Front antenna toggled." ) end @@ -654,7 +656,7 @@ function RADAR:RunControlManager() if ( IsDisabledControlJustPressed( 1, 112 ) ) then self:ToggleAntenna( "rear" ) UTIL:Notify( "Rear antenna toggled." ) - end + end ]] end @@ -666,12 +668,14 @@ RegisterNUICallback( "closeRemote", function( data ) end ) RegisterNUICallback( "setAntennaMode", function( data ) - RADAR:SetAntennaMode( data.value, tonumber( data.mode ) ) + RADAR:SetAntennaMode( data.value, tonumber( data.mode ), function() + SendNUIMessage( { _type = "antennaMode", ant = data.value, mode = tonumber( data.mode ) } ) + end ) end ) RegisterNUICallback( "toggleAntenna", function( data ) RADAR:ToggleAntenna( data.value, function() - SendNUIMessage( { _type = "antennaXmit", ant = data.value, on = RADAR:IsAntennaTransmitting( data.value ) } ) + SendNUIMessage( { _type = "antennaXmit", ant = data.value, on = RADAR:IsAntennaTransmitting( data.value ), mode = RADAR:GetAntennaMode( data.value ) } ) end ) end ) diff --git a/nui/radar.js b/nui/radar.js index e82b5e9..18e491b 100644 --- a/nui/radar.js +++ b/nui/radar.js @@ -23,6 +23,7 @@ const elements = antennas: { front: { targetSpeed: $( "#frontSpeed" ), + fastSpeed: $( "#frontFastSpeed" ), dirs: { fwd: $( "#frontDirAway" ), @@ -38,7 +39,6 @@ const elements = }, fast: { - speed: $( "#frontFastSpeed" ), fastLabel: $( "#frontFastLabel" ), lockLabel: $( "#frontFastLockLabel" ) } @@ -46,6 +46,7 @@ const elements = rear: { targetSpeed: $( "#rearSpeed" ), + fastSpeed: $( "#rearFastSpeed" ), dirs: { fwd: $( "#rearDirTowards" ), @@ -61,7 +62,6 @@ const elements = }, fast: { - speed: $( "#rearFastSpeed" ), fastLabel: $( "#rearFastLabel" ), lockLabel: $( "#rearFastLockLabel" ) } @@ -92,7 +92,7 @@ const remoteButtons = } } -const antennaModes = +const modes = { off: 0, same: 1, @@ -113,14 +113,44 @@ elements.remote.hide(); // Create the onclick event for the toggle display button remoteButtons.toggleDisplay.click( function() { - elements.radar.fadeToggle(); + toggleRadar(); } ) +function toggleRadar() +{ + elements.radar.fadeToggle(); +} + function toggleRemote() { elements.remote.toggle(); } +function clearModes( ant ) +{ + for ( let i in elements.antennas[ant].modes ) + { + elements.antennas[ant].modes[i].removeClass( "active" ); + } +} + +function clearDirs( ant ) +{ + for ( let i in elements.antennas[ant].dirs ) + { + elements.antennas[ant].dirs[i].removeClass( "active_arrow" ); + } +} + +function clearAntenna( ant ) +{ + clearModes( ant ); + clearDirs( ant ); + + elements.antennas[ant].targetSpeed.html( "¦¦¦" ); + elements.antennas[ant].fastSpeed.html( "¦¦¦" ); +} + function setLight( ant, cat, item, state ) { let obj = elements.antennas[ant][cat][item]; @@ -132,18 +162,25 @@ function setLight( ant, cat, item, state ) } } -function setAntennaXmit( ant, state ) +function setAntennaXmit( ant, state, mode ) { setLight( ant, "modes", "xmit", state ); if ( !state ) { - elements.antennas[ant].targetSpeed.html( "¦¦¦" ); - elements.antennas[ant].fast.speed.html( "HLd" ); + clearAntenna( ant ); + elements.antennas[ant].fastSpeed.html( "HLd" ); } else { - elements.antennas[ant].fast.speed.html( "¦¦¦" ); + elements.antennas[ant].fastSpeed.html( "¦¦¦" ); + setAntennaMode( ant, mode ); } } +function setAntennaMode( ant, mode ) +{ + setLight( ant, "modes", "same", mode == modes.same ); + setLight( ant, "modes", "opp", mode == modes.opp ); +} + function setAntennaDirs( ant, dir, fastDir ) { setLight( ant, "dirs", "fwd", dir == dirs.closing ); @@ -160,8 +197,10 @@ function updateDisplays( ps, ants ) for ( let ant in ants ) { if ( ants[ant] != null ) { - elements.antennas[ant].targetSpeed.html( ants[ant][0].speed ); - elements.antennas[ant].fast.speed.html( ants[ant][1].speed ); + let e = elements.antennas[ant]; + + e.targetSpeed.html( ants[ant][0].speed ); + e.fastSpeed.html( ants[ant][1].speed ); setAntennaDirs( ant, ants[ant][0].dir, ants[ant][1].dir ); } @@ -216,7 +255,10 @@ window.addEventListener( "message", function( event ) { updateDisplays( item.speed, item.antennas ); break; case "antennaXmit": - setAntennaXmit( item.ant, item.on ); + setAntennaXmit( item.ant, item.on, item.on ? item.mode : 0 ); + break; + case "antennaMode": + setAntennaMode( item.ant, item.mode ); break; default: break;