44 lines
1.3 KiB
Lua
44 lines
1.3 KiB
Lua
|
local errorHandler = {}
|
||
|
function errorHandler.redscreen(msg)
|
||
|
local scale = 0.5
|
||
|
local errorfont
|
||
|
if love.filesystem.getInfo("fonts/font.ttf") then
|
||
|
errorfont = love.graphics.newFont("fonts/font.ttf", 45 * scale)
|
||
|
else
|
||
|
errorfont = love.graphics.newFont(45 * scale)
|
||
|
end
|
||
|
love.graphics.reset()
|
||
|
love.graphics.origin()
|
||
|
love.graphics.clear(.4, 0, 0)
|
||
|
love.graphics.setColor(1, 1, 1)
|
||
|
local message = love.graphics.newText(errorfont, "Poppy has encountered a critical fault")
|
||
|
local message2 = love.graphics.newText(errorfont, "Press q to exit")
|
||
|
local message3 = love.graphics.newText(errorfont, msg)
|
||
|
love.graphics.draw(message, 40, 40 * scale, 0, 1, 1)
|
||
|
love.graphics.draw(message2, 40, 90 * scale, 0, 1, 1)
|
||
|
love.graphics.draw(message3, 40, 140 * scale, 0, 1, 1)
|
||
|
print(msg)
|
||
|
local indent = 0
|
||
|
local messageline
|
||
|
for line in debug.traceback():gmatch("([^\n]*)\n?") do
|
||
|
print(line)
|
||
|
messageline = love.graphics.newText(errorfont, line)
|
||
|
love.graphics.draw(messageline, 40, (250 * scale) + indent, 0, 1, 1)
|
||
|
indent = indent + 50 * scale
|
||
|
end
|
||
|
love.graphics.present()
|
||
|
return function()
|
||
|
love.event.pump()
|
||
|
for event, action in love.event.poll() do
|
||
|
if event == "quit" then return 1 end
|
||
|
if event == "keypressed" then
|
||
|
if action == "q" then
|
||
|
love.event.quit( 1 )
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
love.timer.sleep(0.1)
|
||
|
end
|
||
|
end
|
||
|
return errorHandler
|