DCSOlympus/scripts/OlympusHook.lua

64 lines
1.8 KiB
Lua

Olympus = {}
Olympus.OlympusDLL = nil
Olympus.cppRESTDLL = nil
Olympus.DLLsloaded = false
Olympus.OlympusModPath = os.getenv('DCSOLYMPUS_PATH')..'\\bin\\'
log.write('Olympus.HOOKS.LUA', log.INFO,'Executing OlympusHook.lua')
function loadDLLs()
-- Add the .dll paths
package.cpath = package.cpath..';'..Olympus.OlympusModPath..'?.dll;'
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading cpprest_2_10.dll from ['..Olympus.OlympusModPath..']')
pcall(require, 'cpprest_2_10')
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading hook.dll from ['..Olympus.OlympusModPath..']')
local status
pcall(require, 'logger')
pcall(require, 'luatools')
pcall(require, 'dcstools')
status, Olympus.OlympusDLL = pcall(require, 'hook')
if not status then
return false
end
return true
end
do
if isOlympusModuleInitialized~=true then
local OlympusName = 'Olympus 0.0.1 C++ module';
-- Register callbacks
local OlympusCallbacks = {}
function OlympusCallbacks.onSimulationStart()
log.write('Olympus.HOOKS.LUA', log.INFO,OlympusName..' onSimulationStart')
if DCS.isServer() then
Olympus.DLLsloaded = 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