aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ClientHamr
diff options
context:
space:
mode:
authorDavid Walter Seikel2014-03-26 16:58:58 +1000
committerDavid Walter Seikel2014-03-26 16:58:58 +1000
commit22df267ff0926a3dd14dd1cc5cbf31f16086c5b7 (patch)
tree796756adf920e5bde4712f790c377d37c038ff45 /ClientHamr
parentUse isBoolean() for thing.required. (diff)
downloadSledjHamr-22df267ff0926a3dd14dd1cc5cbf31f16086c5b7.zip
SledjHamr-22df267ff0926a3dd14dd1cc5cbf31f16086c5b7.tar.gz
SledjHamr-22df267ff0926a3dd14dd1cc5cbf31f16086c5b7.tar.bz2
SledjHamr-22df267ff0926a3dd14dd1cc5cbf31f16086c5b7.tar.xz
Change Thing to being fully a proxy table, coz __newindex() only works for nil valued table elements.
Diffstat (limited to 'ClientHamr')
-rw-r--r--ClientHamr/GuiLua/skang.lua13
1 files changed, 4 insertions, 9 deletions
diff --git a/ClientHamr/GuiLua/skang.lua b/ClientHamr/GuiLua/skang.lua
index c9a58ff..f88ff1c 100644
--- a/ClientHamr/GuiLua/skang.lua
+++ b/ClientHamr/GuiLua/skang.lua
@@ -237,15 +237,8 @@ Thing.hasCrashed = 0 -- How many times this Thing has crashed.
237Thing.__index = function (table, key) 237Thing.__index = function (table, key)
238 -- This only works for keys that don't exist. By definition a value of nil means it doesn't exist. 238 -- This only works for keys that don't exist. By definition a value of nil means it doesn't exist.
239 local thing = things[key] 239 local thing = things[key]
240
241 -- First see if this is a Thing. 240 -- First see if this is a Thing.
242 if thing then 241 if thing then return thing.value or thing.default end
243 local result = nil
244 if key ~= thing.names[1] then
245 result = table[thing.names[1] ] -- This might be recursive.
246 end
247 return result or thing.default
248 end
249 242
250 -- Then see if we can inherit it from Thing. 243 -- Then see if we can inherit it from Thing.
251 thing = Thing[key] 244 thing = Thing[key]
@@ -256,11 +249,13 @@ Thing.__index = function (table, key)
256 end 249 end
257 250
258Thing.__newindex = function (table, key, value) 251Thing.__newindex = function (table, key, value)
252 -- This only works for keys that don't exist. By definition a value of nil means it doesn't exist.
259 local thing = things[key] 253 local thing = things[key]
260 254
261 if thing then 255 if thing then
262 local name = thing.names[1] 256 local name = thing.names[1]
263 rawset(table, name, value) -- Only stuff it under the first name, the rest are left as nil. 257 -- This is a proxy table, the values never exist in the real table.
258 thing.value = value
264 if 'function' == type(value) then 259 if 'function' == type(value) then
265 thing.func = value 260 thing.func = value
266 local types = '' 261 local types = ''