Quantcast

Added custom tags to own file

p3lim-52096 [07-19-09 - 17:39]
Added custom tags to own file
Fixed aura timers
Removed LSM from optdeps

git-svn-id: svn://svn.wowinterface.com/oUF_P3lim-52/trunk@85 8c7459ed-49dc-4bc8-85d7-b6381a8f5413
Filename
oUF_P3lim/customtags.lua
oUF_P3lim/oUF_P3lim.lua
oUF_P3lim/oUF_P3lim.toc
diff --git a/oUF_P3lim/customtags.lua b/oUF_P3lim/customtags.lua
new file mode 100644
index 0000000..af69d65
--- /dev/null
+++ b/oUF_P3lim/customtags.lua
@@ -0,0 +1,71 @@
+local format = string.format
+local gsub = string.gsub
+
+local colors = setmetatable({
+	power = setmetatable({
+		['MANA'] = {0, 144/255, 1}
+	}, {__index = oUF.colors.power}),
+	reaction = setmetatable({
+		[2] = {1, 0, 0},
+		[4] = {1, 1, 0},
+		[5] = {0, 1, 0}
+	}, {__index = oUF.colors.reaction}),
+}, {__index = oUF.colors})
+
+local function shortVal(value)
+	if(value >= 1e6) then
+		return ('%.2fm'):format(value / 1e6):gsub('%.?0+([km])$', '%1')
+	elseif(value >= 1e4) then
+		return ('%.1fk'):format(value / 1e3):gsub('%.?0+([km])$', '%1')
+	else
+		return value
+	end
+end
+
+local function hex(r, g, b)
+	if(type(r) == 'table') then
+		if(r.r) then r, g, b = r.r, r.g, r.b else r, g, b = unpack(r) end
+	end
+	return ('|cff%02x%02x%02x'):format(r * 255, g * 255, b * 255)
+end
+
+oUF.Tags['[pvptime]'] = function(unit)
+	return UnitIsPVP(unit) and not IsPVPTimerRunning() and '*' or IsPVPTimerRunning() and ('%d:%02d'):format((GetPVPTimer() / 1000) / 60, (GetPVPTimer() / 1000) % 60)
+end
+
+oUF.TagEvents['[pthreat]'] = 'UNIT_THREAT_LIST_UPDATE'
+oUF.Tags['[pthreat]'] = function()
+	local _, _, perc = UnitDetailedThreatSituation('player', 'target')
+	return perc and ('%s%d|r'):format(hex(GetThreatStatusColor(UnitThreatSituation('player', 'target'))), perc)
+end
+
+oUF.Tags['[phealth]'] = function(unit)
+	local min, max = UnitHealth(unit), UnitHealthMax(unit)
+
+	local status = not UnitIsConnected(unit) and 'Offline' or UnitIsGhost(unit) and 'Ghost' or UnitIsDead(unit) and 'Dead'
+	local target = unit == 'target' and UnitCanAttack('player', unit) and ('%s (%d|cff0090ff%%|r)'):format(shortVal(min), min / max * 100)
+	local player = unit == 'player' and min ~= max and ('|cffff8080%d|r %d|cff0090ff%%|r'):format(min - max, min / max * 100)
+
+	return status and status or target and target or player and player or min ~= max and ('%s |cff0090ff/|r %s'):format(shortVal(min), shortVal(max)) or max
+end
+
+oUF.Tags['[ppower]'] = function(unit)
+	local _, str = UnitPowerType(unit)
+	return ('%s%d|r'):format(hex(colors.power[str] or {1, 1, 1}), oUF.Tags['[curpp]'](unit) or '')
+end
+
+oUF.TagEvents['[pname]'] = 'UNIT_NAME_UPDATE UNIT_REACTION UNIT_FACTION'
+oUF.Tags['[pname]'] = function(unit)
+	local colorString = hex((UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit)) and colors.tapped or
+		(not UnitIsConnected(unit)) and colors.disconnected or
+		(not UnitIsPlayer(unit)) and colors.reaction[UnitReaction(unit, 'player')] or
+		(UnitFactionGroup(unit) and UnitIsEnemy(unit, 'player') and UnitIsPVP(unit)) and {1, 0, 0} or {1, 1, 1})
+
+	return ('%s%s|r'):format(colorString, UnitName(unit))
+end
+
+oUF.TagEvents['[druidpower]'] = 'UNIT_MANA UPDATE_SHAPESHIFT_FORM'
+oUF.Tags['[druidpower]'] = function(unit)
+	local value = UnitPower(unit, 0)
+	return UnitPowerType(unit) ~= 0 and ('|cff0090ff%d - %d%%|r'):format(value, value / UnitPowerMax(unit, 0) * 100)
+end
\ No newline at end of file
diff --git a/oUF_P3lim/oUF_P3lim.lua b/oUF_P3lim/oUF_P3lim.lua
index a83a2f0..d421267 100644
--- a/oUF_P3lim/oUF_P3lim.lua
+++ b/oUF_P3lim/oUF_P3lim.lua
@@ -6,9 +6,7 @@
 --]]


