mirror of
https://github.com/Michatec/wk_wars2x.git
synced 2026-04-01 08:26:27 +02:00
Speeds can now be locked
This commit is contained in:
153
cl_radar.lua
153
cl_radar.lua
@@ -84,27 +84,25 @@ RADAR.vars =
|
|||||||
[ "front" ] = {
|
[ "front" ] = {
|
||||||
xmit = false, -- Whether the antenna is on or off
|
xmit = false, -- Whether the antenna is on or off
|
||||||
mode = 0, -- Current antenna mode, 0 = none, 1 = same, 2 = opp, 3 = same and opp
|
mode = 0, -- Current antenna mode, 0 = none, 1 = same, 2 = opp, 3 = same and opp
|
||||||
speedLocked = false,
|
speed = 0, -- Speed of the vehicle caught by the front antenna
|
||||||
lockedSpeed = 0,
|
|
||||||
--[[ speed = 0, -- Speed of the vehicle caught by the front antenna
|
|
||||||
dir = nil, -- Direction the caught vehicle is going, 0 = towards, 1 = away
|
dir = nil, -- Direction the caught vehicle is going, 0 = towards, 1 = away
|
||||||
fastMode = 1, -- Current fast mode, 1 = polling, 2 = lock on at first fast vehicle
|
|
||||||
fastSpeed = 0, -- Speed of the fastest vehicle caught by the front antenna
|
fastSpeed = 0, -- Speed of the fastest vehicle caught by the front antenna
|
||||||
fastDir = nil, -- Direction the fastest vehicle is going, 0 = towards, 1 = away
|
fastDir = nil, -- Direction the fastest vehicle is going, 0 = towards, 1 = away
|
||||||
fastLocked = false -- Whether the fast speed is locked or not ]]
|
speedLocked = false,
|
||||||
|
lockedSpeed = 0,
|
||||||
|
lockedDir = 0
|
||||||
},
|
},
|
||||||
|
|
||||||
[ "rear" ] = {
|
[ "rear" ] = {
|
||||||
xmit = false, -- Whether the antenna is on or off
|
xmit = false, -- Whether the antenna is on or off
|
||||||
mode = 0, -- Current antenna mode, 0 = none, 1 = same, 2 = opp, 3 = same and opp
|
mode = 0, -- Current antenna mode, 0 = none, 1 = same, 2 = opp, 3 = same and opp
|
||||||
speedLocked = false,
|
speed = 0, -- Speed of the vehicle caught by the front antenna
|
||||||
lockedSpeed = 0,
|
|
||||||
--[[ speed = 0, -- Speed of the vehicle caught by the front antenna
|
|
||||||
dir = nil, -- Direction the caught vehicle is going, 0 = towards, 1 = away
|
dir = nil, -- Direction the caught vehicle is going, 0 = towards, 1 = away
|
||||||
fastMode = 1, -- Current fast mode, 1 = polling, 2 = lock on at first fast vehicle
|
|
||||||
fastSpeed = 0, -- Speed of the fastest vehicle caught by the front antenna
|
fastSpeed = 0, -- Speed of the fastest vehicle caught by the front antenna
|
||||||
fastDir = nil, -- Direction the fastest vehicle is going, 0 = towards, 1 = away
|
fastDir = nil, -- Direction the fastest vehicle is going, 0 = towards, 1 = away
|
||||||
fastLocked = false -- Whether the fast speed is locked or not ]]
|
speedLocked = false,
|
||||||
|
lockedSpeed = 0,
|
||||||
|
lockedDir = 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -196,10 +194,6 @@ function RADAR:TogglePower()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:IsFastDisplayEnabled()
|
|
||||||
return self.vars.settings.fastDisplay
|
|
||||||
end
|
|
||||||
|
|
||||||
function RADAR:SetSettingValue( setting, value )
|
function RADAR:SetSettingValue( setting, value )
|
||||||
if ( value ~= nil ) then
|
if ( value ~= nil ) then
|
||||||
self.vars.settings[setting] = value
|
self.vars.settings[setting] = value
|
||||||
@@ -214,13 +208,17 @@ function RADAR:GetSettingValue( setting )
|
|||||||
return self.vars.settings[setting]
|
return self.vars.settings[setting]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function RADAR:IsFastDisplayEnabled()
|
||||||
|
return self.vars.settings["fastDisplay"]
|
||||||
|
end
|
||||||
|
|
||||||
function RADAR:IsEitherAntennaOn()
|
function RADAR:IsEitherAntennaOn()
|
||||||
return self:IsAntennaTransmitting( "front" ) or self:IsAntennaTransmitting( "rear" )
|
return self:IsAntennaTransmitting( "front" ) or self:IsAntennaTransmitting( "rear" )
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:SendSettingUpdate()
|
function RADAR:SendSettingUpdate()
|
||||||
local antennas = self.vars.antennas
|
local antennas = self.vars.antennas
|
||||||
local fast = self.vars.settings.fastDisplay
|
local fast = self:IsFastDisplayEnabled()
|
||||||
|
|
||||||
SendNUIMessage( { _type = "settingUpdate", antennaData = antennas, fast = fast } )
|
SendNUIMessage( { _type = "settingUpdate", antennaData = antennas, fast = fast } )
|
||||||
end
|
end
|
||||||
@@ -545,59 +543,89 @@ function RADAR:SetAntennaMode( ant, mode, cb )
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:SetAntennaLockedSpeed( ant, speed )
|
function RADAR:GetAntennaSpeed( ant )
|
||||||
if ( type( speed ) == "number" ) then
|
return self.vars.antennas[ant].speed
|
||||||
if ( speed >= 0 and speed <= 999 ) then
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[ function RADAR:SetAntennaSpeed( ant, speed )
|
function RADAR:SetAntennaSpeed( ant, speed )
|
||||||
if ( type( speed ) == "number" ) then
|
|
||||||
if ( speed >= 0 and speed <= 999 ) then
|
|
||||||
self.vars.antennas[ant].speed = speed
|
self.vars.antennas[ant].speed = speed
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
function RADAR:GetAntennaDir( ant )
|
||||||
|
return self.vars.antennas[ant].dir
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:SetAntennaDir( ant, dir )
|
function RADAR:SetAntennaDir( ant, dir )
|
||||||
if ( type( dir ) == "number" ) then
|
|
||||||
if ( dir == 0 or dir == 1 ) then
|
|
||||||
self.vars.antennas[ant].dir = dir
|
self.vars.antennas[ant].dir = dir
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function RADAR:SetAntennaFastMode( ant, mode )
|
function RADAR:GetAntennaFastSpeed( ant )
|
||||||
if ( type( mode ) == "number" ) then
|
return self.vars.antennas[ant].fastSpeed
|
||||||
if ( mode == 1 or mode == 2 ) then
|
|
||||||
self.vars.antennas[ant].fastMode = mode
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:SetAntennaFastSpeed( ant, speed )
|
function RADAR:SetAntennaFastSpeed( ant, speed )
|
||||||
if ( type( speed ) == "number" ) then
|
|
||||||
if ( speed >= 0 and speed <= 999 ) then
|
|
||||||
self.vars.antennas[ant].fastSpeed = speed
|
self.vars.antennas[ant].fastSpeed = speed
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
function RADAR:GetAntennaFastDir( ant )
|
||||||
|
return self.vars.antennas[ant].fastDir
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:SetAntennaFastDir( ant, dir )
|
function RADAR:SetAntennaFastDir( ant, dir )
|
||||||
if ( type( dir ) == "number" ) then
|
|
||||||
if ( dir == 0 or dir == 1 ) then
|
|
||||||
self.vars.antennas[ant].fastDir = dir
|
self.vars.antennas[ant].fastDir = dir
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function RADAR:DoesAntennaHaveValidData( ant )
|
||||||
|
return self:GetAntennaSpeed( ant ) ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function RADAR:DoesAntennaHaveValidFastData( ant )
|
||||||
|
return self:GetAntennaFastSpeed( ant ) ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function RADAR:IsAntennaSpeedLocked( ant )
|
||||||
|
return self.vars.antennas[ant].speedLocked
|
||||||
|
end
|
||||||
|
|
||||||
|
function RADAR:SetAntennaSpeedIsLocked( ant, state )
|
||||||
|
self.vars.antennas[ant].speedLocked = state
|
||||||
|
end
|
||||||
|
|
||||||
|
function RADAR:SetAntennaSpeedLock( ant, speed, dir )
|
||||||
|
if ( speed ~= nil and dir ~= nil ) then
|
||||||
|
self.vars.antennas[ant].lockedSpeed = speed
|
||||||
|
self.vars.antennas[ant].lockedDir = dir
|
||||||
|
|
||||||
|
self:SetAntennaSpeedIsLocked( ant, true )
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function RADAR:SetAntennaFastLock( ant, state )
|
function RADAR:ResetAntennaSpeedLock( ant )
|
||||||
if ( type( state ) == "boolean" ) then
|
self.vars.antennas[ant].lockedSpeed = nil
|
||||||
self.vars.antennas[ant].fastLocked = state
|
self.vars.antennas[ant].lockedDir = nil
|
||||||
|
|
||||||
|
self:SetAntennaSpeedIsLocked( ant, false )
|
||||||
|
end
|
||||||
|
|
||||||
|
function RADAR:LockAntennaSpeed( ant )
|
||||||
|
if ( self:IsAntennaSpeedLocked( ant ) ) then
|
||||||
|
self:ResetAntennaSpeedLock( ant )
|
||||||
|
else
|
||||||
|
local data = { nil, nil }
|
||||||
|
|
||||||
|
if ( self:IsFastDisplayEnabled() and self:DoesAntennaHaveValidFastData( ant ) ) then
|
||||||
|
data[1] = self:GetAntennaFastSpeed( ant )
|
||||||
|
data[2] = self:GetAntennaFastDir( ant )
|
||||||
|
elseif ( not self:IsFastDisplayEnabled() and self:DoesAntennaHaveValidData( ant ) ) then
|
||||||
|
data[1] = self:GetAntennaSpeed( ant )
|
||||||
|
data[2] = self:GetAntennaDir( ant )
|
||||||
|
end
|
||||||
|
|
||||||
|
self:SetAntennaSpeedLock( ant, data[1], data[2] )
|
||||||
|
end
|
||||||
|
|
||||||
|
SendNUIMessage( { _type = "antennaLock", ant = ant, state = self:IsAntennaSpeedLocked( ant ) } )
|
||||||
end
|
end
|
||||||
end ]]
|
|
||||||
|
|
||||||
function RADAR:ResetAntenna( ant )
|
function RADAR:ResetAntenna( ant )
|
||||||
-- Overwrite default behaviour, this is because when the system is turned off, the temporary memory is
|
-- Overwrite default behaviour, this is because when the system is turned off, the temporary memory is
|
||||||
@@ -801,17 +829,15 @@ function RADAR:RunControlManager()
|
|||||||
UTIL:Notify( "Fast display toggled." )
|
UTIL:Notify( "Fast display toggled." )
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 'Num8' key, toggles front antenna
|
-- 'Num8' key, locks speed from front antenna
|
||||||
--[[ if ( IsDisabledControlJustPressed( 1, 111 ) ) then
|
if ( IsDisabledControlJustPressed( 1, 111 ) ) then
|
||||||
self:ToggleAntenna( "front" )
|
self:LockAntennaSpeed( "front" )
|
||||||
UTIL:Notify( "Front antenna toggled." )
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- 'Num5' key, toggles rear antenna
|
-- 'Num5' key, locks speed from rear antenna
|
||||||
if ( IsDisabledControlJustPressed( 1, 112 ) ) then
|
if ( IsDisabledControlJustPressed( 1, 112 ) ) then
|
||||||
self:ToggleAntenna( "rear" )
|
self:LockAntennaSpeed( "rear" )
|
||||||
UTIL:Notify( "Rear antenna toggled." )
|
end
|
||||||
end ]]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -916,6 +942,10 @@ function RADAR:Main()
|
|||||||
for i = 1, 2 do
|
for i = 1, 2 do
|
||||||
data.antennas[ant][i] = { speed = "¦¦¦", dir = 0 }
|
data.antennas[ant][i] = { speed = "¦¦¦", dir = 0 }
|
||||||
|
|
||||||
|
if ( i == 2 and self:IsAntennaSpeedLocked( ant ) ) then
|
||||||
|
data.antennas[ant][i].speed = self.vars.antennas[ant].lockedSpeed
|
||||||
|
data.antennas[ant][i].dir = self.vars.antennas[ant].lockedDir
|
||||||
|
else
|
||||||
-- The vehicle data exists for this slot
|
-- The vehicle data exists for this slot
|
||||||
if ( av[ant][i] ~= nil ) then
|
if ( av[ant][i] ~= nil ) then
|
||||||
-- We already have the vehicle speed as we needed it earlier on for filtering
|
-- We already have the vehicle speed as we needed it earlier on for filtering
|
||||||
@@ -925,6 +955,25 @@ function RADAR:Main()
|
|||||||
local ownH = UTIL:Round( GetEntityHeading( PLY.veh ), 0 )
|
local ownH = UTIL:Round( GetEntityHeading( PLY.veh ), 0 )
|
||||||
local tarH = UTIL:Round( GetEntityHeading( av[ant][i].veh ), 0 )
|
local tarH = UTIL:Round( GetEntityHeading( av[ant][i].veh ), 0 )
|
||||||
data.antennas[ant][i].dir = UTIL:GetEntityRelativeDirection( ownH, tarH )
|
data.antennas[ant][i].dir = UTIL:GetEntityRelativeDirection( ownH, tarH )
|
||||||
|
|
||||||
|
-- Set the internal antenna data as this actual dataset is valid
|
||||||
|
if ( i % 2 == 0 ) then
|
||||||
|
self:SetAntennaFastSpeed( ant, data.antennas[ant][i].speed )
|
||||||
|
self:SetAntennaFastDir( ant, data.antennas[ant][i].dir )
|
||||||
|
else
|
||||||
|
self:SetAntennaSpeed( ant, data.antennas[ant][i].speed )
|
||||||
|
self:SetAntennaDir( ant, data.antennas[ant][i].dir )
|
||||||
|
end
|
||||||
|
else
|
||||||
|
-- If the active vehicle is not valid, we reset the internal data
|
||||||
|
if ( i % 2 == 0 ) then
|
||||||
|
self:SetAntennaFastSpeed( ant, nil )
|
||||||
|
self:SetAntennaFastDir( ant, nil )
|
||||||
|
else
|
||||||
|
self:SetAntennaSpeed( ant, nil )
|
||||||
|
self:SetAntennaDir( ant, nil )
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -221,6 +221,11 @@ function setAntennaFastMode( ant, state )
|
|||||||
setLight( ant, "fast", "fastLabel", state );
|
setLight( ant, "fast", "fastLabel", state );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setAntennaLock( ant, state )
|
||||||
|
{
|
||||||
|
setLight( ant, "fast", "lockLabel", state );
|
||||||
|
}
|
||||||
|
|
||||||
function setAntennaDirs( ant, dir, fastDir )
|
function setAntennaDirs( ant, dir, fastDir )
|
||||||
{
|
{
|
||||||
setLight( ant, "dirs", "fwd", dir == dirs.closing );
|
setLight( ant, "dirs", "fwd", dir == dirs.closing );
|
||||||
@@ -304,6 +309,7 @@ function settingUpdate( ants, fast )
|
|||||||
setAntennaXmit( ant, ants[ant].xmit );
|
setAntennaXmit( ant, ants[ant].xmit );
|
||||||
setAntennaMode( ant, ants[ant].mode );
|
setAntennaMode( ant, ants[ant].mode );
|
||||||
setAntennaFastMode( ant, fast );
|
setAntennaFastMode( ant, fast );
|
||||||
|
setAntennaLock( ant, ants[ant].speedLocked );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -374,6 +380,9 @@ window.addEventListener( "message", function( event ) {
|
|||||||
case "antennaMode":
|
case "antennaMode":
|
||||||
setAntennaMode( item.ant, item.mode );
|
setAntennaMode( item.ant, item.mode );
|
||||||
break;
|
break;
|
||||||
|
case "antennaLock":
|
||||||
|
setAntennaLock( item.ant, item.state );
|
||||||
|
break;
|
||||||
case "menu":
|
case "menu":
|
||||||
menu( item.text, item.option );
|
menu( item.text, item.option );
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user