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