-local gsub = string.gsub
 local format = string.format
-local floor = math.floor

 local localized, class = UnitClass('player')
 local texture = [=[Interface\AddOns\oUF_P3lim\minimalist]=]
@@ -26,11 +24,8 @@ local colors = setmetatable({
 		[4] = {1, 1, 0},
 		[5] = {0, 1, 0}
 	}, {__index = oUF.colors.reaction}),
-	red = {1, 0, 0},
-	white = {1, 1, 1},
 }, {__index = oUF.colors})

-
 local function menu(self)
 	local unit = gsub(self.unit, '(.)', string.upper, 1)
 	if(_G[unit..'FrameDropDown']) then
@@ -38,72 +33,6 @@ local function menu(self)
 	end
 end

-local function truncate(value)
-	if(value >= 1e6) then
-		return gsub(format('%.2fm', value / 1e6), '%.?0+([km])$', '%1')
-	elseif(value >= 1e4) then
-		return gsub(format('%.1fk', value / 1e3), '%.?0+([km])$', '%1')
-	else
-		return value
-	end
-end
-
-local function hex(r, g, b)
-	if(type(r) == 'table') then
-		if(r.r) then r, g, b = r.r, r.g, r.b else r, g, b = unpack(r) end
-	end
-	return string.format('|cff%02x%02x%02x', r * 255, g * 255, b * 255)
-end
-
-oUF.Tags['[p3limpvp]'] = function(unit)
-	return UnitIsPVP(unit) and not IsPVPTimerRunning() and '*' or IsPVPTimerRunning() and format('%d:%02d', floor((GetPVPTimer() / 1000) / 60), (GetPVPTimer() / 1000) % 60)
-end
-
-oUF.TagEvents['[p3limthreat]'] = 'UNIT_THREAT_LIST_UPDATE'
-oUF.Tags['[p3limthreat]'] = function()
-	local _, _, perc = UnitDetailedThreatSituation('player', 'target')
-	return perc and hex(GetThreatStatusColor(UnitThreatSituation('player', 'target')))..floor(perc)
-end
-
-oUF.TagEvents['[p3limstatus]'] = 'UNIT_HEALTH'
-oUF.Tags['[p3limstatus]'] = function(unit)
-	return not UnitIsConnected(unit) and 'Offline' or UnitIsGhost(unit) and 'Ghost' or UnitIsDead(unit) and 'Dead'
-end
-
-oUF.Tags['[p3limhp]'] = function(unit)
-	local status = oUF.Tags['[p3limstatus]'](unit)
-	local min, max = UnitHealth(unit), UnitHealthMax(unit)
-
-	return status and status or
-		(unit == 'target' and UnitCanAttack('player', unit)) and format('%s (%d|cff0090ff%%|r)', truncate(min), floor(min/max*100)) or
-		(unit == 'player' and min~=max) and format('|cffff8080%d|r %d|cff0090ff%%|r', min-max, floor(min/max*100)) or
-		(min~=max) and format('%s |cff0090ff/|r %s', truncate(min), truncate(max)) or max
-end
-
-oUF.Tags['[p3limpp]'] = function(unit)
-	local power = oUF.Tags['[curpp]'](unit)
-	local num, str = UnitPowerType(unit)
-	local c = colors.power[str]
-
-	return c and power ~= 0 and format('|cff%02x%02x%02x%s|r', c[1] * 255, c[2] * 255, c[3] * 255, power)
-end
-
-oUF.TagEvents['[p3limname]'] = 'UNIT_NAME_UPDATE UNIT_REACTION UNIT_FACTION'
-oUF.Tags['[p3limname]'] = function(unit)
-	local c = (UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit)) and colors.tapped or
-		(not UnitIsConnected(unit)) and colors.disconnected or
-		(not UnitIsPlayer(unit)) and colors.reaction[UnitReaction(unit, 'player')] or
-		(UnitFactionGroup(unit) and UnitIsEnemy(unit, 'player') and UnitIsPVP(unit)) and colors.red or colors.white
-
-	return format('|cff%02x%02x%02x%s|r', c[1] * 255, c[2] * 255, c[3] * 255, UnitName(unit))
-end
-
-oUF.TagEvents['[druidpower]'] = 'UNIT_MANA UPDATE_SHAPESHIFT_FORM'
-oUF.Tags['[druidpower]'] = function(unit)
-	local min, max = UnitPower(unit, 0), UnitPowerMax(unit, 0)
-	return UnitPowerType(unit) ~= 0 and format('|cff0090ff%d - %d%%|r', min, math.floor(min / max * 100))
-end
-
 local function updateCombo(self, event, unit)
 	if(unit == PlayerFrame.unit and unit ~= self.CPoints.unit) then
 		self.CPoints.unit = unit
