local addonName, addonTable = ...; ChillEffectAlts = LibStub("AceAddon-3.0"):NewAddon("ChillEffectAlts", "AceEvent-3.0") local L = LibStub("AceLocale-3.0"):GetLocale("ChillEffectAlts", true) function ChillEffectAlts:OnInitialize() local defaults = { char = { currencies = {}, bags = {}, inventory = {}, }, } self.db = LibStub("AceDB-3.0"):New("CEAltsDB") SLASH_ChillEffectAlts1 = "/alt" SlashCmdList["ChillEffectAlts"] = function() if self.frame:IsShown() then self.frame:Hide() else self.frame:Show() end end CharacterFrameTab1:SetPoint("TOPLEFT", CharacterFrame, "BOTTOMLEFT", -8, 2) AC = CreateFrame("Button", "CharacterFrameTab5", CharacterFrame, "CharacterFrameTabButtonTemplate", 5) AC:SetPoint("LEFT", "CharacterFrameTab4", "RIGHT", -15, 0) AC:SetText("All Characters") AC:SetScript("OnEnter", function(self) GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); -- Second arg = GetBindingKey(action) GameTooltip:SetText(MicroButtonTooltipText("All Characters", "TOGGLECHARACTER5"), 1.0,1.0,1.0 ); end) AC:SetScript("OnLeave",GameTooltip_Hide) PanelTemplates_SetNumTabs(CharacterFrame, 5) local CharTabtable = {}; local CF_TabBoundsCheck = function(self) self = self and self:GetName() or "CharacterFrameTab" -- hack to make sure it resizes when the CharacterFrame expands/collapses local NUM_CHARACTERFRAME_TABS = 5 if ( string.sub(self, 1, 17) ~= "CharacterFrameTab" ) then return; end for i=1, NUM_CHARACTERFRAME_TABS do _G["CharacterFrameTab"..i.."Text"]:SetWidth(0); PanelTemplates_TabResize(_G["CharacterFrameTab"..i], 0, nil, 36, 88); end local diff = _G["CharacterFrameTab"..NUM_CHARACTERFRAME_TABS]:GetRight() - CharacterFrame:GetRight(); if ( diff > 0 ) then --Find the biggest tab for i=1, NUM_CHARACTERFRAME_TABS do CharTabtable[i]=_G["CharacterFrameTab"..i]; end table.sort(CharTabtable, function(frame1, frame2) return frame1:GetWidth() > frame2:GetWidth(); end); local i=1; while ( diff > 0 and i <= NUM_CHARACTERFRAME_TABS) do local tabText = _G[CharTabtable[i]:GetName().."Text"] local change = min(10, diff); diff = diff - change; tabText:SetWidth(0); PanelTemplates_TabResize(CharTabtable[i], -change, nil, 36-change, 88); -- print(format("Resizing tab %s by %d", CharTabtable[i]:GetName(), change)) i = i+1; end end end hooksecurefunc("CharacterFrame_TabBoundsCheck", CF_TabBoundsCheck) hooksecurefunc("CharacterFrame_Expand", CF_TabBoundsCheck) hooksecurefunc("CharacterFrame_Collapse", CF_TabBoundsCheck) hooksecurefunc("CharacterFrameTab_OnClick", function(self, button) local name = self:GetName(); if ( name == "CharacterFrameTab5" ) then ToggleCharacter("ChillEffectCurrencyFrame") end PlaySound("igCharacterInfoTab"); end) end local gui_built = false function ChillEffectAlts:OnEnable() if not gui_built then addonTable.Currencies:CreateCurrencyFrame() end local character = addonTable.Character:new(self.db.char) function self:RedrawCurrencyFrame(self, currencyOrder) addonTable.Currencies:RedrawCurrencyFrame(currencyOrder) end -- Track the open state of the bank. Can't check for IsShown, because addons self.isBankOpen = false; addon:RegisterEvent("BANKFRAME_OPENED", function() self.isBankOpen = true self.UpdateItems() end) addon:RegisterEvent("BANKFRAME_CLOSED", function() self.isBankOpen = false end) local function UpdateCurrencies() character.UpdateCurrencies() self.db.char.currencies = character.GetCurrencies() self:RedrawCurrencyFrame() end local function UpdateBags() character.UpdateBags() self.db.char.bags = character.GetBags() self.db.char.heirlooms = character.GetHeirlooms() end local function UpdateInventory() end addon:RegisterEvent("PLAYER_ENTERING_WORLD", UpdateCurrencies) addon:RegisterEvent("PLAYER_MONEY", UpdateCurrencies) addon:RegisterEvent("CURRENCY_DISPLAY_UPDATE", UpdateCurrencies) addon:RegisterEvent("BAG_UPDATE_DELAYED", UpdateBags) end