function BagSlotButton_UpdateChecked(self)
local translatedID = self:GetID() - CharacterBag0Slot:GetID() + 1;
local isVisible = 0;
local frame;
for i=1, NUM_CONTAINER_FRAMES, 1 do
frame = _G["ContainerFrame"..i];
if ( (frame:GetID() == translatedID) and frame:IsShown() ) then
isVisible = 1;
break;
end
end
self:SetChecked(isVisible);
end
function BagSlotButton_OnClick(self)
local id = self:GetID();
local translatedID = id - CharacterBag0Slot:GetID() + 1;
local hadItem = PutItemInBag(id);
if ( not hadItem ) then
ToggleBag(translatedID);
end
BagSlotButton_UpdateChecked(self);
end
function BagSlotButton_OnModifiedClick(self)
if ( IsModifiedClick("OPENALLBAGS") ) then
if ( GetInventoryItemTexture("player", self:GetID()) ) then
ToggleAllBags();
end
end
BagSlotButton_UpdateChecked(self);
end
function BagSlotButton_OnDrag(self)
PickupBagFromSlot(self:GetID());
BagSlotButton_UpdateChecked(self);
end
function BackpackButton_UpdateChecked(self)
local isVisible = 0;
for i=1, NUM_CONTAINER_FRAMES, 1 do
local frame = _G["ContainerFrame"..i];
if ( (frame:GetID() == 0) and frame:IsShown() ) then
isVisible = 1;
break;
end
end
self:SetChecked(isVisible);
end
function BackpackButton_OnClick(self)
if ( not PutItemInBackpack() ) then
ToggleBackpack();
end
BackpackButton_UpdateChecked(self);
end
function BackpackButton_OnModifiedClick(self)
if ( IsModifiedClick("OPENALLBAGS") ) then
ToggleAllBags();
end
BackpackButton_UpdateChecked(self);
end
function ItemAnim_OnLoad(self)
self:RegisterEvent("ITEM_PUSH");
end
function ItemAnim_OnEvent(self, event, ...)
if ( event == "ITEM_PUSH" ) then
local arg1, arg2 = ...;
local id = self:GetID();
if ( id == arg1 ) then
self.animIcon:SetTexture(arg2);
self.flyin:Play(1);
end
end
end
function BagSlotButton_OnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
if ( GameTooltip:SetInventoryItem("player", self:GetID()) ) then
local bindingKey = GetBindingKey("TOGGLEBAG"..(4 - (self:GetID() - CharacterBag0Slot:GetID())));
if ( bindingKey ) then
GameTooltip:AppendText(" "..NORMAL_FONT_COLOR_CODE.."("..bindingKey..")"..FONT_COLOR_CODE_CLOSE);
end
else
GameTooltip:SetText(EQUIP_CONTAINER, 1.0, 1.0, 1.0);
end
end
function ItemAnim_OnAnimFinished(self)
self:Hide();
end
function Disable_BagButtons()
MainMenuBarBackpackButton:Disable();
SetDesaturation(MainMenuBarBackpackButtonIconTexture, 1);
CharacterBag0Slot:Disable();
SetDesaturation(CharacterBag0SlotIconTexture, 1);
CharacterBag1Slot:Disable();
SetDesaturation(CharacterBag1SlotIconTexture, 1);
CharacterBag2Slot:Disable();
SetDesaturation(CharacterBag2SlotIconTexture, 1);
CharacterBag3Slot:Disable();
SetDesaturation(CharacterBag3SlotIconTexture, 1);
end
function Enable_BagButtons()
MainMenuBarBackpackButton:Enable();
SetDesaturation(MainMenuBarBackpackButtonIconTexture, nil);
CharacterBag0Slot:Enable();
SetDesaturation(CharacterBag0SlotIconTexture, nil);
CharacterBag1Slot:Enable();
SetDesaturation(CharacterBag1SlotIconTexture, nil);
CharacterBag2Slot:Enable();
SetDesaturation(CharacterBag2SlotIconTexture, nil);
CharacterBag3Slot:Enable();
SetDesaturation(CharacterBag3SlotIconTexture, nil);
end
function MainMenuBarBackpackButton_OnEvent(self, event, ...)
if ( event == "BAG_UPDATE" ) then
local bag = ...;
if ( bag >= BACKPACK_CONTAINER and bag <= NUM_BAG_SLOTS ) then
MainMenuBarBackpackButton_UpdateFreeSlots();
end
elseif ( event == "PLAYER_ENTERING_WORLD" ) then
if ( GetCVar("displayFreeBagSlots") == "1" ) then
MainMenuBarBackpackButtonCount:Show();
else
MainMenuBarBackpackButtonCount:Hide();
end
MainMenuBarBackpackButton_UpdateFreeSlots();
elseif ( event == "CVAR_UPDATE" ) then
local cvar, value = ...
if ( cvar == "DISPLAY_FREE_BAG_SLOTS" ) then
if ( value == "1" ) then
MainMenuBarBackpackButtonCount:Show();
else
MainMenuBarBackpackButtonCount:Hide();
end
end
elseif ( event == "INVENTORY_SEARCH_UPDATE" ) then
if ( IsContainerFiltered(BACKPACK_CONTAINER) ) then
self.searchOverlay:Show();
else
self.searchOverlay:Hide();
end
end
end
local BACKPACK_FREESLOTS_FORMAT = "(%s)";
function MainMenuBarBackpackButton_UpdateFreeSlots()
local totalFree, freeSlots, bagFamily = 0;
for i = BACKPACK_CONTAINER, NUM_BAG_SLOTS do
freeSlots, bagFamily = GetContainerNumFreeSlots(i);
if ( bagFamily == 0 ) then
totalFree = totalFree + freeSlots;
end
end
if ( totalFree == 3) then
TriggerTutorial(59);
end
if ( totalFree == 0) then
TriggerTutorial(58);
end
MainMenuBarBackpackButton.freeSlots = totalFree;
MainMenuBarBackpackButtonCount:SetText(string.format(BACKPACK_FREESLOTS_FORMAT, totalFree));
end