@@ -124,6 +53,8 @@ local function updateDruidPower(self, event, unit)
 end

 local function updatePower(self, event, unit, bar, min, max)
+	if(unit ~= 'target') then return end
+
 	if(max ~= 0) then
 		self.Health:SetHeight(22)
 		bar:Show()
@@ -146,11 +77,7 @@ local function castbarTime(self, duration)
 	end
 end

-local function createAuraTooltip(self)
-	if(not self:IsVisible()) then return end
-
-	GameTooltip:SetOwner(self, 'ANCHOR_BOTTOMRIGHT')
-	GameTooltip:SetUnitAura(self.frame.unit, self:GetID(), self.filter)
+local function hookTooltip(self)
 	GameTooltip:AddLine(format('Casted by %s', self.owner and UnitName(self.owner) or UNKNOWN))
 	GameTooltip:Show()
 end
@@ -161,7 +88,7 @@ local function createAura(self, button, icons)
 	button.overlay:SetTexture([=[Interface\AddOns\oUF_P3lim\border]=])
 	button.overlay:SetTexCoord(0, 1, 0, 1)
 	button.overlay.Hide = function(self) self:SetVertexColor(0.25, 0.25, 0.25) end
-	button:SetScript('OnEnter', createAuraTooltip)
+	button:HookScript('OnEnter', hookTooltip)

 	if(self.unit == 'player') then
 		icons.disableCooldown = true
@@ -170,23 +97,26 @@ local function createAura(self, button, icons)
 	end
 end

