DCSOlympus/scripts/OlympusHook.lua
2022-11-20 12:49:56 +01:00

70 lines
2.1 KiB
Lua

Olympus = {}
Olympus.OlympusDLL = nil
Olympus.cppRESTDLL = nil
Olympus.DLLsloaded = false
Olympus.debug = true
if Olympus.debug then
Olympus.OlympusModPath = "C:\\Users\\dpass\\Documents\\Olympus\\bin\\x64\\Debug\\"
else
Olympus.OlympusModPath = "C:\\Users\\dpass\\Doczuments\\Olympus\\bin\\x64\\Release\\"
end
log.write('Olympus.HOOKS.LUA', log.INFO,'Executing OlympusHook.lua')
function loadDLLs()
-- Add the .dll paths
package.cpath = package.cpath..';'..Olympus.OlympusModPath..'?.dll;'
if Olympus.debug then
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading cpprest_2_10d.dll from ['..Olympus.OlympusModPath..']')
pcall(require, 'cpprest_2_10d')
else
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading cpprest_2_10.dll from ['..Olympus.OlympusModPath..']')
pcall(require, 'cpprest_2_10')
end
log.write('Olympus.HOOKS.LUA', log.INFO, 'Loading Olympus.dll from ['..Olympus.OlympusModPath..']')
local status
status, Olympus.OlympusDLL = pcall(require, 'Olympus')
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