Nick@108
|
1
|
Nick@108
|
2 local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop
|
Nick@108
|
3
|
Nenue@133
|
4
|
Nenue@133
|
5
|
Nenue@133
|
6 VeneerPetBattleActionMixin = {}
|
Nenue@133
|
7 VeneerPetBattleInfoMixin = {}
|
Nenue@133
|
8 local pb = VeneerPetBattleInfoMixin
|
Nenue@133
|
9 local action = VeneerPetBattleActionMixin
|
Nenue@133
|
10
|
Nenue@133
|
11
|
Nenue@133
|
12 function pb:OnShow()
|
Nenue@133
|
13 self:ClearAllPoints()
|
Nenue@133
|
14 self:SetPoint('TOPLEFT', PetBattleFrame.EnemyBuffFrame, 'BOTTOMLEFT', 0, -12)
|
Nenue@133
|
15 self:RegisterEvent('PET_BATTLE_PET_ROUND_PLAYBACK_COMPLETE')
|
Nenue@133
|
16 self:RegisterEvent('PET_BATTLE_ACTION_SELECTED')
|
Nenue@133
|
17 self:RegisterEvent('PET_BATTLE_TURN_STARTED')
|
Nenue@133
|
18 print('pet on show')
|
Nenue@133
|
19 self:Refresh()
|
Nenue@133
|
20 end
|
Nenue@133
|
21
|
Nenue@133
|
22 function pb:OnHide()
|
Nenue@133
|
23 print('pet on hide')
|
Nenue@133
|
24 self:UnregisterAllEvents()
|
Nenue@133
|
25 end
|
Nenue@133
|
26
|
Nenue@133
|
27 function pb:OnEvent(event)
|
Nenue@133
|
28 print('pb event|cFFFF8800', event)
|
Nenue@133
|
29 self:Refresh()
|
Nenue@133
|
30 end
|
Nenue@133
|
31
|
Nenue@133
|
32 function pb:Refresh()
|
Nenue@133
|
33 local myPetSlot = C_PetBattles.GetActivePet(1)
|
Nenue@133
|
34 local myPetType = C_PetBattles.GetPetType(1, myPetSlot)
|
Nenue@133
|
35
|
Nenue@133
|
36 local index = 0
|
Nenue@133
|
37 local nonActiveIndex = 0
|
Nenue@133
|
38 local lastFrame, lastNonActive
|
Nenue@133
|
39 for petSlot = 1, C_PetBattles.GetNumPets(2) do
|
Nenue@133
|
40
|
Nenue@133
|
41 for abilitySlot = 1,3 do
|
Nenue@133
|
42 local _, name, texture, cooldown, tooltip,_, abilityType, noStrongWeakHints = C_PetBattles.GetAbilityInfo(2, petSlot, abilitySlot)
|
Nenue@133
|
43 local petHealth = C_PetBattles.GetHealth(2, petSlot)
|
Nenue@133
|
44
|
Nenue@133
|
45 if petHealth >= 1 then
|
Nenue@133
|
46 local isUsable, currentCooldown, currentLockdown = C_PetBattles.GetAbilityState(2, petSlot, abilitySlot);
|
Nenue@133
|
47 --print(index, petSlot, abilitySlot, name, currentCooldown, currentLockdown, cooldown, petHealth)
|
Nenue@133
|
48
|
Nenue@133
|
49 index = index + 1
|
Nenue@133
|
50 local frame = self.Abilities[index]
|
Nenue@133
|
51
|
Nenue@133
|
52 frame.ownerID = 2
|
Nenue@133
|
53 frame.petIndex = petSlot
|
Nenue@133
|
54 frame.abIndex = abilitySlot
|
Nenue@133
|
55 frame.tooltip = tooltip
|
Nenue@133
|
56 frame.Name:SetText(name)
|
Nenue@133
|
57 frame.Icon:SetTexture(texture)
|
Nenue@133
|
58 frame.TypeIcon:SetTexture("Interface\\PetBattles\\PetIcon-"..PET_TYPE_SUFFIX[abilityType])
|
Nenue@133
|
59
|
Nenue@133
|
60
|
Nenue@133
|
61 for i = 1,C_PetBattles.GetNumPets(1) do
|
Nenue@133
|
62 local myPetType = C_PetBattles.GetPetType(1, i)
|
Nenue@133
|
63 if not (myPetType or abilityType) then
|
Nenue@133
|
64 frame.BetterIcon[i]:Hide();
|
Nenue@133
|
65 else
|
Nenue@133
|
66 local modifier = C_PetBattles.GetAttackModifier(abilityType, myPetType)
|
Nenue@133
|
67 if ( noStrongWeakHints or modifier == 1 ) then
|
Nenue@133
|
68 frame.BetterIcon[i]:Hide();
|
Nenue@133
|
69 elseif (modifier > 1) then
|
Nenue@133
|
70 frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Strong");
|
Nenue@133
|
71 frame.BetterIcon[i]:Show();
|
Nenue@133
|
72 elseif (modifier < 1) then
|
Nenue@133
|
73 frame.BetterIcon[i]:SetTexture("Interface\\PetBattles\\BattleBar-AbilityBadge-Weak");
|
Nenue@133
|
74 frame.BetterIcon[i]:Show();
|
Nenue@133
|
75 end
|
Nenue@133
|
76
|
Nenue@133
|
77 end
|
Nenue@133
|
78 end
|
Nenue@133
|
79
|
Nenue@133
|
80
|
Nenue@133
|
81 if cooldown >= 1 then
|
Nenue@133
|
82 frame.Border2:Show()
|
Nenue@133
|
83 else
|
Nenue@133
|
84
|
Nenue@133
|
85 frame.Border2:Hide()
|
Nenue@133
|
86 end
|
Nenue@133
|
87
|
Nenue@133
|
88
|
Nenue@133
|
89 currentCooldown = (currentCooldown >= 1) and currentCooldown or 0
|
Nenue@133
|
90 if petHealth == 0 then
|
Nenue@133
|
91 frame.Cooldown:SetText(nil)
|
Nenue@133
|
92 frame.Cooldown:SetTextColor(1,0,0)
|
Nenue@133
|
93 else
|
Nenue@133
|
94 if currentLockdown >= 1 and currentLockdown > currentCooldown then
|
Nenue@133
|
95 frame.Cooldown:SetTextColor(1,0,0)
|
Nenue@133
|
96 else
|
Nenue@133
|
97 frame.Cooldown:SetTextColor(1,1,1)
|
Nenue@133
|
98 end
|
Nenue@133
|
99 frame.Cooldown:SetText((currentCooldown >= 1) and currentCooldown or nil)
|
Nenue@133
|
100 end
|
Nenue@133
|
101
|
Nenue@133
|
102 frame:ClearAllPoints()
|
Nenue@133
|
103 if petSlot == C_PetBattles.GetActivePet(2) then
|
Nenue@133
|
104 frame:SetSize(48,48)
|
Nenue@133
|
105 frame.Border2:SetSize(72,72)
|
Nenue@133
|
106 frame.Icon:SetDesaturated(false)
|
Nenue@133
|
107 frame.Name:SetTextColor(1,1,0)
|
Nenue@133
|
108 if lastFrame then
|
Nenue@133
|
109 frame:SetPoint('TOPLEFT', lastFrame, 'BOTTOMLEFT', 0, -4)
|
Nenue@133
|
110 else
|
Nenue@133
|
111 frame:SetPoint('TOPLEFT', self, 'TOPLEFT')
|
Nenue@133
|
112 end
|
Nenue@133
|
113 lastFrame = frame
|
Nenue@133
|
114 else
|
Nenue@133
|
115 frame:SetSize(24,24)
|
Nenue@133
|
116 frame.Border2:SetSize(36,36)
|
Nenue@133
|
117 frame.Name:SetTextColor(0.5,0.5,0.5)
|
Nenue@133
|
118 frame.Icon:SetDesaturated(true)
|
Nenue@133
|
119 if lastNonActive then
|
Nenue@133
|
120 frame:SetPoint('TOPLEFT', lastNonActive, 'BOTTOMLEFT', 0, -2)
|
Nenue@133
|
121 else
|
Nenue@133
|
122 frame:SetPoint('TOPLEFT', self, 'TOPLEFT', 128, 0)
|
Nenue@133
|
123 end
|
Nenue@133
|
124 lastNonActive = frame
|
Nenue@133
|
125 end
|
Nenue@133
|
126 frame:Show()
|
Nenue@133
|
127 end
|
Nenue@133
|
128 end
|
Nenue@133
|
129 end
|
Nenue@133
|
130
|
Nenue@133
|
131 for i = index + 1, #self.Abilities do
|
Nenue@133
|
132 self.Abilities[i]:Hide()
|
Nenue@133
|
133 end
|
Nenue@133
|
134 end
|
Nenue@133
|
135
|
Nenue@133
|
136 function action:OnEnter()
|
Nenue@133
|
137 PetBattleAbilityTooltip_SetAbility(self.ownerID, self.petIndex, self.abIndex);
|
Nenue@133
|
138 PetBattleAbilityTooltip_Show("TOPRIGHT", self:GetParent(), "TOPLEFT", -5, 0, self.additionalText);
|
Nenue@133
|
139 end
|
Nenue@133
|
140
|
Nenue@133
|
141 function action:OnLeave()
|
Nenue@133
|
142 PetBattlePrimaryAbilityTooltip:Hide();
|
Nenue@133
|
143 end |