-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsArena.lua
141 lines (118 loc) · 4.73 KB
/
sArena.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
local AddonName = ...
sArena = CreateFrame("Frame", nil, UIParent)
sArena:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end)
local BackdropLayout = { bgFile = "Interface\\ChatFrame\\ChatFrameBackground", insets = { left = 0, right = 0, top = 0, bottom = 0 } }
sArena.AddonName = AddonName
sArena:SetSize(200, 16)
sArena:SetBackdrop(BackdropLayout)
sArena:SetBackdropColor(0, 0, 0, .8)
sArena:SetClampedToScreen(true)
sArena:EnableMouse(true)
sArena:SetMovable(true)
sArena:RegisterForDrag("LeftButton")
sArena:Hide()
sArena.Title = sArena:CreateFontString(nil, "BACKGROUND")
sArena.Title:SetFontObject("GameFontHighlight")
sArena.Title:SetText(AddonName .. " (Click to drag)")
sArena.Title:SetPoint("CENTER", 0, 0)
sArena.Frame = CreateFrame("Frame", nil, UIParent)
sArena.Frame:SetSize(200, 1)
sArena.Frame:SetPoint("TOPLEFT", sArena, "BOTTOMLEFT", 0, 0)
sArena.Frame:SetPoint("TOPRIGHT", sArena, "BOTTOMRIGHT", 0, 0)
sArena:SetParent(sArena.Frame)
sArena.Defaults = {
firstrun = false,
version = 5,
position = {
x = -185,
y = 56,
point = "RIGHT",
relativePoint = "RIGHT",
},
lock = true,
scale = 1.6,
}
function sArena:Initialize()
self.OptionsPanel:Initialize()
self:SetPoint(sArenaDB.position.point or "RIGHT", _G["UIParent"], sArenaDB.position.relativePoint or "RIGHT", sArenaDB.position.x or -100, sArenaDB.position.y or 100)
self.Frame:SetScale(sArenaDB.scale)
if ( not sArenaDB.lock ) then
self:Show()
end
local _
self:SetScript("OnDragStart", function(s) s:StartMoving() end)
self:SetScript("OnDragStop", function(s) s:StopMovingOrSizing() sArenaDB.position.point, _, sArenaDB.position.relativePoint, sArenaDB.position.x, sArenaDB.position.y = s:GetPoint() end)
-- Blizzard removed this feature from the options panel and SHOW_PARTY_BACKGROUND is always 0, but the CVar showPartyBackground still persists between sessions.
ArenaEnemyBackground:SetParent(self.Frame) -- ArenaEnemyBackground functions with both variables(see Blizzard_ArenaUI.lua). What the hell?
UpdateArenaEnemyBackground(GetCVarBool("showPartyBackground"))
for i = 1, MAX_ARENA_ENEMIES do
local ArenaFrame = _G["ArenaEnemyFrame"..i]
ArenaFrame:SetParent(self.Frame)
--ArenaFrame:SetPoint("RIGHT", self.Frame, "RIGHT", -2, 0)
ArenaEnemyFrame_UpdatePlayer(ArenaFrame, true)
local ArenaPetFrame = _G["ArenaEnemyFrame"..i.."PetFrame"]
ArenaPetFrame:SetParent(self.Frame)
if ( i == 1 ) then
ArenaFrame:ClearAllPoints()
ArenaFrame:SetPoint("TOP", self.Frame, "BOTTOM", 0, -8)
end
end
end
function sArena:CombatLockdown()
if ( InCombatLockdown() ) then
print("sArena: Must leave combat before doing that!")
return true
end
end
function sArena:HideArenaEnemyFrames()
if ( self:CombatLockdown() ) then return end
ArenaEnemyBackground:Hide()
for i = 1, MAX_ARENA_ENEMIES do
local ArenaFrame = _G["ArenaEnemyFrame"..i]
ArenaEnemyFrame_OnEvent(ArenaFrame, "ARENA_OPPONENT_UPDATE", ArenaFrame.unit, "cleared")
_G["ArenaEnemyFrame"..i.."PetFrame"]:Hide()
ArenaEnemyFrame_UpdatePlayer(ArenaFrame)
end
end
function sArena:Test(numOpps)
if ( self:CombatLockdown() ) then return end
if ( not numOpps or not (numOpps > 0 and numOpps < 6) ) then return end
self:HideArenaEnemyFrames()
local showArenaEnemyPets = (SHOW_ARENA_ENEMY_PETS == "1")
local instanceType = select(2, IsInInstance())
local factionGroup = UnitFactionGroup('player')
for i = 1, numOpps do
local ArenaFrame = _G["ArenaEnemyFrame"..i]
if ( instanceType ~= "pvp" ) then
ArenaFrame:SetPoint("RIGHT", ArenaFrame:GetParent(), "RIGHT", -2, 0)
else
ArenaFrame:SetPoint("RIGHT", ArenaFrame:GetParent(), "RIGHT", -18, 0)
end
ArenaEnemyFrame_SetMysteryPlayer(ArenaFrame)
if ( showArenaEnemyPets ) then
_G["ArenaEnemyFrame"..i.."PetFrame"]:Show()
_G["ArenaEnemyFrame"..i.."PetFramePortrait"]:SetTexture("Interface\\CharacterFrame\\TempPortrait")
end
end
if ( GetCVarBool("showPartyBackground") or SHOW_PARTY_BACKGROUND == "1" ) then
ArenaEnemyBackground:Show()
ArenaEnemyBackground:SetPoint("BOTTOMLEFT", "ArenaEnemyFrame"..numOpps.."PetFrame", "BOTTOMLEFT", -15, -10)
end
end
function sArena:ADDON_LOADED(arg1)
if ( arg1 == AddonName ) then
if ( not sArenaDB or sArenaDB.version < sArena.Defaults.version ) then
sArenaDB = CopyTable(sArena.Defaults)
end
if ( not IsAddOnLoaded("Blizzard_ArenaUI") ) then
LoadAddOn("Blizzard_ArenaUI")
end
self:Initialize()
if ( sArenaDB.firstrun ) then
sArenaDB.firstrun = false
self:Test(3)
print("Looks like this is your first time running this version of sArena! Type /sarena for options.")
end
end
end
sArena:RegisterEvent("ADDON_LOADED")