refactor: cleanup sync backup code

This commit is contained in:
Dan
2021-03-17 13:53:59 +00:00
parent 6864cd4cbc
commit 59dd6c13ae

View File

@@ -32,6 +32,24 @@
DecorRegister( "wk_wars2x_sync_remoteOpen", 2 ) DecorRegister( "wk_wars2x_sync_remoteOpen", 2 )
local function RestoreData( obj, getFunc, setFunc, setBackupFunc, key )
if ( key ~= nil ) then
local data = getFunc( obj, key )
if ( data ~= nil ) then
setFunc( obj, key, data )
setBackupFunc( obj, key, nil )
end
else
local data = getFunc( obj )
if ( data ~= nil ) then
setFunc( obj, data )
setBackupFunc( obj, nil )
end
end
end
--[[---------------------------------------------------------------------------------- --[[----------------------------------------------------------------------------------
Plate reader sync variables and functions Plate reader sync variables and functions
@@ -57,13 +75,8 @@ function READER:SetReaderCamData( cam, data )
end end
end end
function READER:GetBackupReaderData( cam ) function READER:GetBackupReaderData( cam ) return self.backupData.cams[cam] end
return self.backupData.cams[cam] function READER:SetBackupReaderData( cam, data ) self.backupData.cams[cam] = data end
end
function READER:SetBackupReaderData( cam, data )
self.backupData.cams[cam] = data
end
function READER:IsThereBackupData() function READER:IsThereBackupData()
return self:GetBackupReaderData( "front" ) ~= nil or self:GetBackupReaderData( "rear" ) ~= nil return self:GetBackupReaderData( "front" ) ~= nil or self:GetBackupReaderData( "rear" ) ~= nil
@@ -88,25 +101,16 @@ function READER:LoadDataFromDriver( data )
-- Set the camera data -- Set the camera data
for cam in UTIL:Values( { "front", "rear" } ) do for cam in UTIL:Values( { "front", "rear" } ) do
self:SetReaderCamData( cam, data[cam] ) self:SetReaderCamData( cam, data[cam] )
self:ForceNUIUpdate( true )
end end
self:ForceNUIUpdate( true )
end ) end )
end end
function READER:RestoreFromBackup() function READER:RestoreFromBackup()
-- Iterate through the cameras and restore their backups -- Iterate through the cameras and restore their backups
for cam in UTIL:Values( { "front", "rear" } ) do for cam in UTIL:Values( { "front", "rear" } ) do
-- Get the camera backup data RestoreData( READER, READER.GetBackupReaderData, READER.SetReaderCamData, READER.SetBackupReaderData, cam )
local camData = self:GetBackupReaderData( cam )
-- Restore the camera data
if ( camData ~= nil ) then
self:SetReaderCamData( cam, camData )
-- Clear the backup
self:SetBackupReaderData( cam, nil )
end
end end
self:ForceNUIUpdate( true ) self:ForceNUIUpdate( true )
@@ -135,9 +139,7 @@ function RADAR:GetRadarDataForSync()
} }
end end
function RADAR:GetOMTableData() function RADAR:GetOMTableData() return self.vars.settings end
return self.vars.settings
end
-- Sets the operator menu settings table within the radar's main variables table -- Sets the operator menu settings table within the radar's main variables table
function RADAR:SetOMTableData( data ) function RADAR:SetOMTableData( data )
@@ -154,29 +156,14 @@ function RADAR:SetAntennaTableData( ant, data )
end end
end end
function RADAR:GetBackupPowerState() function RADAR:GetBackupPowerState() return self.backupData.power end
return self.backupData.power function RADAR:SetBackupPowerState( state ) self.backupData.power = state end
end
function RADAR:GetBackupOMData() function RADAR:GetBackupOMData() return self.backupData.om end
return self.backupData.om function RADAR:SetBackupOMData( data ) self.backupData.om = data end
end
function RADAR:GetBackupAntennaData( ant ) function RADAR:GetBackupAntennaData( ant ) return self.backupData.antennas[ant] end
return self.backupData.antennas[ant] function RADAR:SetBackupAntennaData( ant, data ) self.backupData.antennas[ant] = data end
end
function RADAR:SetBackupPowerState( state )
self.backupData.power = state
end
function RADAR:SetBackupOMData( data )
self.backupData.om = data
end
function RADAR:SetBackupAntennaData( ant, data )
self.backupData.antennas[ant] = data
end
function RADAR:IsThereBackupData() function RADAR:IsThereBackupData()
return self:GetBackupOMData() ~= nil or self:GetBackupAntennaData( "front" ) ~= nil or self:GetBackupAntennaData( "rear" ) ~= nil return self:GetBackupOMData() ~= nil or self:GetBackupAntennaData( "front" ) ~= nil or self:GetBackupAntennaData( "rear" ) ~= nil
@@ -232,37 +219,20 @@ end
-- Restores the local player's operator menu and antenna data -- Restores the local player's operator menu and antenna data
function RADAR:RestoreFromBackup() function RADAR:RestoreFromBackup()
-- Get the operator menu data
local omData = self:GetBackupOMData()
-- Restore the operator menu data -- Restore the operator menu data
if ( omData ~= nil ) then RestoreData( RADAR, RADAR.GetBackupOMData, RADAR.SetOMTableData, RADAR.SetBackupOMData )
self:SetOMTableData( omData )
-- Clear the backup
self:SetBackupOMData( nil )
end
-- Iterate through the antennas and restore their backups -- Iterate through the antennas and restore their backups
for ant in UTIL:Values( { "front", "rear" } ) do for ant in UTIL:Values( { "front", "rear" } ) do
-- Get the antenna backup data RestoreData( RADAR, RADAR.GetBackupAntennaData, RADAR.SetAntennaTableData, RADAR.SetBackupAntennaData, ant )
local antData = self:GetBackupAntennaData( ant )
-- Restore the antenna data
if ( antData ~= nil ) then
self:SetAntennaTableData( ant, antData )
-- Clear the backup
self:SetBackupAntennaData( ant, nil )
end
end end
-- Get the power state -- Get the power state
local pwrState = self:GetBackupPowerState() local pwrState = self:GetBackupPowerState()
-- Restore the power state
if ( pwrState ~= nil ) then if ( pwrState ~= nil ) then
self:SetPowerState( pwrState, true ) self:SetPowerState( pwrState, true )
self:SetBackupPowerState( nil ) self:SetBackupPowerState( nil )
end end
@@ -342,6 +312,7 @@ function SYNC:SendUpdatedOMData( data )
end ) end )
end end
-- Sends the plate reader lock event with the data from the reader that was locked
function SYNC:LockReaderCam( cam, data ) function SYNC:LockReaderCam( cam, data )
self:SyncData( function( ply ) self:SyncData( function( ply )
TriggerServerEvent( "wk_wars2x_sync:sendLockCameraPlate", ply, cam, data ) TriggerServerEvent( "wk_wars2x_sync:sendLockCameraPlate", ply, cam, data )