local runtime = require "jass.runtime"

-- 开启一个调试窗口，用于显示调试信息，正式的版本请去掉。
-- 注：若在本文件内有语法错误，这行代码就不会被执行，语法错误也无法显示。所以
--    需要在一切都开始前，执行它；并确保本文件内没有错误。
runtime.console = true

-- 注册错误回调函数，当执行lua发生错误时，会调用此函数。
-- 注：注册此函数会略微增加运行时消耗（即使没有发生错误）。
function runtime.error_handle(msg)
	print("---------------------------------------")
	print("               LUA ERROR               ")
	print("---------------------------------------")
	print(tostring(msg) .. "\n")
	print(debug.traceback())
	print("---------------------------------------")
end

--
-- 设定调用cj函数返回的handle的type。(默认值为2)
-- 安全性依次递增，同时效率也会依次下降。
-- 0： 返回number。
---- 没有任何额外的安全性控制。
--
-- 1： 返回lightuserdata。
---- 只能判断是否相等，无法比较大小，并且不能隐式转换为整数。这和jass内的行为保持一致。
---- 但支持tostring，可以用于debug。
--
-- 2： 返回userdata。
---- lua持有handle时会增加handle的引用计数，并在__gc元方法中释放handle。
---- 0不再能被隐式转换为nil，对应jass里的null请使用nil。
--
runtime.handle_level = 2

-- 开启此项(默认开启)，调用jass.xxx/japi.xxx发生崩溃时，会生产一个lua错误，并忽略这个崩溃。
-- 你可以注册jass_ext.runtime.error_handle，来获得这个错误。
-- 注：开启此项会略微增加运行时消耗（即使没有发生错误）。
runtime.catch_crash = true

-- 此项默认为开启。common.j中包含sleep操作的函数有4个，TriggerSleepAction/TriggerSyncReady
-- /TriggerWaitForSound/SyncSelections。当此项为false时，lua引擎会忽略这4个函数的调用，并给
-- 予运行时警告。当此项为true时，这4个函数将会得到正确的执行。
-- 注：开启此项会增加运行时消耗，即使你没有使用这4个函数。
runtime.sleep = true
