Antenna modes now displayed, optimisations

This commit is contained in:
Dan
2019-11-29 18:53:07 +00:00
parent 57732159ce
commit 55d33a74df
2 changed files with 63 additions and 17 deletions

View File

@@ -399,10 +399,12 @@ function RADAR:GetAntennaMode( ant )
return self.vars.antennas[ant].mode return self.vars.antennas[ant].mode
end end
function RADAR:SetAntennaMode( ant, mode ) function RADAR:SetAntennaMode( ant, mode, cb )
if ( type( mode ) == "number" ) then 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 self.vars.antennas[ant].mode = mode
if ( cb ) then cb() end
end end
end end
end end
@@ -645,7 +647,7 @@ function RADAR:RunControlManager()
end end
-- 'Num8' key, toggles front antenna -- 'Num8' key, toggles front antenna
if ( IsDisabledControlJustPressed( 1, 111 ) ) then --[[ if ( IsDisabledControlJustPressed( 1, 111 ) ) then
self:ToggleAntenna( "front" ) self:ToggleAntenna( "front" )
UTIL:Notify( "Front antenna toggled." ) UTIL:Notify( "Front antenna toggled." )
end end
@@ -654,7 +656,7 @@ function RADAR:RunControlManager()
if ( IsDisabledControlJustPressed( 1, 112 ) ) then if ( IsDisabledControlJustPressed( 1, 112 ) ) then
self:ToggleAntenna( "rear" ) self:ToggleAntenna( "rear" )
UTIL:Notify( "Rear antenna toggled." ) UTIL:Notify( "Rear antenna toggled." )
end end ]]
end end
@@ -666,12 +668,14 @@ RegisterNUICallback( "closeRemote", function( data )
end ) end )
RegisterNUICallback( "setAntennaMode", function( data ) 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 ) end )
RegisterNUICallback( "toggleAntenna", function( data ) RegisterNUICallback( "toggleAntenna", function( data )
RADAR:ToggleAntenna( data.value, function() 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 )
end ) end )

View File

@@ -23,6 +23,7 @@ const elements =
antennas: { antennas: {
front: { front: {
targetSpeed: $( "#frontSpeed" ), targetSpeed: $( "#frontSpeed" ),
fastSpeed: $( "#frontFastSpeed" ),
dirs: { dirs: {
fwd: $( "#frontDirAway" ), fwd: $( "#frontDirAway" ),
@@ -38,7 +39,6 @@ const elements =
}, },
fast: { fast: {
speed: $( "#frontFastSpeed" ),
fastLabel: $( "#frontFastLabel" ), fastLabel: $( "#frontFastLabel" ),
lockLabel: $( "#frontFastLockLabel" ) lockLabel: $( "#frontFastLockLabel" )
} }
@@ -46,6 +46,7 @@ const elements =
rear: { rear: {
targetSpeed: $( "#rearSpeed" ), targetSpeed: $( "#rearSpeed" ),
fastSpeed: $( "#rearFastSpeed" ),
dirs: { dirs: {
fwd: $( "#rearDirTowards" ), fwd: $( "#rearDirTowards" ),
@@ -61,7 +62,6 @@ const elements =
}, },
fast: { fast: {
speed: $( "#rearFastSpeed" ),
fastLabel: $( "#rearFastLabel" ), fastLabel: $( "#rearFastLabel" ),
lockLabel: $( "#rearFastLockLabel" ) lockLabel: $( "#rearFastLockLabel" )
} }
@@ -92,7 +92,7 @@ const remoteButtons =
} }
} }
const antennaModes = const modes =
{ {
off: 0, off: 0,
same: 1, same: 1,
@@ -113,14 +113,44 @@ elements.remote.hide();
// Create the onclick event for the toggle display button // Create the onclick event for the toggle display button
remoteButtons.toggleDisplay.click( function() { remoteButtons.toggleDisplay.click( function() {
elements.radar.fadeToggle(); toggleRadar();
} ) } )
function toggleRadar()
{
elements.radar.fadeToggle();
}
function toggleRemote() function toggleRemote()
{ {
elements.remote.toggle(); 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 ) function setLight( ant, cat, item, state )
{ {
let obj = elements.antennas[ant][cat][item]; 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 ); setLight( ant, "modes", "xmit", state );
if ( !state ) { if ( !state ) {
elements.antennas[ant].targetSpeed.html( "¦¦¦" ); clearAntenna( ant );
elements.antennas[ant].fast.speed.html( "HLd" ); elements.antennas[ant].fastSpeed.html( "HLd" );
} else { } 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 ) function setAntennaDirs( ant, dir, fastDir )
{ {
setLight( ant, "dirs", "fwd", dir == dirs.closing ); setLight( ant, "dirs", "fwd", dir == dirs.closing );
@@ -160,8 +197,10 @@ function updateDisplays( ps, ants )
for ( let ant in ants ) for ( let ant in ants )
{ {
if ( ants[ant] != null ) { if ( ants[ant] != null ) {
elements.antennas[ant].targetSpeed.html( ants[ant][0].speed ); let e = elements.antennas[ant];
elements.antennas[ant].fast.speed.html( ants[ant][1].speed );
e.targetSpeed.html( ants[ant][0].speed );
e.fastSpeed.html( ants[ant][1].speed );
setAntennaDirs( ant, ants[ant][0].dir, ants[ant][1].dir ); setAntennaDirs( ant, ants[ant][0].dir, ants[ant][1].dir );
} }
@@ -216,7 +255,10 @@ window.addEventListener( "message", function( event ) {
updateDisplays( item.speed, item.antennas ); updateDisplays( item.speed, item.antennas );
break; break;
case "antennaXmit": 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; break;
default: default:
break; break;