-local function updateTime(self)
-	if(self.expiration) then
-		local timeleft = floor(self.expiration - GetTime() + 0.5)
-		self.time:SetText(timeleft > 0 and timeleft or '')
-	else
-		self:SetScript('OnUpdate', nil)
+local function updateTime(self, elapsed)
+	self.timeLeft = max(self.timeLeft - elapsed, 0)
+	self.time:SetText(self.timeLeft < 90 and floor(self.timeLeft) or '')
+
+	if(GameTooltip:IsOwned(self)) then
+		GameTooltip:SetUnitAura(self.frame.unit, self:GetID(), self.filter)
+		hookTooltip(self)
 	end
 end

 local function updateBuff(self, icons, unit, icon, index)
-	local _, _, _, _, _, _, expiration = UnitAura(unit, index, icon.filter)
-	if(expiration and expiration > 0) then
-		icon.expiration = expiration
+	local _, _, _, _, _, duration, expiration = UnitAura(unit, index, icon.filter)
+
+	if(duration > 0 and expiration) then
+		icon.timeLeft = expiration - GetTime()
 		icon:SetScript('OnUpdate', updateTime)
-		icon:Show()
 	else
-		icon:Hide()
+		icon.timeLeft = nil
+		icon.time:SetText()
+		icon:SetScript('OnUpdate', nil)
 	end
 end

@@ -202,7 +132,6 @@ local function updateDebuff(self, icons, unit, icon, index)
 	end
 end

-
 local function customFilter(icons, unit, icon, name, rank, texture, count, dtype, duration, timeLeft, caster)
 	-- This filter is made for me specifically, but you can create
 	-- your own table with spells that this filter can match to.
@@ -239,7 +168,7 @@ local function styleFunction(self, unit)
 	local hpvalue = self.Health:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmallRight')
 	hpvalue:SetPoint('RIGHT', self.Health, -2, -1)
 	hpvalue.frequentUpdates = 0.1
-	self:Tag(hpvalue, unit == 'player' and '[p3limthreat(%|r)]|cffff0000[p3limpvp]|r [p3limhp]' or '[p3limhp]')
+	self:Tag(hpvalue, unit == 'player' and '[pthreat(%|r)]|cffff0000[pvptime]|r [phealth]' or '[phealth]')

 	self.RaidIcon = self.Health:CreateTexture(nil, 'OVERLAY')
 	self.RaidIcon:SetPoint('TOP', self, 0, 8)
@@ -319,14 +248,14 @@ local function styleFunction(self, unit)
 		local power = self.Health:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmallLeft')
 		power:SetPoint('LEFT', self.Health, 2, -1)
 		power.frequentUpdates = 0.1
-		self:Tag(power, '[p3limpp]')
+		self:Tag(power, '[ppower]')

 		self.BarFade = true
 	else
 		local info = self.Health:CreateFontString(nil, 'OVERLAY', 'GameFontHighlightSmallLeft')
 		info:SetPoint('LEFT', self.Health, 2, -1)
 		info:SetPoint('RIGHT', hpvalue, 'LEFT')
-		self:Tag(info, unit == 'target' and '[p3limname]|cff0090ff[( )rare]|r' or '[p3limname]')
+		self:Tag(info, unit == 'target' and '[pname]|cff0090ff[( )rare]|r' or '[pname]')
 	end

 	if(unit == 'pet') then
diff --git a/oUF_P3lim/oUF_P3lim.toc b/oUF_P3lim/oUF_P3lim.toc
index 822e4e7..4c5f89b 100644
--- a/oUF_P3lim/oUF_P3lim.toc
+++ b/oUF_P3lim/oUF_P3lim.toc
@@ -4,6 +4,7 @@
 ## Title: oUF P3lim
 ## Notes: Just another oUF layout
 ## RequiredDeps: oUF
-## OptionalDeps: LibSharedMedia-3.0, oUF_BarFader, oUF_DebuffHighlight, oUF_Experience, oUF_Reputation, oUF_RuneBar
+## OptionalDeps: oUF_BarFader, oUF_DebuffHighlight, oUF_Experience, oUF_Reputation, oUF_RuneBar

+customtags.lua
 oUF_P3lim.lua
\ No newline at end of file