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
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 )

View File

@@ -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;