DCSOlympus/scripts/OlympusHook.lua
2023-12-14 17:39:42 +01:00

63 lines
1.9 KiB
Lua

local version = '{{OLYMPUS_VERSION_NUMBER}}.{{OLYMPUS_COMMIT_HASH}}'
local lfs = require("lfs")
Olympus = {}
Olympus.OlympusDLL = nil
Olympus.DLLsloaded = false
Olympus.OlympusModPath = lfs.writedir().."Mods\\Services\\Olympus\\bin\\"
log.write('Olympus.HOOKS.LUA', log.INFO,'Executing OlympusHook.lua')
function Olympus.loadDLLs()
-- Add the .dll paths
package.cpath = package.cpath..';'..Olympus.OlympusModPath..'?.dll;'
local status
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading olympus.dll from ['..Olympus.OlympusModPath..']')
status, Olympus.OlympusDLL = pcall(require, 'olympus')
if status then
log.write('Olympus.HOOKS.LUA', log.INFO, 'olympus.dll loaded successfully')
return true
else
log.write('Olympus.HOOKS.LUA', log.ERROR, 'Error loading olympus.dll: '..Olympus.OlympusDLL)
return false
end
end
do
if isOlympusModuleInitialized~=true then
local OlympusName = 'Olympus ' .. version .. ' C++ module';
Olympus.loadDLLs();
-- Register callbacks
local OlympusCallbacks = {}
function OlympusCallbacks.onSimulationStart()
log.write('Olympus.HOOKS.LUA', log.INFO,OlympusName..' onSimulationStart')
if DCS.isServer() then
Olympus.DLLsloaded = Olympus.loadDLLs()
if Olympus.DLLsloaded then
Olympus.OlympusDLL.onSimulationStart()
log.write('Olympus.HOOKS.LUA', log.INFO, OlympusName..' successfully loaded.')
else
log.write('Olympus.HOOKS.LUA', log.ERROR, 'Failed to load '..OlympusName)
end
end
end
function OlympusCallbacks.onSimulationFrame()
if DCS.isServer() and Olympus.DLLsloaded then
Olympus.OlympusDLL.onSimulationFrame()
end
end
function OlympusCallbacks.onSimulationStop()
if DCS.isServer() and Olympus.DLLsloaded then
Olympus.OlympusDLL.onSimulationStop()
end
end
DCS.setUserCallbacks(OlympusCallbacks)
log.write('Olympus.HOOKS.LUA', log.INFO, OlympusName..' callbacks registered correctly.')
isOlympusModuleInitialized=true;
end
end