All pastes #47580 Raw Edit

Someone

public text v1 · immutable
#47580 ·published 2006-03-30 10:50 UTC
rendered paste body
BossPanel_ItemBonuses = BossPanelPlugin:new({
   name          = BossPanel_ItemBonusesLocals.Title,
   description   = BossPanel_ItemBonusesLocals.Desc,
   version       = "0.1.3",
   releaseDate   = "03-20-2006",
   author        = "Prandur",
   website       = "http://prandur.wowinterface.com",
   aceCompatible = "103",
   bpCompatible  = "0.4.23",
   category      = "inventory",
   db            = AceDatabase:new("BossPanel_ItemBonusesDB"),
   defaults      = DEFAULT_OPTIONS,
   cmd           = AceChatCmd:new(BossPanel_ItemBonusesLocals.Cmd, BossPanel_ItemBonusesLocals.Cmd_Opt),
   loc           = BossPanel_ItemBonusesLocals,
   hasIcon       = "Interface\\Icons\\Spell_Nature_EnchantArmor.blp",
   canHideText   = TRUE,
   
   ItemBonuses_colors = {
	X = 'FFD200',  -- attributes
	Y = '20FF20',  -- skills
	M = 'FFFFFF',  -- melee
	R = '00C0C0',  -- ranged
	C = 'FFFF00',  -- spells
	A = 'FF60FF',  -- arcane
	I = 'FF3600',  -- fire
	F = '00C0FF',  -- frost
	H = 'FFA400',  -- holy
	N = '00FF60',  -- nature
	S = 'AA12AC',  -- shadow
	L = '20FF20',  -- life
	P = '6060FF',  -- mana
   },
   
   ITEMBONUSES_EFFECTS = {
	{ effect = "STR",	format = "+%d",	short = "STR",	color = "X",	cat = "ATT" },
	{ effect = "AGI",	format = "+%d",	short = "AGI",	color = "X",	cat = "ATT" },
	{ effect = "STA",	format = "+%d",	short = "STA",	color = "X",	cat = "ATT" },
	{ effect = "INT",	format = "+%d",	short = "INT",	color = "X",	cat = "ATT" },
	{ effect = "SPI",	format = "+%d",	short = "SPI",	color = "X",	cat = "ATT" },
	{ effect = "ARMOR",	format = "+%d",	short = "ARM",	color = "X",	cat = "ATT" },

	{ effect = "ARCANERES",	format = "+%d",	short = "R",	color = "A",	cat = "RES" },
	{ effect = "FIRERES",	format = "+%d",	short = "R",	color = "I",	cat = "RES" },
	{ effect = "NATURERES",	format = "+%d",	short = "R",	color = "N",	cat = "RES" },
	{ effect = "FROSTRES",	format = "+%d",	short = "R",	color = "F",	cat = "RES" },
	{ effect = "SHADOWRES",	format = "+%d",	short = "R",	color = "S",	cat = "RES" },

	{ effect = "DEFENSE",	format = "+%d",	short = "DEF",	color = "Y",	cat = "SKILL" },
	{ effect = "MINING",	format = "+%d",	short = "MIN",	color = "Y",	cat = "SKILL" },
	{ effect = "HERBALISM",	format = "+%d",	short = "HER",	color = "Y",	cat = "SKILL" },
	{ effect = "SKINNING",	format = "+%d",	short = "SKI",	color = "Y",	cat = "SKILL" },
	{ effect = "FISHING",	format = "+%d",	short = "FIS",	color = "Y",	cat = "SKILL" },

	{ effect = "ATTACKPOWER",	format = "+%d",		short = "A",	color = "M",	cat = "BON" },
	{ effect = "CRIT",		format = "+%d%%",	short = "C",	color = "M",	cat = "BON" },
	{ effect = "BLOCK",		format = "+%d%%",	short = "B",	color = "M",	cat = "BON" },
	{ effect = "DODGE",		format = "+%d%%",	short = "D",	color = "M",	cat = "BON" },
	{ effect = "PARRY",		format = "+%d%%",	short = "P",	color = "M",	cat = "BON" },
	{ effect = "TOHIT",		format = "+%d%%",	short = "H",	color = "M",	cat = "BON" },
	{ effect = "RANGEDATTACKPOWER", format = "+%d",		short = "A",	color = "R",	cat = "BON" },
	{ effect = "RANGEDCRIT",	format = "+%d%%",	short = "C",	color = "R",	cat = "BON" },

	{ effect = "DMG",		format = "+%d",		short = "D",	color = "C",	cat = "SBON" },
	{ effect = "HEAL",		format = "+%d",		short = "H",	color = "C",	cat = "SBON"},
	{ effect = "HOLYCRIT", 		format = "+%d%%",	short = "HC",	color = "C",	cat = "SBON" },
	{ effect = "SPELLCRIT", 	format = "+%d%%",	short = "SC",	color = "C",	cat = "SBON" },
	{ effect = "SPELLTOHIT",	format = "+%d%%",	short = "SH",	color = "C",	cat = "SBON" },
	{ effect = "ARCANEDMG", 	format = "+%d",		short = "D",	color = "A",	cat = "SBON" },
	{ effect = "FIREDMG", 		format = "+%d",		short = "D",	color = "I",	cat = "SBON" },
	{ effect = "FROSTDMG",		format = "+%d",		short = "D",	color = "F",	cat = "SBON" },
	{ effect = "HOLYDMG",		format = "+%d",		short = "D",	color = "H",	cat = "SBON" },
	{ effect = "NATUREDMG",		format = "+%d",		short = "D",	color = "N",	cat = "SBON" },
	{ effect = "SHADOWDMG",		format = "+%d",		short = "D",	color = "S",	cat = "SBON" },

	{ effect = "HEALTH",	format = "+%d",		short = "P",	color = "L",	cat = "OBON" },
	{ effect = "HEALTHREG",	format = "%d HP/5s",	short = "R",	color = "L",	cat = "OBON" },
	{ effect = "MANA",	format = "+%d",		short = "P",	color = "P",	cat = "OBON" },
	{ effect = "MANAREG",	format = "%d MP/5s",	short = "R",	color = "P",	cat = "OBON" },
    },
    
    ITEMBONUSES_CATEGORIES = {'ATT', 'BON', 'SBON', 'RES', 'SKILL', 'OBON'},
})


