From 37498a04076cdb63db8276a0db18da5ea23aca6d Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Sun, 13 Jul 2014 11:31:16 +0000 Subject: [PATCH] Move ComputeParameter into the dependent code to reduce dependencies. This has code duplication and needs to refactored. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1541 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- OvaleCompile.lua | 4 ++++ OvaleCondition.lua | 30 ------------------------------ conditions/Damage.lua | 21 ++++++++++++++++++++- conditions/LastEstimatedDamage.lua | 24 ++++++++++++++++++++++-- 4 files changed, 46 insertions(+), 33 deletions(-) diff --git a/OvaleCompile.lua b/OvaleCompile.lua index 94862de..4456bd4 100644 --- a/OvaleCompile.lua +++ b/OvaleCompile.lua @@ -1015,6 +1015,10 @@ function OvaleCompile:Compile() end end +function OvaleCompile:GetFunctionNode(name) + return self.customFunctionNode[name] +end + function OvaleCompile:GetMasterNodes() -- Compile the script if it is outdated. if not self.serial or self.serial < self_serial then diff --git a/OvaleCondition.lua b/OvaleCondition.lua index 63105ce..c533275 100644 --- a/OvaleCondition.lua +++ b/OvaleCondition.lua @@ -47,11 +47,6 @@ local OvaleCondition = Ovale:NewModule("OvaleCondition") Ovale.OvaleCondition = OvaleCondition -- --- Forward declarations for module dependencies. -local OvaleBestAction = nil -local OvaleCompile = nil -local OvaleData = nil - local type = type local wipe = table.wipe @@ -88,13 +83,6 @@ OvaleCondition.COMPARATOR = { -- -- -function OvaleCondition:OnInitialize() - -- Resolve module dependencies. - OvaleBestAction = Ovale.OvaleBestAction - OvaleCompile = Ovale.OvaleCompile - OvaleData = Ovale.OvaleData -end - function OvaleCondition:RegisterCondition(name, isSpellbookCondition, func, arg) if arg then if type(func) == "string" then @@ -125,24 +113,6 @@ function OvaleCondition:EvaluateCondition(name, ...) return self_condition[name](...) end -function OvaleCondition.ComputeParameter(spellId, paramName, state) - local si = OvaleData:GetSpellInfo(spellId) - if si and si[paramName] then - local name = si[paramName] - local node = OvaleCompile.customFunctionNode[name] - if node then - local timeSpan, priority, element = OvaleBestAction:Compute(node, state) - if element and element.type == "value" then - local value = element.value + (state.currentTime - element.origin) * element.rate - return value - end - else - return si[paramName] - end - end - return nil -end - OvaleCondition.ParseCondition = function(condition, defaultTarget) defaultTarget = defaultTarget or "player" local target = condition.target or defaultTarget diff --git a/conditions/Damage.lua b/conditions/Damage.lua index a520924..42e5242 100644 --- a/conditions/Damage.lua +++ b/conditions/Damage.lua @@ -10,16 +10,35 @@ local _, Ovale = ... do + local OvaleBestAction = Ovale.OvaleBestAction + local OvaleCompile = Ovale.OvaleCompile local OvaleCondition = Ovale.OvaleCondition local OvaleData = Ovale.OvaleData local OvaleEquipement = Ovale.OvaleEquipement local OvaleState = Ovale.OvaleState local Compare = OvaleCondition.Compare - local ComputeParameter = OvaleCondition.ComputeParameter local ParseCondition = OvaleCondition.ParseCondition local state = OvaleState.state + function ComputeParameter(spellId, paramName, state) + local si = OvaleData:GetSpellInfo(spellId) + if si and si[paramName] then + local name = si[paramName] + local node = OvaleCompile:GetFunctionNode(name) + if node then + local timeSpan, priority, element = OvaleBestAction:Compute(node, state) + if element and element.type == "value" then + local value = element.value + (state.currentTime - element.origin) * element.rate + return value + end + else + return si[paramName] + end + end + return nil + end + -- Return the non-critical-strike damage of a spell, given the player's current stats. local function GetDamage(spellId) -- TODO: Use target's debuffs in this calculation. diff --git a/conditions/LastEstimatedDamage.lua b/conditions/LastEstimatedDamage.lua index 703dd05..0c7d623 100644 --- a/conditions/LastEstimatedDamage.lua +++ b/conditions/LastEstimatedDamage.lua @@ -10,17 +10,37 @@ local _, Ovale = ... do + local OvaleBestAction = Ovale.OvaleBestAction + local OvaleCompile = Ovale.OvaleCompile local OvaleCondition = Ovale.OvaleCondition local OvaleData = Ovale.OvaleData - local OvaleGUID = Ovale.OvaleGUID + local OvaleEquipement = Ovale.OvaleEquipement local OvaleFuture = Ovale.OvaleFuture + local OvaleGUID = Ovale.OvaleGUID local OvaleState = Ovale.OvaleState local Compare = OvaleCondition.Compare - local ComputeParameter = OvaleCondition.ComputeParameter local ParseCondition = OvaleCondition.ParseCondition local state = OvaleState.state + function ComputeParameter(spellId, paramName, state) + local si = OvaleData:GetSpellInfo(spellId) + if si and si[paramName] then + local name = si[paramName] + local node = OvaleCompile:GetFunctionNode(name) + if node then + local timeSpan, priority, element = OvaleBestAction:Compute(node, state) + if element and element.type == "value" then + local value = element.value + (state.currentTime - element.origin) * element.rate + return value + end + else + return si[paramName] + end + end + return nil + end + -- Return the damage reduction from armor, assuming the target is boss-level. local BOSS_ARMOR = 24835 local WEAKENED_ARMOR_DEBUFF = 113746 -- 1.7.9.5