режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,313 @@
|
||||
UIPanelWindows["TokenFrame"] = { area = "left", pushable = 1, whileDead = 1 };
|
||||
TOKEN_BUTTON_OFFSET = 3;
|
||||
MAX_WATCHED_TOKENS = 3;
|
||||
BACKPACK_TOKENFRAME_HEIGHT = 22;
|
||||
|
||||
-- REMOVE ME!!!
|
||||
SlashCmdList["TOKENUI"] = function() ToggleCharacter("TokenFrame"); end;
|
||||
|
||||
function TokenButton_OnLoad(self)
|
||||
local name = self:GetName();
|
||||
self.count = _G[name.."Count"];
|
||||
self.name = _G[name.."Name"];
|
||||
self.icon = _G[name.."Icon"];
|
||||
self.check = _G[name.."Check"];
|
||||
self.expandIcon = _G[name.."ExpandIcon"];
|
||||
self.categoryLeft = _G[name.."CategoryLeft"];
|
||||
self.categoryRight = _G[name.."CategoryRight"];
|
||||
self.highlight = _G[name.."Highlight"];
|
||||
self.stripe = _G[name.."Stripe"];
|
||||
end
|
||||
|
||||
function TokenFrame_OnLoad()
|
||||
TokenFrameContainerScrollBar.Show =
|
||||
function (self)
|
||||
TokenFrameContainer:SetWidth(299);
|
||||
for _, button in next, _G["TokenFrameContainer"].buttons do
|
||||
button:SetWidth(295);
|
||||
end
|
||||
getmetatable(self).__index.Show(self);
|
||||
end
|
||||
|
||||
TokenFrameContainerScrollBar.Hide =
|
||||
function (self)
|
||||
TokenFrameContainer:SetWidth(313);
|
||||
for _, button in next, TokenFrameContainer.buttons do
|
||||
button:SetWidth(313);
|
||||
end
|
||||
getmetatable(self).__index.Hide(self);
|
||||
end
|
||||
TokenFrameContainer.update = TokenFrame_Update;
|
||||
HybridScrollFrame_CreateButtons(TokenFrameContainer, "TokenButtonTemplate", 0, -2, "TOPLEFT", "TOPLEFT", 0, -TOKEN_BUTTON_OFFSET);
|
||||
local buttons = TokenFrameContainer.buttons;
|
||||
local numButtons = #buttons;
|
||||
for i=1, numButtons do
|
||||
if ( mod(i, 2) == 1 ) then
|
||||
buttons[i].stripe:Hide();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function TokenFrame_OnShow(self)
|
||||
SetButtonPulse(CharacterFrameTab5, 0, 1); --Stop the button pulse
|
||||
TokenFrame_Update();
|
||||
end
|
||||
|
||||
function TokenFrame_Update()
|
||||
|
||||
-- Setup the buttons
|
||||
local scrollFrame = TokenFrameContainer;
|
||||
local offset = HybridScrollFrame_GetOffset(scrollFrame);
|
||||
local buttons = scrollFrame.buttons;
|
||||
local numButtons = #buttons;
|
||||
local numTokenTypes = GetCurrencyListSize();
|
||||
local name, isHeader, isExpanded, isUnused, isWatched, count, extraCurrencyType, icon, itemID;
|
||||
local button, index;
|
||||
for i=1, numButtons do
|
||||
index = offset+i;
|
||||
name, isHeader, isExpanded, isUnused, isWatched, count, extraCurrencyType, icon, itemID = GetCurrencyListInfo(index);
|
||||
|
||||
button = buttons[i];
|
||||
button.check:Hide();
|
||||
if ( not name or name == "" ) then
|
||||
button:Hide();
|
||||
else
|
||||
if ( isHeader ) then
|
||||
button.categoryLeft:Show();
|
||||
button.categoryRight:Show();
|
||||
button.expandIcon:Show();
|
||||
button.count:SetText("");
|
||||
button.icon:SetTexture("");
|
||||
if ( isExpanded ) then
|
||||
button.expandIcon:SetTexCoord(0.5625, 1, 0, 0.4375);
|
||||
else
|
||||
button.expandIcon:SetTexCoord(0, 0.4375, 0, 0.4375);
|
||||
end
|
||||
button.highlight:SetTexture("Interface\\TokenFrame\\UI-TokenFrame-CategoryButton");
|
||||
button.highlight:SetPoint("TOPLEFT", button, "TOPLEFT", 3, -2);
|
||||
button.highlight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -3, 2);
|
||||
button:SetText(name);
|
||||
button.name:SetText("");
|
||||
button.itemID = nil;
|
||||
button.LinkButton:Hide();
|
||||
else
|
||||
button.categoryLeft:Hide();
|
||||
button.categoryRight:Hide();
|
||||
button.expandIcon:Hide();
|
||||
button.count:SetText(count);
|
||||
button.extraCurrencyType = extraCurrencyType;
|
||||
if ( extraCurrencyType == 1 ) then --Arena points
|
||||
button.icon:SetTexture("Interface\\PVPFrame\\PVP-ArenaPoints-Icon");
|
||||
button.icon:SetTexCoord(0, 1, 0, 1);
|
||||
elseif ( extraCurrencyType == 2 ) then --Honor points
|
||||
local factionGroup = UnitFactionGroup("player");
|
||||
if ( factionGroup ) then
|
||||
button.icon:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup);
|
||||
button.icon:SetTexCoord( 0.03125, 0.59375, 0.03125, 0.59375 );
|
||||
else
|
||||
button.icon:Hide() --We don't know their faction yet!
|
||||
button.icon:SetTexCoord(0, 1, 0, 1);
|
||||
end
|
||||
else
|
||||
button.icon:SetTexture(icon);
|
||||
button.icon:SetTexCoord(0, 1, 0, 1);
|
||||
end
|
||||
if ( isWatched ) then
|
||||
button.check:Show();
|
||||
end
|
||||
button.highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight");
|
||||
button.highlight:SetPoint("TOPLEFT", button, "TOPLEFT", 0, 0);
|
||||
button.highlight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", 0, 0);
|
||||
--Gray out the text if the count is 0
|
||||
if ( count == 0 ) then
|
||||
button.count:SetFontObject("GameFontDisable");
|
||||
button.name:SetFontObject("GameFontDisable");
|
||||
else
|
||||
button.count:SetFontObject("GameFontHighlight");
|
||||
button.name:SetFontObject("GameFontHighlight");
|
||||
end
|
||||
button:SetText("");
|
||||
button.name:SetText(name);
|
||||
button.itemID = itemID;
|
||||
button.LinkButton:Show();
|
||||
end
|
||||
--Manage highlight
|
||||
if ( name == TokenFrame.selectedToken ) then
|
||||
TokenFrame.selectedID = index;
|
||||
button:LockHighlight();
|
||||
else
|
||||
button:UnlockHighlight();
|
||||
end
|
||||
|
||||
button.index = index;
|
||||
button.isHeader = isHeader;
|
||||
button.isExpanded = isExpanded;
|
||||
button.isUnused = isUnused;
|
||||
button.isWatched = isWatched;
|
||||
button:Show();
|
||||
end
|
||||
end
|
||||
local totalHeight = numTokenTypes * (button:GetHeight()+TOKEN_BUTTON_OFFSET);
|
||||
local displayedHeight = #buttons * (button:GetHeight()+TOKEN_BUTTON_OFFSET);
|
||||
|
||||
HybridScrollFrame_Update(scrollFrame, totalHeight, displayedHeight);
|
||||
|
||||
if ( numTokenTypes == 0 ) then
|
||||
CharacterFrameTab5:Hide();
|
||||
else
|
||||
CharacterFrameTab5:Show();
|
||||
end
|
||||
end
|
||||
|
||||
function TokenFramePopup_CloseIfHidden()
|
||||
-- This handles the case where you close a category with the selected token popup shown
|
||||
local numTokenTypes = GetCurrencyListSize();
|
||||
local selectedFound;
|
||||
for i=1, numTokenTypes do
|
||||
if ( TokenFrame.selectedToken == GetCurrencyListInfo(i) ) then
|
||||
selectedFound = 1;
|
||||
end
|
||||
end
|
||||
if ( not selectedFound ) then
|
||||
TokenFramePopup:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function BackpackTokenFrame_Update()
|
||||
local watchButton;
|
||||
local name, count, extraCurrencyType, icon;
|
||||
for i=1, MAX_WATCHED_TOKENS do
|
||||
name, count, extraCurrencyType, icon, itemID = GetBackpackCurrencyInfo(i);
|
||||
-- Update watched tokens
|
||||
if ( name ) then
|
||||
watchButton = _G["BackpackTokenFrameToken"..i];
|
||||
watchButton.extraCurrencyType = extraCurrencyType;
|
||||
if ( extraCurrencyType == 1 ) then --Arena points
|
||||
watchButton.icon:SetTexture("Interface\\PVPFrame\\PVP-ArenaPoints-Icon");
|
||||
watchButton.icon:SetTexCoord(0, 1, 0, 1);
|
||||
elseif ( extraCurrencyType == 2 ) then --Honor points
|
||||
local factionGroup = UnitFactionGroup("player");
|
||||
if ( factionGroup ) then
|
||||
watchButton.icon:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup);
|
||||
watchButton.icon:SetTexCoord( 0.03125, 0.59375, 0.03125, 0.59375 );
|
||||
else
|
||||
watchButton.icon:SetTexCoord(0, 1, 0, 1);
|
||||
end
|
||||
else
|
||||
watchButton.icon:SetTexture(icon);
|
||||
watchButton.icon:SetTexCoord(0, 1, 0, 1);
|
||||
end
|
||||
if ( count <= 99999 ) then
|
||||
watchButton.count:SetText(count);
|
||||
else
|
||||
watchButton.count:SetText("*");
|
||||
end
|
||||
watchButton:Show();
|
||||
BackpackTokenFrame.shouldShow = 1;
|
||||
BackpackTokenFrame.numWatchedTokens = i;
|
||||
watchButton.itemID = itemID;
|
||||
else
|
||||
_G["BackpackTokenFrameToken"..i]:Hide();
|
||||
if ( i == 1 ) then
|
||||
BackpackTokenFrame.shouldShow = nil;
|
||||
end
|
||||
_G["BackpackTokenFrameToken"..i].itemID = nil;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GetNumWatchedTokens()
|
||||
if ( not BackpackTokenFrame.numWatchedTokens ) then
|
||||
-- No count yet so get it
|
||||
BackpackTokenFrame_Update();
|
||||
end
|
||||
return BackpackTokenFrame.numWatchedTokens or 0;
|
||||
end
|
||||
|
||||
function BackpackTokenFrame_IsShown()
|
||||
return BackpackTokenFrame.shouldShow;
|
||||
end
|
||||
|
||||
function ManageBackpackTokenFrame(backpack)
|
||||
if ( not backpack ) then
|
||||
backpack = GetBackpackFrame();
|
||||
end
|
||||
if ( not backpack ) then
|
||||
-- If still no backpack then we don't show the frame
|
||||
BackpackTokenFrame:Hide();
|
||||
return;
|
||||
end
|
||||
if ( BackpackTokenFrame_IsShown() ) then
|
||||
BackpackTokenFrame:SetParent(backpack);
|
||||
BackpackTokenFrame:SetPoint("BOTTOMLEFT", backpack, "BOTTOMLEFT", 9, 0);
|
||||
backpack:SetHeight(BACKPACK_HEIGHT+BACKPACK_TOKENFRAME_HEIGHT);
|
||||
BackpackTokenFrame:Show();
|
||||
else
|
||||
backpack:SetHeight(BACKPACK_HEIGHT);
|
||||
BackpackTokenFrame:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function TokenButton_OnClick(self)
|
||||
if ( self.isHeader ) then
|
||||
if ( self.isExpanded ) then
|
||||
ExpandCurrencyList(self.index, 0);
|
||||
else
|
||||
ExpandCurrencyList(self.index, 1);
|
||||
end
|
||||
else
|
||||
TokenFrame.selectedToken = self.name:GetText();
|
||||
if ( IsModifiedClick("TOKENWATCHTOGGLE") ) then
|
||||
TokenFrame.selectedID = self.index;
|
||||
if ( self.isWatched ) then
|
||||
SetCurrencyBackpack(TokenFrame.selectedID, 0);
|
||||
self.isWatched = false;
|
||||
else
|
||||
-- Set an error message if trying to show too many quests
|
||||
if ( GetNumWatchedTokens() >= MAX_WATCHED_TOKENS ) then
|
||||
UIErrorsFrame:AddMessage(format(TOO_MANY_WATCHED_TOKENS, MAX_WATCHED_TOKENS), 1.0, 0.1, 0.1, 1.0);
|
||||
return;
|
||||
end
|
||||
SetCurrencyBackpack(TokenFrame.selectedID, 1);
|
||||
self.isWatched = true;
|
||||
end
|
||||
if ( TokenFrame.selectedID == self.index ) then
|
||||
TokenFrame_UpdatePopup(self);
|
||||
end
|
||||
BackpackTokenFrame_Update();
|
||||
ManageBackpackTokenFrame();
|
||||
else
|
||||
|
||||
if ( TokenFramePopup:IsShown() ) then
|
||||
if ( TokenFrame.selectedID == self.index ) then
|
||||
TokenFramePopup:Hide();
|
||||
else
|
||||
TokenFramePopup:Show();
|
||||
end
|
||||
else
|
||||
TokenFramePopup:Show();
|
||||
end
|
||||
TokenFrame.selectedID = self.index;
|
||||
TokenFrame_UpdatePopup(self);
|
||||
end
|
||||
end
|
||||
TokenFrame_Update();
|
||||
TokenFramePopup_CloseIfHidden();
|
||||
end
|
||||
|
||||
function TokenFrame_UpdatePopup(button)
|
||||
TokenFramePopupInactiveCheckBox:SetChecked(button.isUnused);
|
||||
TokenFramePopupBackpackCheckBox:SetChecked(button.isWatched);
|
||||
end
|
||||
|
||||
function TokenButtonLinkButton_OnClick(self, button)
|
||||
if ( IsModifiedClick("CHATLINK") ) then
|
||||
ChatEdit_InsertLink(select(2, GetItemInfo(self:GetParent().itemID)));
|
||||
end
|
||||
end
|
||||
|
||||
function BackpackTokenButton_OnClick(self, button)
|
||||
if ( IsModifiedClick("CHATLINK") ) then
|
||||
ChatEdit_InsertLink(select(2, GetItemInfo(self.itemID)));
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user