comparison modules/ReAction_State/ReAction_State.lua @ 67:84721edaa749

Rearranged rule layout slightly passed nil for OnRefreshBar when it's not actually coming from an event ApplyStates is now only called by UpdateStates
author Flick <flickerstreak@gmail.com>
date Wed, 28 May 2008 17:59:44 +0000
parents 44d3716aba8d
children fcb5dad031f9
comparison
equal deleted inserted replaced
66:44d3716aba8d 67:84721edaa749
34 end 34 end
35 35
36 -- PRIVATE -- 36 -- PRIVATE --
37 local InitRules, ApplyStates 37 local InitRules, ApplyStates
38 do 38 do
39 local ruleformats = { } 39 -- As far as I can tell the macro clauses are NOT locale-specific.
40 40 local ruleformats = {
41 stealth = "stealth",
42 nostealth = "nostealth",
43 shadowform = "form:1",
44 noshadowform = "noform",
45 pet = "pet",
46 nopet = "nopet",
47 harm = "target=target,harm",
48 help = "target=target,help",
49 notarget = "target=target,noexists",
50 focusharm = "target=focus,harm",
51 focushelp = "target=focus,help",
52 nofocus = "target=focus,noexists",
53 raid = "group:raid",
54 party = "group:party",
55 solo = "nogroup",
56 combat = "combat",
57 nocombat = "nocombat",
58 }
59
60 -- Have to do these shenanigans instead of hardcoding the stances/forms because
61 -- the ordering varies if the character is missing a form. For warriors
62 -- this is rarely a problem (c'mon, who actually skips the level 10 def stance quest?)
63 -- but for druids it can be. Some people never bother to do the aquatic form quest
64 -- until well past when they get cat form, and stance 5 can be flight, tree, or moonkin
65 -- depending on talents.
41 function InitRules() 66 function InitRules()
42 local forms = { } 67 local forms = { }
68 -- sort by icon since it's locale-independent
43 for i = 1, GetNumShapeshiftForms() do 69 for i = 1, GetNumShapeshiftForms() do
44 local icon = GetShapeshiftFormInfo(i) 70 local icon = GetShapeshiftFormInfo(i)
45 forms[icon] = i; 71 forms[icon] = i;
46 end 72 end
47 -- sort by icon since it's locale-independent
48 -- use 9 if not found since 9 is never a valid stance/form 73 -- use 9 if not found since 9 is never a valid stance/form
49 -- we do these shenanigans instead of hardcoding the stances because
50 -- the ordering varies if the character is missing a form. For warriors
51 -- this is rarely a problem but for druids it can be. Some people never bother
52 -- to do the aquatic form quest, and stance 5 can be either flight or tree/boomkin
53 -- depending on talents.
54 local defensive = forms["Interface\\Icons\\Ability_Warrior_DefensiveStance"] or 9 74 local defensive = forms["Interface\\Icons\\Ability_Warrior_DefensiveStance"] or 9
55 local berserker = forms["Interface\\Icons\\Ability_Racial_Avatar"] or 9 75 local berserker = forms["Interface\\Icons\\Ability_Racial_Avatar"] or 9
56 local bear = forms["Interface\\Icons\\Ability_Racial_BearForm"] or 9 -- bear and dire bear share the same icon 76 local bear = forms["Interface\\Icons\\Ability_Racial_BearForm"] or 9 -- bear and dire bear share the same icon
57 local aquatic = forms["Interface\\Icons\\Ability_Druid_AquaticForm"] or 9 77 local aquatic = forms["Interface\\Icons\\Ability_Druid_AquaticForm"] or 9
58 local cat = forms["Interface\\Icons\\Ability_Druid_CatForm"] or 9 78 local cat = forms["Interface\\Icons\\Ability_Druid_CatForm"] or 9
59 local travel = forms["Interface\\Icons\\Ability_Druid_TravelForm"] or 9 79 local travel = forms["Interface\\Icons\\Ability_Druid_TravelForm"] or 9
60 local treekin = forms["Interface\\Icons\\Ability_Druid_TreeofLife"] or forms["Interface\\Icons\\Spell_Nature_ForceOfNature"] or 9 80 local treekin = forms["Interface\\Icons\\Ability_Druid_TreeofLife"] or forms["Interface\\Icons\\Spell_Nature_ForceOfNature"] or 9
61 local flight = forms["Interface\\Icons\\Ability_Druid_FlightForm"] or 9 -- both flight and swift flight share the same icon 81 local flight = forms["Interface\\Icons\\Ability_Druid_FlightForm"] or 9 -- flight and swift flight share the same icon
62 82
63 -- As far as I can tell the macro clauses are NOT locale-specific.
64 ruleformats.battle = "stance:1" 83 ruleformats.battle = "stance:1"
65 ruleformats.defensive = ("stance:%d"):format(defensive) 84 ruleformats.defensive = ("stance:%d"):format(defensive)
66 ruleformats.berserker = ("stance:%d"):format(berserker) 85 ruleformats.berserker = ("stance:%d"):format(berserker)
67 ruleformats.caster = ("form:0/%d/%d/%d"):format(aquatic, travel, flight) 86 ruleformats.caster = ("form:0/%d/%d/%d"):format(aquatic, travel, flight)
68 ruleformats.bear = ("form:%d"):format(bear) 87 ruleformats.bear = ("form:%d"):format(bear)
69 ruleformats.cat = ("form:%d"):format(cat) 88 ruleformats.cat = ("form:%d"):format(cat)
70 ruleformats.treeOrMoonkin = ("form:%d"):format(treekin) 89 ruleformats.treeOrMoonkin = ("form:%d"):format(treekin)
71 ruleformats.stealth = "stealth"
72 ruleformats.nostealth = "nostealth"
73 ruleformats.shadowform = "form:1"
74 ruleformats.noshadowform = "noform"
75 ruleformats.pet = "pet"
76 ruleformats.nopet = "nopet"
77 ruleformats.harm = "target=target,harm"
78 ruleformats.help = "target=target,help"
79 ruleformats.notarget = "target=target,noexists"
80 ruleformats.focusharm = "target=focus,harm"
81 ruleformats.focushelp = "target=focus,help"
82 ruleformats.nofocus = "target=focus,noexists"
83 ruleformats.raid = "group:raid"
84 ruleformats.party = "group:party"
85 ruleformats.solo = "nogroup"
86 ruleformats.combat = "combat"
87 ruleformats.nocombat = "nocombat"
88 end 90 end
89 91
90 local function BuildRuleString(states) 92 local function BuildRuleString(states)
91 local s = "" 93 local s = ""
92 local default 94 local default
193 -- and this event won't fire until you gain/lose buffs/debuffs, at which point you might 195 -- and this event won't fire until you gain/lose buffs/debuffs, at which point you might
194 -- be in combat. 196 -- be in combat.
195 if not InCombatLockdown() then 197 if not InCombatLockdown() then
196 InitRules() 198 InitRules()
197 for name, bar in ReAction:IterateBars() do 199 for name, bar in ReAction:IterateBars() do
198 self:OnRefreshBar("OnRefreshBar",bar,name) 200 self:OnRefreshBar(nil,bar,name)
199 end 201 end
200 end 202 end
201 end 203 end
202 204
203 function module:OnRefreshBar(event, bar, name) 205 function module:OnRefreshBar(event, bar, name)
238 240
239 function module:DeleteState( bar, name ) 241 function module:DeleteState( bar, name )
240 local states = tfetch(self.db.profile.bars, bar:GetName(), "states") 242 local states = tfetch(self.db.profile.bars, bar:GetName(), "states")
241 if states[name] then 243 if states[name] then
242 states[name] = nil 244 states[name] = nil
243 ApplyStates(bar) 245 self:UpdateStates(bar)
244 end 246 end
245 end 247 end
246 248
247 -- Options -- 249 -- Options --
248 250