function BossPanel_ItemBonuses:Enable()
	self:Hook("BonusScanner_Update", "Update")
end

function BossPanel_ItemBonuses:Disable()
end

function BossPanel_ItemBonuses:Report()
end

function BossPanel_ItemBonuses:UpdateData()
	local check
	for i,e in self.ITEMBONUSES_EFFECTS do
		if self.data[e.effect] then
			check = TRUE
		end
	end
	if not check then
		self.data.display_none = TRUE
	end
end

function BossPanel_ItemBonuses:UpdateText()
	if self.data.display_none then
		if self.data.short_display then
			self:SetText(self.loc.SHORT_TEXT)
		else
			self:SetText(self.loc.TEXT)
		end
	else
		if(not BonusScanner or not BonusScanner.active) then
			self:SetText(BossPanelUtils.Red(self.loc.BONUSSCANNER_MISSING))
		else
			local text = ""
			for i,e in self.ITEMBONUSES_EFFECTS do
				if self.data[e.effect] then
					text = text .. self:GetBonusText(e, FALSE)
				end
			end
			self:SetText(text)
		end
	end
end

function BossPanel_ItemBonuses:UpdateTooltip()
	if (not BonusScanner or not BonusScanner.active) then
		BossPanelTooltip:AddLine(nil, BossPanelUtils.Red(self.loc.BONUSSCANNER_MISSING))
	else
		local cat,val = "",""
		
		for i,e in self.ITEMBONUSES_EFFECTS do

			if(BonusScanner.bonuses[e.effect]) then
				if(e.format) then
		   			val = format(e.format,BonusScanner.bonuses[e.effect])
				else
					val = BonusScanner.bonuses[e.effect]
				end
				if(e.cat ~= cat) then
					cat = e.cat
					BossPanelTooltip:AddCategory(cat, BossPanelUtils.Green(self.loc.CAT[cat] .. ":"))
				end
				BossPanelTooltip:AddDoubleLine(cat, BONUSSCANNER_NAMES[e.effect], BossPanelUtils.White(val))
			end
			
		end
	end
end

function BossPanel_ItemBonuses:MenuSettings(level, value)
	if level == 1 then
		UIDropDownMenu_AddButton({
			text = self.loc.DISPLAY_NONE,
			func = function()
				self:ToggleOption("display_none", TRUE)
			end,
			checked = self.data.display_none,
			keepShownOnClick = true,
		})
		for  i,e in self.ITEMBONUSES_CATEGORIES do
			local my_e = e
			UIDropDownMenu_AddButton({
				text = self.loc.CAT[my_e],
				hasArrow = TRUE,
				value = my_e,
			})
		end
		BossPanelUtils.AddSpacerDropDownMenu()
		UIDropDownMenu_AddButton({
			text = self.loc.SHORTDISPLAY,
			func = function()
				self:ToggleOption("short_display", TRUE)
			end,
			checked = self.data.short_display,
			keepShownOnClick = true,
		})
		UIDropDownMenu_AddButton({
			text = self.loc.COLORED,
			func = function()
				self:ToggleOption("colored", TRUE)
			end,
			checked = self.data.colored,
			keepShownOnClick = true,
		})
	elseif level == 2 then
		for i,e in self.ITEMBONUSES_EFFECTS do
			if(e.cat == value) then
				local my_e = e
				UIDropDownMenu_AddButton({
					text = self:GetBonusText(my_e, TRUE),
					func = function()
						self:ToggleOption(my_e.effect, TRUE)
					end,
					checked = self.data[my_e.effect],
					keepShownOnClick = true,
				}, level)
			end
		end
	end
end

function BossPanel_ItemBonuses:ToggleOption(var, doUpdate)
	if self.data[var] then
		self.data[var] = nil
	else
		self.data[var] = true
	end
	if doUpdate then
		self:Update()
	end
end

function BossPanel_ItemBonuses:GetBonusText(EffectTable, forMenu)
	local text = ""
	local val = ""
	if(BonusScanner.bonuses[EffectTable.effect]) then
		val = format(EffectTable.format, BonusScanner.bonuses[EffectTable.effect])
	end
	if forMenu then
		text = text .. "[" .. BossPanelUtils.Colorize(self.ItemBonuses_colors[EffectTable.color], EffectTable.short) .. "] " .. BONUSSCANNER_NAMES[EffectTable.effect]
	else
		if self.data.short_display then
			text = text .. BossPanelUtils.Colorize(self.ItemBonuses_colors[EffectTable.color], EffectTable.short)
		else
			text = text .. BossPanelUtils.Colorize(self.ItemBonuses_colors[EffectTable.color], BONUSSCANNER_NAMES[EffectTable.effect])
		end
	end
	if val == "" then
		if not forMenu then
			val = format(EffectTable.format, 0)
		else
			return text
		end
	end
	if self.data.colored then
		val = BossPanelUtils.Colorize(self.ItemBonuses_colors[EffectTable.color], val)
	else
		val = BossPanelUtils.White(val)
	end
	if forMenu then
		text = text .. " (" .. val .. ")"
	else
		text = " " .. text .. val
	end
	return text
end


BossPanel_ItemBonuses:RegisterForLoad()