Bladeren bron

- Watcher : added error handling
- Console : small utilities to log on different levels.

Eiyeron Fulmincendii 8 jaren geleden
bovenliggende
commit
4dba4981da
3 gewijzigde bestanden met toevoegingen van 31 en 5 verwijderingen
  1. 17 0
      debug_overlay/console/init.lua
  2. 13 4
      debug_overlay/watch/init.lua
  3. 1 1
      main.lua

+ 17 - 0
debug_overlay/console/init.lua

@@ -147,6 +147,23 @@ function Console:log(str, level)
     self.scroll_to_bottom = true
 end
 
+function Console:info(str)
+    self:log(str, INFO)
+end
+
+function Console:warn(str)
+    self:log(str, WARN)
+end
+
+function Console:debug(str)
+    self:log(str, DEBUG)
+end
+
+
+function Console:error(str)
+    self:log(str, ERROR)
+end
+
 function Console:registerCommand(name, fun, help)
     self.commands[name] = fun
     if help then

+ 13 - 4
debug_overlay/watch/init.lua

@@ -24,10 +24,19 @@ function Watcher:render()
         imgui.Columns(2)
         for k,v in ipairs(self.watched_values) do
             if v.obj and v.member then
-                imgui.TextUnformatted(v.name)
-                imgui.NextColumn()
-                imgui.TextUnformatted(tostring(v.obj[v.member]))
-                imgui.NextColumn()
+                local status,res = pcall(function() return tostring(v.obj[v.member]) end)
+                if status then
+                    imgui.TextUnformatted(v.name)
+                    imgui.NextColumn()
+                    imgui.TextUnformatted(res)
+                    imgui.NextColumn()
+                else
+                    debug_overlay.console:error("Watcher: "..v.name.. " couldn't be read. ")
+                    debug_overlay.console:debug(res)
+                    table.remove(self.watched_values, k)
+                end
+
+
             elseif v.obj == nil then
                 imgui.TextUnformatted(v.name .. " <<Miss. obj.>>")
                 imgui.NextColumn()

+ 1 - 1
main.lua

@@ -19,7 +19,7 @@ _G.ecs = ecs
 -- LOVE callbacks
 --
 function love.load(arg)
-
+    debug_overlay.console:debug("Have fun!")
     p = Position:new()
     p.x = 2
     p.y = 5