You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
233 lines
7.2 KiB
233 lines
7.2 KiB
local MAX_WIDTH = 180;
|
|
local MIN_WIDTH = 0;
|
|
local EXTRA_HEIGHT = 0;
|
|
local ICON_SIZE = 20;
|
|
local TOOLTIP_PADDING = 6;
|
|
|
|
|
|
local UIParent = UIParent;
|
|
local GetCursorPosition = GetCursorPosition;
|
|
local GetItemInfoInstant = C_Item.GetItemInfoInstant;
|
|
local GetTransmogItemAppearanceID = C_TransmogCollection.GetItemInfo;
|
|
local GetItemAppearanceID;
|
|
local FadeFrame = NarciFadeUI.Fade;
|
|
|
|
local DataProvider = {};
|
|
|
|
function DataProvider:GetInventoryName(itemEquipLoc)
|
|
if not self.invTypes then
|
|
self.invTypes = {};
|
|
end
|
|
if itemEquipLoc then
|
|
if not self.invTypes[itemEquipLoc] then
|
|
self.invTypes[itemEquipLoc] = _G[itemEquipLoc];
|
|
end
|
|
return self.invTypes[itemEquipLoc] or "Invalid Loc"
|
|
end
|
|
end
|
|
|
|
|
|
NarciWeaponTooltipMixin = {};
|
|
|
|
function NarciWeaponTooltipMixin:OnLoad()
|
|
local a = 12;
|
|
|
|
NarciAPI.NineSliceUtil.SetUpBackdrop(self, "blizzardTooltipBorder", 0, 0.27, 0.27, 0.27);
|
|
|
|
local p = self.Pointer;
|
|
p:ClearAllPoints();
|
|
p:SetSize(a, a);
|
|
p:SetTexture("Interface\\AddOns\\Narcissus\\Art\\Tooltip\\Tooltip-Grey27-Pointer");
|
|
p:SetPoint("RIGHT", self, "LEFT", 1, 0);
|
|
|
|
self.ItemIcon:ClearAllPoints();
|
|
self.ItemIcon:SetPoint("TOPLEFT", self, "TOPLEFT", TOOLTIP_PADDING, -TOOLTIP_PADDING);
|
|
|
|
self.uiScale = UIParent:GetEffectiveScale();
|
|
self:SetAlpha(0);
|
|
|
|
self:SetScript("OnLoad", nil);
|
|
self.OnLoad = nil;
|
|
|
|
self:ToggleExtraInfo(false);
|
|
end
|
|
|
|
function NarciWeaponTooltipMixin:FadeOut()
|
|
FadeFrame(self, 0.12, 0);
|
|
end
|
|
|
|
function NarciWeaponTooltipMixin:OnHide()
|
|
self:Hide();
|
|
self:SetAlpha(0);
|
|
end
|
|
|
|
function NarciWeaponTooltipMixin:SetNameID(name, itemID, boundaryFrame)
|
|
if name and itemID then
|
|
self.itemID = itemID;
|
|
local _, itemType, itemSubType, itemEquipLoc, icon = GetItemInfoInstant(itemID);
|
|
self.ItemIcon:SetTexture(icon);
|
|
self.IDText:SetText(DataProvider:GetInventoryName(itemEquipLoc).." "..itemID);
|
|
--local fileID = boundaryFrame.Model:GetModelFileID();
|
|
--fileID = self.ItemIcon:GetTextureFileID();
|
|
--self.IDText:SetText(itemID);
|
|
|
|
self.Name:SetSize(0, 0);
|
|
self.Name:SetText(name);
|
|
local textWidth = self.Name:GetWrappedWidth();
|
|
if textWidth > MAX_WIDTH then
|
|
textWidth = MAX_WIDTH;
|
|
self.Name:SetWidth(textWidth + 0.5);
|
|
end
|
|
|
|
textWidth = math.max(self.Name:GetWrappedWidth(), self.IDText:GetWrappedWidth());
|
|
|
|
local textHeight = self.Name:GetHeight() + self.IDText:GetHeight() + 2;
|
|
if self.showExtraInfo then
|
|
self:SetExtraInfo(itemID, boundaryFrame.itemModID, boundaryFrame.sourceID);
|
|
if textWidth < MIN_WIDTH then
|
|
textWidth = MIN_WIDTH;
|
|
end
|
|
self.ExtraInfoFrame.shadow:SetWidth(textWidth);
|
|
self.ExtraInfoFrame:SetPoint("TOPLEFT", self, "TOPLEFT", 10, -textHeight - 14);
|
|
else
|
|
|
|
end
|
|
self:SetSize( textWidth + ICON_SIZE + 2*TOOLTIP_PADDING + 4, math.max(textHeight, ICON_SIZE) + 2*TOOLTIP_PADDING);
|
|
|
|
if boundaryFrame then
|
|
self.xMin = boundaryFrame:GetRight() - 24;
|
|
else
|
|
self.xMin = 0;
|
|
end
|
|
|
|
FadeFrame(self, 0.2, 1);
|
|
self:OnUpdate();
|
|
|
|
--[[
|
|
if GetTransmogItemAppearanceID(itemID) then
|
|
self.Name:SetTextColor(0.66, 0.66, 0.66);
|
|
else
|
|
self.Name:SetTextColor(1, 0.3137, 0.3137);
|
|
end
|
|
--]]
|
|
else
|
|
self:Hide();
|
|
end
|
|
end
|
|
|
|
function NarciWeaponTooltipMixin:OnUpdate(elapsed)
|
|
self.x, self.y = GetCursorPosition();
|
|
self.x = self.x + 12;
|
|
if (self.x - self.xMin) < -180 or (self.x - self.xMin) > 80 then
|
|
self:Hide();
|
|
end
|
|
if self.x < self.xMin then
|
|
self.x = 0.1*(self.x - self.xMin) + self.xMin;
|
|
end
|
|
self:SetPoint("LEFT", UIParent, "BOTTOMLEFT", self.x, self.y);
|
|
end
|
|
|
|
|
|
function NarciWeaponTooltipMixin:ToggleExtraInfo(state)
|
|
if self.ExtraInfoFram then
|
|
if state then
|
|
if self.Load then
|
|
self:Load();
|
|
end
|
|
EXTRA_HEIGHT = 24;
|
|
self.ExtraInfoFrame:Show();
|
|
else
|
|
EXTRA_HEIGHT = 0;
|
|
self.ExtraInfoFrame:Hide();
|
|
end
|
|
end;
|
|
|
|
self.showExtraInfo = state;
|
|
end
|
|
|
|
function NarciWeaponTooltipMixin:Load()
|
|
--Create Data Blocks
|
|
local frame = CreateFrame("Frame", nil, self);
|
|
self.ExtraInfoFrame = frame;
|
|
frame:SetPoint("TOPLEFT", self, "TOPLEFT", 10, 0);
|
|
|
|
frame.headers = {};
|
|
frame.data = {};
|
|
|
|
local headerNames = {
|
|
"itemID", "modID", "sourceID", "visualID",
|
|
}
|
|
local testIDs = {
|
|
182574, 34, 116654, 132498,
|
|
}
|
|
|
|
local totalWidth = 0;
|
|
local blockWidth;
|
|
|
|
for i = 1, 4 do
|
|
frame.headers[i] = frame:CreateFontString(nil, "OVERLAY", "NarciIndicatorDigitTiny");
|
|
frame.headers[i]:SetText(headerNames[i]);
|
|
if i == 2 then
|
|
blockWidth = 28;
|
|
else
|
|
blockWidth = 40;
|
|
end
|
|
frame.headers[i]:SetSize(blockWidth, 10);
|
|
if i <= 2 then
|
|
frame.headers[i]:SetPoint("TOPLEFT", frame, "TOPLEFT", totalWidth, -3);
|
|
else
|
|
frame.headers[i]:SetPoint("TOPLEFT", frame.headers[i - 1], "TOPRIGHT", 0, 0);
|
|
end
|
|
frame.headers[i]:SetTextColor(0.5, 0.5, 0.5);
|
|
frame.data[i] = frame:CreateFontString(nil, "OVERLAY", "NarciIndicatorDigitTiny");
|
|
frame.data[i]:SetText(testIDs[i]);
|
|
frame.data[i]:SetWidth(blockWidth);
|
|
frame.data[i]:SetPoint("TOP", frame.headers[i], "TOP", 0, -10);
|
|
frame.data[i]:SetTextColor(1, 0.82, 0);
|
|
totalWidth = totalWidth + blockWidth;
|
|
end
|
|
|
|
frame:SetSize(totalWidth, 40);
|
|
MIN_WIDTH = totalWidth;
|
|
|
|
--Inner Shadow
|
|
local shadow = frame:CreateTexture(nil, "OVERLAY");
|
|
shadow:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, 0);
|
|
shadow:SetSize(totalWidth, 4);
|
|
shadow:SetColorTexture(0, 0, 0, 0.5);
|
|
frame.shadow = shadow;
|
|
|
|
self.Load = nil;
|
|
end
|
|
|
|
function NarciWeaponTooltipMixin:SetExtraInfo(itemID, itemModID, sourceID)
|
|
if not GetItemAppearanceID then
|
|
GetItemAppearanceID = NarciItemDatabase.GetItemAppearanceID;
|
|
end
|
|
local frame = self.ExtraInfoFrame;
|
|
|
|
if not sourceID then
|
|
sourceID = NarciItemDatabase.GetSourceID(itemID);
|
|
end
|
|
frame.data[1]:SetText(itemID);
|
|
frame.data[2]:SetText(itemModID);
|
|
frame.data[3]:SetText(sourceID or "|cff545454--|r");
|
|
if itemModID then
|
|
frame.headers[2]:SetWidth(28);
|
|
frame.headers[2]:Show();
|
|
MIN_WIDTH = 148;
|
|
local visualID = GetTransmogItemAppearanceID(itemID, itemModID);
|
|
frame.data[4]:SetText(visualID or "|cff545454--|r");
|
|
frame.data[1]:SetTextColor(0.87, 0.45, 0.15);
|
|
frame.data[2]:SetTextColor(0.87, 0.45, 0.15);
|
|
else
|
|
frame.headers[2]:SetWidth(0.1);
|
|
frame.headers[2]:Hide();
|
|
if GetItemAppearanceID then
|
|
local visualID = GetItemAppearanceID(itemID);
|
|
frame.data[4]:SetText(visualID or "|cff545454--|r");
|
|
end
|
|
frame.data[1]:SetTextColor(1, 0.82, 0);
|
|
MIN_WIDTH = 120;
|
|
end
|
|
end
|