Skip to content
Snippets Groups Projects
Commit 3b480e00 authored by DarkGod's avatar DarkGod
Browse files

If a module or addon errors out on the loading screen it will jump into a...

If a module or addon errors out on the loading screen it will jump into a "safe mode" to display the error message and then go back to the main menu
parent 647f170e
No related branches found
No related tags found
No related merge requests found
-- TE4 - T-Engine 4
-- Copyright (C) 2009 - 2015 Nicolas Casalini
--
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
--
-- Nicolas Casalini "DarkGod"
-- darkgod@te4.org
require "engine.class"
local UIBase = require "engine.ui.Base"
local Game = require "engine.Game"
local KeyBind = require "engine.KeyBind"
--- Handles dialog windows
-- @classmod engine.Module
module(..., package.seeall, class.inherit(Game))
function _M:init(errs, mod)
-- I like to fak'it fak'it !
self.__mod_info = mod
_G.game = self
-- Force load definitions of UI to be able to display the error
for _, file in ipairs(fs.list("/data/gfx/ui/definitions")) do
if file:find("%.lua$") then UIBase:loadUIDefinitions("/data/gfx/ui/definitions/"..file) end
end
Game.init(self, KeyBind.new())
self:loaded()
local d = require("engine.dialogs.ShowErrorStack").new(errs)
d.unload = function(self)
util.showMainMenu()
end
self:registerDialog(d)
end
-- TE4 - T-Engine 4
-- Copyright (C) 2009 - 2015 Nicolas Casalini
--
......@@ -839,6 +838,14 @@ function _M:loadScreen(mod)
if tip then tip(dw / 2, dy) end
if funfacts then funfacts(sw, 10) end
local errs = core.game.checkError()
if errs then
local errgame = require("engine.BootErrorHandler").new(errs, mod)
_G.game = errgame
errgame:setCurrent()
core.wait.disable()
end
end
end)
core.display.forceRedraw()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment