From fdd1c9f61272900d9855af1a480087afd3b3eaf8 Mon Sep 17 00:00:00 2001 From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54> Date: Mon, 20 Feb 2012 10:51:11 +0000 Subject: [PATCH] Classes may have an inherited method that gets called after module init git-svn-id: http://svn.net-core.org/repos/t-engine4@4896 51575b47-30f0-44d4-a5cc-537603b46e54 --- game/engines/default/engine/Module.lua | 1 + game/engines/default/engine/class.lua | 16 ++++++++++++++++ game/engines/default/engine/ui/Base.lua | 12 ++++++++++++ game/modules/tome/dialogs/LorePopup.lua | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/game/engines/default/engine/Module.lua b/game/engines/default/engine/Module.lua index 48a8e025ff..778112424a 100644 --- a/game/engines/default/engine/Module.lua +++ b/game/engines/default/engine/Module.lua @@ -540,6 +540,7 @@ function _M:instanciate(mod, name, new_game, no_reboot) -- Init the module code local M, W = mod.load("init") + class:runInherited() _G.game = M.new() _G.game:setPlayerName(name) diff --git a/game/engines/default/engine/class.lua b/game/engines/default/engine/class.lua index 833097256a..08013750b3 100644 --- a/game/engines/default/engine/class.lua +++ b/game/engines/default/engine/class.lua @@ -20,6 +20,7 @@ module("class", package.seeall) local base = _G +local run_inherited = {} local function search(k, plist) for i=1, #plist do @@ -100,6 +101,15 @@ function inherit(...) o.__CLASSNAME = c._NAME setmetatable(o, {__index=c}) end + if c.inherited then + run_inherited[#run_inherited+1] = function() + local i = 1 + while i <= #bases do + c:inherited(bases[i], i) + i = i + 1 + end + end + end return c end end @@ -112,6 +122,12 @@ function _M:getClass() return getmetatable(self).__index end +function _M:runInherited() + for _, f in ipairs(run_inherited) do + f() + end +end + local function clonerecurs(d) local n = {} for k, e in pairs(d) do diff --git a/game/engines/default/engine/ui/Base.lua b/game/engines/default/engine/ui/Base.lua index 18cdd59106..1ddeab542d 100644 --- a/game/engines/default/engine/ui/Base.lua +++ b/game/engines/default/engine/ui/Base.lua @@ -87,6 +87,18 @@ _M.ui_conf = { }, } +function _M:inherited(base) + if base._NAME == "engine.ui.Base" then + self.font = base.font + self.font_h = base.font_h + self.font_mono = base.font_mono + self.font_mono_w = base.font_mono_w + self.font_mono_h = base.font_mono_h + self.font_bold = base.font_bold + self.font_bold_h = base.font_bold_h + end +end + function _M:init(t, no_gen) self.mouse = Mouse.new() self.key = KeyBind.new() diff --git a/game/modules/tome/dialogs/LorePopup.lua b/game/modules/tome/dialogs/LorePopup.lua index 82209bcf3c..00a38c27d4 100644 --- a/game/modules/tome/dialogs/LorePopup.lua +++ b/game/modules/tome/dialogs/LorePopup.lua @@ -33,7 +33,7 @@ function _M:init(l, w, force_height) self.ui = l.special_ui or "parchment" Dialog.init(self, "Lore found: #0080FF#"..l.name, 1, 1) ---FX FUCKING FONT SIZE! + local text = util.getval(l.lore).."\n" local list = text:splitLines(w - 10, self.font) -- GitLab