diff --git a/hoggit.lua b/hoggit.lua index 863add9..f247e8a 100644 --- a/hoggit.lua +++ b/hoggit.lua @@ -1 +1,5 @@ +HOGGIT = {} +dofile(lfs.writedir()..[[Scripts\HOGGIT\lib\error_handling.lua]]) +dofile(lfs.writedir()..[[Scripts\HOGGIT\lib\logging.lua]]) +dofile(lfs.writedir()..[[Scripts\HOGGIT\lib\utils.lua]]) dofile(lfs.writedir()..[[Scripts\HOGGIT\lib\spawner.lua]]) \ No newline at end of file diff --git a/lib/error_handling.lua b/lib/error_handling.lua new file mode 100644 index 0000000..07504fd --- /dev/null +++ b/lib/error_handling.lua @@ -0,0 +1,15 @@ +HandleError = function(err) + log("Error in pcall: " .. err) + log(debug.traceback()) + return err +end + +try = function(func, catch) + return function() + local r, e = xpcall(func, HandleError) + if not r then + return catch(e) + end + return r + end +end \ No newline at end of file diff --git a/lib/logging.lua b/lib/logging.lua new file mode 100644 index 0000000..69e59cf --- /dev/null +++ b/lib/logging.lua @@ -0,0 +1,9 @@ +logFile = io.open(lfs.writedir()..[[Logs\HOGGIT.log]], "w") + +function log(str) + if str == nil then str = 'nil' end + if logFile then + logFile:write("HOGGIT --- " .. str .."\r\n") + logFile:flush() + end +end diff --git a/lib/spawner.lua b/lib/spawner.lua index a40c0e6..0b94686 100644 --- a/lib/spawner.lua +++ b/lib/spawner.lua @@ -4,8 +4,6 @@ spawner.lua Automatically create a table of all units in the game and create a spawner for them. ]] -HOGGIT = {} - HOGGIT.Spawner = function(grpName) local CallBack = {} return { diff --git a/lib/utils.lua b/lib/utils.lua new file mode 100644 index 0000000..bb19593 --- /dev/null +++ b/lib/utils.lua @@ -0,0 +1,17 @@ +HOGGIT.filterTable = function(t, filter) + local out = {} + for k,v in pairs(t) do + if filter(v) then out[k] = v end + end + return out +end + +HOGGIT.listContains = function(list, elem) + for _, value in ipairs(list) do + if value == elem then + return true + end + end + + return false +end