режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,270 @@
|
||||
function ButtonInventorySlot (self)
|
||||
return BankButtonIDToInvSlotID(self:GetID(),self.isBag)
|
||||
end
|
||||
|
||||
function BankFrameBaseButton_OnLoad (self)
|
||||
self:RegisterForDrag("LeftButton");
|
||||
self:RegisterForClicks("LeftButtonUp","RightButtonUp");
|
||||
self.GetInventorySlot = ButtonInventorySlot;
|
||||
self.UpdateTooltip = BankFrameItemButton_OnEnter;
|
||||
end
|
||||
|
||||
function BankFrameItemButton_OnLoad (self)
|
||||
BankFrameBaseButton_OnLoad (self);
|
||||
self.SplitStack = function(button, split)
|
||||
SplitContainerItem(BANK_CONTAINER, button:GetID(), split);
|
||||
end
|
||||
end
|
||||
|
||||
function BankFrameBagButton_OnLoad (self)
|
||||
self.isBag = 1;
|
||||
BankFrameBaseButton_OnLoad(self);
|
||||
end
|
||||
|
||||
function BankFrameItemButton_OnEnter (self)
|
||||
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
|
||||
if ( not GameTooltip:SetInventoryItem("player", self:GetInventorySlot()) ) then
|
||||
if ( self.isBag ) then
|
||||
GameTooltip:SetText(self.tooltipText);
|
||||
end
|
||||
end
|
||||
CursorUpdate(self);
|
||||
end
|
||||
|
||||
function BankFrameItemButton_Update (button)
|
||||
local texture = _G[button:GetName().."IconTexture"];
|
||||
local inventoryID = button:GetInventorySlot();
|
||||
local textureName = GetInventoryItemTexture("player",inventoryID);
|
||||
local slotName = button:GetName();
|
||||
local id;
|
||||
local slotTextureName;
|
||||
button.hasItem = nil;
|
||||
|
||||
if( button.isBag ) then
|
||||
id, slotTextureName = GetInventorySlotInfo(strsub(slotName,10));
|
||||
else
|
||||
local isQuestItem, questId, isActive = GetContainerItemQuestInfo(BANK_CONTAINER, button:GetID());
|
||||
local questTexture = _G[button:GetName().."IconQuestTexture"];
|
||||
if ( questId and not isActive ) then
|
||||
questTexture:SetTexture(TEXTURE_ITEM_QUEST_BANG);
|
||||
questTexture:Show();
|
||||
elseif ( questId or isQuestItem ) then
|
||||
questTexture:SetTexture(TEXTURE_ITEM_QUEST_BORDER);
|
||||
questTexture:Show();
|
||||
else
|
||||
questTexture:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
if ( textureName ) then
|
||||
texture:SetTexture(textureName);
|
||||
texture:Show();
|
||||
SetItemButtonCount(button,GetInventoryItemCount("player",inventoryID));
|
||||
button.hasItem = 1;
|
||||
elseif ( slotTextureName and button.isBag ) then
|
||||
texture:SetTexture(slotTextureName);
|
||||
SetItemButtonCount(button,0);
|
||||
texture:Show();
|
||||
else
|
||||
texture:Hide();
|
||||
SetItemButtonCount(button,0);
|
||||
end
|
||||
|
||||
BankFrameItemButton_UpdateLocked(button);
|
||||
BankFrame_UpdateCooldown(BANK_CONTAINER, button);
|
||||
end
|
||||
|
||||
function BankFrame_UpdateCooldown(container, button)
|
||||
local cooldown = _G[button:GetName().."Cooldown"];
|
||||
local start, duration, enable = GetContainerItemCooldown(container, button:GetID());
|
||||
CooldownFrame_SetTimer(cooldown, start, duration, enable);
|
||||
if ( duration > 0 and enable == 0 ) then
|
||||
SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4);
|
||||
end
|
||||
end
|
||||
|
||||
function BankFrameItemButton_UpdateLocked (button)
|
||||
local inventoryID = button:GetInventorySlot();
|
||||
if ( IsInventoryItemLocked(inventoryID) ) then
|
||||
SetItemButtonDesaturated(button, 1, 0.5, 0.5, 0.5);
|
||||
else
|
||||
if ( button.isBag and ((button:GetID() - 4) > GetNumBankSlots()) ) then
|
||||
return;
|
||||
end
|
||||
SetItemButtonDesaturated(button, nil, 0.5, 0.5, 0.5);
|
||||
end
|
||||
end
|
||||
|
||||
function BankFrame_OnLoad (self)
|
||||
self:RegisterEvent("BANKFRAME_OPENED");
|
||||
self:RegisterEvent("BANKFRAME_CLOSED");
|
||||
end
|
||||
|
||||
function UpdateBagSlotStatus ()
|
||||
local purchaseFrame = BankFramePurchaseInfo;
|
||||
if( purchaseFrame == nil ) then
|
||||
return;
|
||||
end
|
||||
|
||||
local numSlots,full = GetNumBankSlots();
|
||||
local button;
|
||||
for i=1, NUM_BANKBAGSLOTS, 1 do
|
||||
button = _G["BankFrameBag"..i];
|
||||
if ( button ) then
|
||||
if ( i <= numSlots ) then
|
||||
SetItemButtonTextureVertexColor(button, 1.0,1.0,1.0);
|
||||
button.tooltipText = BANK_BAG;
|
||||
else
|
||||
SetItemButtonTextureVertexColor(button, 1.0,0.1,0.1);
|
||||
button.tooltipText = BANK_BAG_PURCHASE;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- pass in # of current slots, returns cost of next slot
|
||||
local cost = GetBankSlotCost(numSlots);
|
||||
BankFrame.nextSlotCost = cost;
|
||||
if( GetMoney() >= cost ) then
|
||||
SetMoneyFrameColor("BankFrameDetailMoneyFrame", "white");
|
||||
else
|
||||
SetMoneyFrameColor("BankFrameDetailMoneyFrame", "red")
|
||||
end
|
||||
MoneyFrame_Update("BankFrameDetailMoneyFrame", cost);
|
||||
|
||||
if( full ) then
|
||||
purchaseFrame:Hide();
|
||||
else
|
||||
purchaseFrame:Show();
|
||||
end
|
||||
end
|
||||
|
||||
function CloseBankBagFrames ()
|
||||
for i=NUM_BAG_SLOTS+1, (NUM_BAG_SLOTS + NUM_BANKBAGSLOTS), 1 do
|
||||
CloseBag(i);
|
||||
end
|
||||
end
|
||||
|
||||
function BankFrame_OnEvent (self, event, ...)
|
||||
if ( event == "BANKFRAME_OPENED" ) then
|
||||
BankFrameTitleText:SetText(UnitName("npc"));
|
||||
SetPortraitTexture(BankPortraitTexture,"npc");
|
||||
ShowUIPanel(self);
|
||||
if ( not self:IsShown() ) then
|
||||
CloseBankFrame();
|
||||
end
|
||||
elseif ( event == "BANKFRAME_CLOSED" ) then
|
||||
HideUIPanel(self);
|
||||
elseif ( event == "ITEM_LOCK_CHANGED" ) then
|
||||
local bag, slot = ...;
|
||||
if ( bag == BANK_CONTAINER ) then
|
||||
if ( slot <= NUM_BANKGENERIC_SLOTS ) then
|
||||
BankFrameItemButton_UpdateLocked(_G["BankFrameItem"..slot]);
|
||||
else
|
||||
BankFrameItemButton_UpdateLocked(_G["BankFrameBag"..(slot-NUM_BANKGENERIC_SLOTS)]);
|
||||
end
|
||||
end
|
||||
elseif ( event == "PLAYERBANKSLOTS_CHANGED" ) then
|
||||
local slot = ...;
|
||||
if ( slot <= NUM_BANKGENERIC_SLOTS ) then
|
||||
BankFrameItemButton_Update(_G["BankFrameItem"..slot]);
|
||||
else
|
||||
BankFrameItemButton_Update(_G["BankFrameBag"..(slot-NUM_BANKGENERIC_SLOTS)]);
|
||||
end
|
||||
elseif ( event == "PLAYER_MONEY" or event == "PLAYERBANKBAGSLOTS_CHANGED" ) then
|
||||
UpdateBagSlotStatus();
|
||||
end
|
||||
end
|
||||
|
||||
function BankFrame_OnShow (self)
|
||||
PlaySound("igMainMenuOpen");
|
||||
|
||||
self:RegisterEvent("ITEM_LOCK_CHANGED");
|
||||
self:RegisterEvent("PLAYERBANKSLOTS_CHANGED");
|
||||
self:RegisterEvent("PLAYERBANKBAGSLOTS_CHANGED");
|
||||
self:RegisterEvent("PLAYER_MONEY");
|
||||
self:RegisterEvent("BAG_UPDATE_COOLDOWN");
|
||||
|
||||
local button;
|
||||
for i=1, NUM_BANKGENERIC_SLOTS, 1 do
|
||||
button = _G["BankFrameItem"..i];
|
||||
BankFrameItemButton_Update(button);
|
||||
end
|
||||
|
||||
for i=1, NUM_BANKBAGSLOTS, 1 do
|
||||
button = _G["BankFrameBag"..i];
|
||||
BankFrameItemButton_Update(button);
|
||||
end
|
||||
UpdateBagSlotStatus();
|
||||
end
|
||||
|
||||
function BankFrame_OnHide (self)
|
||||
PlaySound("igMainMenuClose");
|
||||
|
||||
self:UnregisterEvent("ITEM_LOCK_CHANGED");
|
||||
self:UnregisterEvent("PLAYERBANKSLOTS_CHANGED");
|
||||
self:UnregisterEvent("PLAYERBANKBAGSLOTS_CHANGED");
|
||||
self:UnregisterEvent("PLAYER_MONEY");
|
||||
|
||||
StaticPopup_Hide("CONFIRM_BUY_BANK_SLOT");
|
||||
CloseBankBagFrames();
|
||||
CloseBankFrame();
|
||||
updateContainerFrameAnchors();
|
||||
end
|
||||
|
||||
function BankFrameItemButtonGeneric_OnClick (self, button)
|
||||
if ( button == "LeftButton" ) then
|
||||
PickupContainerItem(BANK_CONTAINER, self:GetID());
|
||||
else
|
||||
UseContainerItem(BANK_CONTAINER, self:GetID());
|
||||
end
|
||||
end
|
||||
|
||||
function BankFrameItemButtonGeneric_OnModifiedClick (self, button)
|
||||
if ( self.isBag ) then
|
||||
return;
|
||||
end
|
||||
if ( HandleModifiedItemClick(GetContainerItemLink(BANK_CONTAINER, self:GetID())) ) then
|
||||
return;
|
||||
end
|
||||
if ( IsModifiedClick("SPLITSTACK") ) then
|
||||
local texture, itemCount, locked = GetContainerItemInfo(BANK_CONTAINER, self:GetID());
|
||||
if ( not locked ) then
|
||||
OpenStackSplitFrame(self.count, self, "BOTTOMLEFT", "TOPLEFT");
|
||||
end
|
||||
return;
|
||||
end
|
||||
end
|
||||
|
||||
function UpdateBagButtonHighlight (id)
|
||||
local texture = _G["BankFrameBag"..(id - NUM_BAG_SLOTS).."HighlightFrameTexture"];
|
||||
if ( not texture ) then
|
||||
return;
|
||||
end
|
||||
|
||||
local frame;
|
||||
for i=1, NUM_CONTAINER_FRAMES, 1 do
|
||||
frame = _G["ContainerFrame"..i];
|
||||
if ( ( frame:GetID() == id ) and frame:IsShown() ) then
|
||||
texture:Show();
|
||||
return;
|
||||
end
|
||||
end
|
||||
texture:Hide();
|
||||
end
|
||||
|
||||
function BankFrameItemButtonBag_OnClick (self, button)
|
||||
local inventoryID = self:GetInventorySlot();
|
||||
local hadItem = PutItemInBag(inventoryID);
|
||||
local id = self:GetID();
|
||||
if ( not hadItem ) then
|
||||
-- open bag
|
||||
ToggleBag(id);
|
||||
end
|
||||
UpdateBagButtonHighlight(id);
|
||||
end
|
||||
|
||||
function BankFrameItemButtonBag_Pickup (self)
|
||||
local inventoryID = self:GetInventorySlot();
|
||||
PickupBagFromSlot(inventoryID);
|
||||
UpdateBagButtonHighlight(self:GetID());
|
||||
end
|
||||
Reference in New Issue
Block a user