/Tukui/modules/datatext/expertise.lua
http://github.com/Asphyxia/Tukui · Lua · 111 lines · 91 code · 14 blank · 6 comment · 18 complexity · 2e10fb4c499c1ce089b343a60c0c0bb5 MD5 · raw file
- -----------------------------------------
- -- Expertise Rating
- -----------------------------------------
- local T, C, L = unpack(select(2, ...)) -- Import Functions/Constants, Config, Locales
- if not C["datatext"].expertise or C["datatext"].expertise == 0 then return end
- local Stat = CreateFrame("Frame")
- Stat:SetFrameStrata("MEDIUM")
- Stat:EnableMouse(true)
- Stat:SetFrameLevel(3)
- local Text = TukuiInfoLeft:CreateFontString(nil, "LOW")
- Text:SetFont(C["media"].pixelfont, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
- Text:SetShadowOffset(T.mult, -T.mult)
- T.PP(C["datatext"].expertise, Text)
- Stat:SetParent(Text:GetParent())
- local _G = getfenv(0)
- local format = string.format
- local displayModifierString = string.join("", "%s", T.datacolor, "%d|r")
- -- initial delay for update (let the ui load)
- local int = 5
- local function Update(self, t)
- int = int - t
- if int > 0 then return end
- local expertise, offhandExpertise = GetExpertise();
- local speed, offhandSpeed = UnitAttackSpeed("player");
- local text;
- if( offhandSpeed ) then
- text = expertise.." / "..offhandExpertise;
- else
- text = expertise;
- end
- Text:SetFormattedText(displayModifierString, STAT_EXPERTISE..": ", text)
- self:SetAllPoints(Text)
- int = 2
- end
- Stat:SetScript('OnEnter', function(self)
- local anchor, panel, xoff, yoff = T.DataTextTooltipAnchor(Text)
- GameTooltip:SetOwner(panel, anchor, xoff, yoff)
- GameTooltip:ClearLines()
-
- local expertise, offhandExpertise = GetExpertise();
- local expertisePercent, offhandExpertisePercent = GetExpertisePercent();
- expertisePercent = format("%.2f", expertisePercent);
- offhandExpertisePercent = format("%.2f", offhandExpertisePercent);
-
- local expertiseDisplay, expertisePercentDisplay;
- if (IsDualWielding()) then
- expertiseDisplay = expertise.." / "..offhandExpertise;
- expertisePercentDisplay = expertisePercent.."% / "..offhandExpertisePercent.."%";
- else
- expertiseDisplay = expertise;
- expertisePercentDisplay = expertisePercent.."%";
- end
-
- GameTooltip:SetText(HIGHLIGHT_FONT_COLOR_CODE..format(PAPERDOLLFRAME_TOOLTIP_FORMAT, _G["COMBAT_RATING_NAME"..CR_EXPERTISE]).." "..expertiseDisplay..FONT_COLOR_CODE_CLOSE);
- GameTooltip:AddLine(format(CR_EXPERTISE_TOOLTIP, expertisePercentDisplay, GetCombatRating(CR_EXPERTISE), GetCombatRatingBonus(CR_EXPERTISE)), NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, true);
- GameTooltip:AddLine(" ");
-
- -- Dodge chance
- GameTooltip:AddDoubleLine(STAT_TARGET_LEVEL, DODGE_CHANCE, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
- local playerLevel = UnitLevel("player");
- for i=0, 3 do
- local mainhandDodge, offhandDodge = GetEnemyDodgeChance(i);
- mainhandDodge = format("%.2f%%", mainhandDodge);
- offhandDodge = format("%.2f%%", offhandDodge);
- local level = playerLevel + i;
- if (i == 3) then
- level = level.." / |TInterface\\TargetingFrame\\UI-TargetingFrame-Skull:0|t";
- end
- local dodgeDisplay;
- if (IsDualWielding() and mainhandDodge ~= offhandDodge) then
- dodgeDisplay = mainhandDodge.." / "..offhandDodge;
- else
- dodgeDisplay = mainhandDodge.." ";
- end
- GameTooltip:AddDoubleLine(" "..level, dodgeDisplay.." ", NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
- end
-
- -- Parry chance
- GameTooltip:AddLine(" ");
- GameTooltip:AddDoubleLine(STAT_TARGET_LEVEL, PARRY_CHANCE, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
- local playerLevel = UnitLevel("player");
- for i=0, 3 do
- local mainhandParry, offhandParry = GetEnemyParryChance(i);
- mainhandParry = format("%.2f%%", mainhandParry);
- offhandParry = format("%.2f%%", offhandParry);
- local level = playerLevel + i;
- if (i == 3) then
- level = level.." / |TInterface\\TargetingFrame\\UI-TargetingFrame-Skull:0|t";
- end
- local parryDisplay;
- if (IsDualWielding() and mainhandParry ~= offhandParry) then
- parryDisplay = mainhandParry.." / "..offhandParry;
- else
- parryDisplay = mainhandParry.." ";
- end
- GameTooltip:AddDoubleLine(" "..level, parryDisplay.." ", NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
- end
-
- GameTooltip:Show()
- end)
- Stat:SetScript('OnLeave', function() GameTooltip:Hide() end)
- Stat:SetScript("OnUpdate", Update)
- Update(Stat, 6)