From 30f35012a285b64f434f82cb30c89d56df113415 Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Thu, 24 Oct 2013 05:40:51 +0000 Subject: [PATCH] Don't load/reference script code for other classes that won't be used. Only register scripts that are for the current class and allow the garbage collector to sweep away unused code strings. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1110 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- OvaleCompile.lua | 4 ++-- OvaleOptions.lua | 10 +++++----- OvaleScripts.lua | 36 +++++++++++------------------------- 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/OvaleCompile.lua b/OvaleCompile.lua index 218fb63..dc51f8f 100644 --- a/OvaleCompile.lua +++ b/OvaleCompile.lua @@ -841,8 +841,8 @@ function OvaleCompile:Compile() local profile = OvaleOptions:GetProfile() local source = profile.source local code - if source and OvaleScripts.script[OvalePaperDoll.class][source] then - code = OvaleScripts.script[OvalePaperDoll.class][source].code + if source and OvaleScripts.script[source] then + code = OvaleScripts.script[source].code else code = "" end diff --git a/OvaleOptions.lua b/OvaleOptions.lua index f33cf17..00fe530 100644 --- a/OvaleOptions.lua +++ b/OvaleOptions.lua @@ -352,8 +352,8 @@ local self_options = get = function(info) local source = OvaleOptions.db.profile.source local code - if source and OvaleScripts.script[OvalePaperDoll.class][source] then - code = OvaleScripts.script[OvalePaperDoll.class][source].code + if source and OvaleScripts.script[source] then + code = OvaleScripts.script[source].code else code = "" end @@ -380,12 +380,12 @@ local self_options = local class = OvalePaperDoll.class local source = OvaleOptions.db.profile.source local code - if source and OvaleScripts.script[OvalePaperDoll.class][source] then - code = OvaleScripts.script[OvalePaperDoll.class][source].code + if source and OvaleScripts.script[source] then + code = OvaleScripts.script[source].code else code = "" end - OvaleScripts.script[class]["custom"].code = code + OvaleScripts.script["custom"].code = code OvaleOptions.db.profile.source = "custom" OvaleOptions.db.profile.code = code OvaleOptions:SendMessage("Ovale_ScriptChanged") diff --git a/OvaleScripts.lua b/OvaleScripts.lua index edf1a01..0e19b33 100644 --- a/OvaleScripts.lua +++ b/OvaleScripts.lua @@ -18,45 +18,31 @@ local OvalePaperDoll = Ovale.OvalePaperDoll -- -- --- Table of default class scripts, indexed by class tokens. -OvaleScripts.script = { - DEATHKNIGHT = {}, - DRUID = {}, - HUNTER = {}, - MAGE = {}, - MONK = {}, - PALADIN = {}, - PRIEST = {}, - ROGUE = {}, - SHAMAN = {}, - WARLOCK = {}, - WARRIOR = {}, -} +-- Table of scripts, indexed by source; a script is a table { description = description, code = "..." }. +OvaleScripts.script = {} -- -- -- Return a table of script descriptions indexed by source. function OvaleScripts:GetDescriptions() local descriptionsTable = {} - for src, tbl in pairs(self.script[OvalePaperDoll.class]) do + for src, tbl in pairs(self.script) do descriptionsTable[src] = tbl.desc end return descriptionsTable end function OvaleScripts:RegisterScript(class, source, description, code) - -- Default values for description and code. - description = description or source - code = code or "" - - if not self.script[class][source] then - self.script[class][source] = {} + if class == OvalePaperDoll.class then + self.script[source] = self.script[source] or {} + self.script[source].desc = description or source + self.script[source].code = code or "" end - self.script[class][source].desc = description - self.script[class][source].code = code end function OvaleScripts:UnregisterScript(class, source) - self.script[class][source] = nil + if class == OvalePaperDoll.class then + self.script[source] = nil + end end --- \ No newline at end of file +-- -- 1.7.9.5