Quantcast

Add spec buttons

Adrian L Lange [03-30-13 - 21:41]
Add spec buttons
- Also minor texture tweaks
Filename
HabeebIt.lua
diff --git a/HabeebIt.lua b/HabeebIt.lua
index 2cc4f92..29541d2 100644
--- a/HabeebIt.lua
+++ b/HabeebIt.lua
@@ -1,6 +1,7 @@
 local _, ns = ...

 local items = {}
+local specializations = {}
 local collapsed = true
 local currentEncounterID

@@ -130,24 +131,55 @@ local function PopulateList()
 	end
 end

-local function InitializeList()
+local function InitializeList(specific)
 	for button in pairs(items) do
 		items[button] = false
 		button:Hide()
 	end

-	collapsed = false
-	Handle:GetScript('OnClick')(Handle)
+	if(not specific) then
+		collapsed = false
+		Handle:GetScript('OnClick')(Handle)
+	end

-	EJ_SelectInstance(EJ_GetCurrentInstance() or 322)
+	local currentInstance = EJ_GetCurrentInstance()
+	EJ_SelectInstance(currentInstance > 0 and currentInstance or 322)
 	EJ_SetDifficulty(GetRaidDifficultyID() - 2 or 1)

 	local _, _, classID = UnitClass('player')
-	EJ_SetLootFilter(classID, GetSpecializationInfo(GetSpecialization() or 1) or 0)
+	local specialization = GetSpecialization()
+	if(specific or specialization) then
+		EJ_SetLootFilter(classID, GetSpecializationInfo(specific or specialization))
+	else
+		EJ_SetLootFilter(classID, 0)
+	end

 	PopulateList()
 end

+local function UpdateSpecializations(currentIndex)
+	for index, button in pairs(specializations) do
+		if(currentIndex == index) then
+			button.LeftBorder:SetVertexColor(1, 0, 0)
+			button.RightBorder:SetVertexColor(1, 0, 0)
+		else
+			button.LeftBorder:SetVertexColor(1, 1, 1)
+			button.RightBorder:SetVertexColor(1, 1, 1)
+		end
+	end
+end
+
+local function SpecializationClick(self)
+	UpdateSpecializations(self.index)
+	InitializeList(self.index)
+end
+
+local function SpecializationEnter(self)
+	GameTooltip:SetOwner(self, 'ANCHOR_TOPRIGHT')
+	GameTooltip:AddLine(self.name, 1, 1, 1)
+	GameTooltip:Show()
+end
+
 Frame:RegisterEvent('PLAYER_LOGIN')
 Frame:SetScript('OnEvent', function(self, event, ...)
 	if(event == 'SPELL_CONFIRMATION_PROMPT') then
@@ -171,8 +203,7 @@ Frame:SetScript('OnEvent', function(self, event, ...)
 		self:RegisterEvent('EJ_LOOT_DATA_RECEIVED')

 		self:SetPoint('BOTTOMLEFT', BonusRollFrame, 'BOTTOMRIGHT')
-		self:SetWidth(338)
-		self:SetHeight(76)
+		self:SetSize(338, 76)
 		self:Hide()

 		self:SetBackdrop(backdrop)
@@ -183,6 +214,47 @@ Frame:SetScript('OnEvent', function(self, event, ...)
 		Empty:SetPoint('CENTER')
 		Empty:SetText('This encounter has no possible items for\nyour current class and/or specialization')
 		self.Empty = Empty
+
+		for index = 1, GetNumSpecializations() do
+			local SpecButton = CreateFrame('Button', nil, self)
+			SpecButton:SetSize(24, 16)
+			SpecButton:SetScript('OnClick', SpecializationClick)
+			SpecButton:SetScript('OnEnter', SpecializationEnter)
+			SpecButton:SetScript('OnLeave', GameTooltip_Hide)
+
+			local _, name, _, texture = GetSpecializationInfo(index)
+			SpecButton.index = index
+			SpecButton.name = name
+
+			local SpecBackground = SpecButton:CreateTexture(nil, 'BACKGROUND')
+			SpecBackground:SetAllPoints()
+			SpecBackground:SetTexture(texture)
+			SpecBackground:SetTexCoord(0, 1, 0.2, 0.8)
+
+			local SpecLeft = SpecButton:CreateTexture(nil, 'BORDER')
+			SpecLeft:SetPoint('BOTTOMLEFT', -6, -7)
+			SpecLeft:SetSize(18, 24)
+			SpecLeft:SetTexture([[Interface\RaidFrame\RaidPanel-BottomLeft]])
+			SpecLeft:SetTexCoord(0, 0.8, 0, 1)
+			SpecButton.LeftBorder = SpecLeft
+
+			local SpecRight = SpecButton:CreateTexture(nil, 'BORDER')
+			SpecRight:SetPoint('BOTTOMRIGHT', 6, -7)
+			SpecRight:SetSize(18, 24)
+			SpecRight:SetTexture([[Interface\RaidFrame\RaidPanel-BottomRight]])
+			SpecRight:SetTexCoord(0.2, 1, 0, 1)
+			SpecButton.RightBorder = SpecRight
+
+			if(index == 1) then
+				SpecButton:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 20, 2)
+			else
+				SpecButton:SetPoint('LEFT', specializations[index - 1], 'RIGHT', 15, 0)
+			end
+
+			specializations[index] = SpecButton
+		end
+
+		UpdateSpecializations(GetSpecialization())
 	end
 end)

@@ -190,11 +262,11 @@ Handle:SetScript('OnClick', function(self)
 	self:ClearAllPoints()

 	if(collapsed) then
-		self:SetPoint('BOTTOMRIGHT', Frame, 14, 4)
+		self:SetPoint('BOTTOMRIGHT', Frame, 16, 4)
 		self:GetNormalTexture():SetTexCoord(1/2, 1, 0, 1)
 		Frame:Show()
 	else
-		self:SetPoint('BOTTOMRIGHT', BonusRollFrame, 14, 4)
+		self:SetPoint('BOTTOMRIGHT', BonusRollFrame, 16, 4)
 		self:GetNormalTexture():SetTexCoord(0, 1/2, 0, 1)
 		Frame:Hide()
 	end
@@ -202,14 +274,14 @@ Handle:SetScript('OnClick', function(self)
 	collapsed = not collapsed
 end)

-Handle:SetPoint('BOTTOMRIGHT', 14, 4)
+Handle:SetPoint('BOTTOMRIGHT', 16, 4)
 Handle:SetSize(16, 64)
 Handle:SetNormalTexture([[Interface\RaidFrame\RaidPanel-Toggle]])
 Handle:GetNormalTexture():SetTexCoord(0, 1/2, 0, 1)
-Handle:SetFrameStrata('BACKGROUND')

 local HandleBackground = Handle:CreateTexture(nil, 'BACKGROUND')
-HandleBackground:SetAllPoints()
+HandleBackground:SetPoint('BOTTOMLEFT', -2, 0)
+HandleBackground:SetPoint('TOPRIGHT')
 HandleBackground:SetTexture(0, 0, 0, 0.8)

 local BorderBottom = Handle:CreateTexture(nil, 'BORDER')