vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
function GB_Bar_OnEvent(event)
        if (not GB_INITIALIZED) then return; end
        local hidden = GB_Settings[GB_INDEX][this.index].hide;
        if (not hidden) then
                hidden = GB_Settings[GB_INDEX][this.index].mouseover;
        end
        if (event == "PARTY_MEMBERS_CHANGED") then
                local numParty = GetNumPartyMembers();
                if (this.index == "lowesthealth") then
                        if (numParty > 0) then
                                this.noshow = false;
                                if (not hidden) then this:Show(); end
                        else
                                this.noshow = true;
                                this:Hide();
                        end
                elseif (not hidden) then
                        local partyBar, petBar;
                        for i=1,4 do
                                partyBar = getglobal(GB_Get_UnitBar("party"..i));
                                petBar = getglobal(GB_Get_UnitBar("partypet"..i));
                                partyBar.noshow = true;
                                petBar.noshow = true;
                                partyBar:Hide();
                                petBar:Hide();
                        end
                        if (GB_Settings[GB_INDEX].hideInRaid and GetNumRaidMembers() > 0) then
                                return;
                        end
                        for i=1,numParty do
                                partyBar = getglobal(GB_Get_UnitBar("party"..i));
                                partyBar.noshow = false;
                                partyBar:Show();
                                if (UnitName("partypet"..i) and UnitExists("partypet"..i) and (not GB_Settings[GB_INDEX].partypet.hide)) then
                                        petBar = getglobal(GB_Get_UnitBar("partypet"..i));
                                        petBar.noshow = false;
                                        petBar:Show();
                                end
                        end
                end
        elseif (event == "PLAYER_TARGET_CHANGED") then
                this.noshow = true;
                if (UnitName("target")) then
                        if (UnitCanAttack("player", "target")) then
                                if (this.index == "hostiletarget" and UnitHealth("target") > 0) then
                                        this.noshow = false
                                end
                        else
                                if (UnitIsPlayer("target") and UnitFactionGroup("target") ~= UnitFactionGroup("player")) then
                                        if (this.index == "hostiletarget" and UnitHealth("target") > 0) then
                                                this.noshow = false;
                                        end
                                else
                                        if (this.index == "friendlytarget") then
                                                this.noshow = false;
                                        end
                                end
                        end
                end
                if (this.noshow) then
                        this:Hide();
                else
                        if (not hidden) then this:Show(); end
                end
        elseif (event == "RAID_ROSTER_UPDATE") then
                this.noshow = true;
                if (UnitExists(this.unit) and GB_RAID_MEMBERS[UnitName(this.unit)]) then
                        this.noshow = false;
                end
                if (this.noshow) then
                        this:Hide();
                else
                        if (not hidden) then this:Show(); end
                end
        elseif (event == "UNIT_PET") then
                if (GB_Settings[GB_INDEX].hideInRaid and GetNumRaidMembers() > 0) then
                        hidden = true;
                end
                this.noshow = true;
                if (UnitExists(this.unit)) then
                        this.noshow = false;
                end
                if (this.noshow) then
                        this:Hide();
                else
                        if (not hidden) then this:Show(); end
                end
        end
end

function GB_Bar_OnUpdate()
        if (this.index == "friendlytarget" and GB_INITIALIZED) then
                if (UnitCanAttack("player", "target")) then
                        this.noshow = true;
                        this:Hide();
                        if (not GB_Settings[GB_INDEX]["hostiletarget"].hide) then
                                GB_HostileTargetBar.noshow = false;
                                GB_HostileTargetBar:Show();
                        end
                end
        end
        if (this.timer) then
                this.timer = this.timer - arg1;
                if (this.timer < 0) then
                        this.timer = nil;
                        this:Hide();
                end
        end
end

function GB_Bars_Raise()
        for index in GB_UNITS_ARRAY do
                for _, unitBar in GB_UNITS_ARRAY[index].frames do
                        getglobal(unitBar):Raise();
                end
        end
end

function GB_Initialize_AllBars()
        for index in GB_UNITS_ARRAY do
                if (index ~= "lowesthealth") then
                        for _, unitBar in GB_UNITS_ARRAY[index].frames do
                                GB_Update_Auras(getglobal(unitBar).unit);
                        end
                end
                for i=1, GB_UNITS_ARRAY[index].buttons do
                        GB_ActionButton_Initialize(index, i);
                end
                GB_Set_Appearance(index);
        end
end

function GB_Labels_Hide()
        for unit, value in GB_UNITS_ARRAY do
                for index in value.frames do
                        getglobal(value.frames[index].."_Label"):Hide();
                end
        end
end

function GB_Labels_Show()
        for unit, value in GB_UNITS_ARRAY do
                for index in value.frames do
                        getglobal(value.frames[index].."_Label"):Show();
                end
        end
end

function GB_Set_Appearance(bar)
        local settings = GB_Get(bar);
        for _, unitBar in GB_UNITS_ARRAY[bar].frames do
                getglobal(unitBar):SetAlpha(settings.alpha);
                if (settings.hide or getglobal(unitBar).noshow or settings.mouseover) then
                        getglobal(unitBar):Hide();
                elseif (GB_Settings[GB_INDEX].hideInRaid and GetNumRaidMembers() > 0 and string.find(bar, "party")) then
                        getglobal(unitBar):Hide();
                else
                        getglobal(unitBar):Show();
                end
                if (settings.attach and bar ~= "lowesthealth") then
                        getglobal(unitBar):ClearAllPoints();
                        if (unitBar == "GB_PetBar0") then
                                local unitFrame = GB_UNITFRAMES.pet.frames[1];
                                getglobal(unitBar):SetPoint(settings.attachPoint, unitFrame, settings.attachTo, settings.xoffset, settings.yoffset);
                        elseif (bar == "raid") then
                                if (CT_RAMember1) then
                                        local unitFrame = "CT_RAMember"..getglobal(unitBar):GetID();
                                        getglobal(unitBar):SetPoint(settings.attachPoint, unitFrame, settings.attachTo, settings.xoffset, settings.yoffset);
                                elseif (beyondRaidGroup1) then
                                        GB_SHUFFLE_RAID = true;
                                        local found;
                                        for i=1, 8 do
                                                for j = 1, 5 do
                                                        local raidframe = "beyondRaidGroup"..i.."Member"..j;
                                                        if (getglobal(raidframe).unitID == "raid"..getglobal(unitBar):GetID()) then
                                                                found = true;
                                                                getglobal(raidframe):RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
                                                                getglobal(unitBar):SetPoint(settings.attachPoint, raidframe, settings.attachTo, settings.xoffset, settings.yoffset);
                                                                break;
                                                        end
                                                end
                                        end
                                        if (not found) then
                                                getglobal(unitBar):SetPoint(settings.attachPoint, "beyondRaidGroup1Member1", settings.attachTo, settings.xoffset, settings.yoffset);
                                        end
                                elseif (MRConfigPanel) then
                                        GB_SHUFFLE_RAID = true;
                                        local found;
                                        for i=1, 100 do
                                                local raidframe = "MRF"..i;
                                                if (getglobal(raidframe).unit == "raid"..getglobal(unitBar):GetID()) then
                                                        found = true;
                                                        getglobal(raidframe):RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
                                                        getglobal(unitBar):SetPoint(settings.attachPoint, raidframe, settings.attachTo, settings.xoffset, settings.yoffset);
                                                        break;
                                                end
                                        end
                                        if (not found) then
                                                getglobal(unitBar):SetPoint(settings.attachPoint, "MRF1", settings.attachTo, settings.xoffset, settings.yoffset);
                                        end
                                else
                                        GB_SHUFFLE_RAID = true;
                                        if (RaidPullout1Button1) then
                                                local found;
                                                for i = 1, 12 do
                                                        for j = 1, 15 do
                                                                local raidframe = "RaidPullout"..i.."Button"..j;
                                                                if (getglobal(raidframe).unit == "raid"..getglobal(unitBar):GetID()) then
                                                                        found = true;
                                                                        getglobal(unitBar):SetPoint(settings.attachPoint, raidframe, settings.attachTo, settings.xoffset, settings.yoffset);
                                                                        break;
                                                                end
                                                        end
                                                end
                                                if (not found) then
                                                        getglobal(unitBar):SetPoint(settings.attachPoint, "RaidPullout1Button1", settings.attachTo, settings.xoffset, settings.yoffset);
                                                end
                                        end
                                end
                        else
                                local id = getglobal(unitBar):GetID();
                                if (id == 0) then id = 1; end
                                local bar2 = bar;
                                if (string.find(bar, "target")) then bar2 = "target"; end
                                local unitFrame = GB_UNITFRAMES[bar2].frames[id];
                                getglobal(unitBar):SetPoint(settings.attachPoint, unitFrame, settings.attachTo, settings.xoffset, settings.yoffset);
                        end
                end
                local button, cooldown, modelscale, textscale;
                for i=1, GB_UNITS_ARRAY[bar].buttons do
                        button = getglobal(unitBar.."_Button_"..i);
                        cooldown = getglobal(button:GetName().."_Cooldown");
                        if (GB_Settings[GB_INDEX].modifybyUIscale) then
                                modelscale = settings.buttonSize / 36 * UIParent:GetScale();
                        else
                                modelscale = settings.buttonSize / 36;
                        end
                        textscale = settings.buttonSize / 36;
                        getglobal(button:GetName().."TextFrame").textscale = textscale;
                        getglobal(button:GetName().."TextFrame"):SetScale(textscale);
                        button:SetHeight(settings.buttonSize);
                        button:SetWidth(settings.buttonSize);
                        cooldown:SetScale(modelscale);
                        cooldown.scale = modelscale;
                end
                if (GB_Options:IsVisible()) then
                        getglobal(unitBar):Show();
                end
                GB_Set_Layout(bar, unitBar, 1);
        end
end

function GB_Set_Layout(bar, unitBar, override)
        if (not GB_INITIALIZED) then return; end
        local rows = GB_Settings[GB_INDEX][bar].rows;
        local buttonSize = GB_Settings[GB_INDEX][bar].buttonSize;
        local spacing = GB_Settings[GB_INDEX][bar].spacing;
        local frameheight = rows * buttonSize;
        local framewidth;
        if (not override) then
                if (rows == 1 and (not GB_Settings[GB_INDEX][bar].collapse)) then
                        framewidth = GB_UNITS_ARRAY[bar].buttons * buttonSize;
                        getglobal(unitBar):SetHeight(frameheight);
                        getglobal(unitBar):SetWidth(framewidth);
                        return;
                end
        end
        local count = 0;
        local row = 0;
        local visiblecount = 0;
        local highest = 0;
        local prevrowstart = nil;
        local newrow = math.ceil(GB_UNITS_ARRAY[bar].buttons / rows);
        local resetrow = math.mod(GB_UNITS_ARRAY[bar].buttons, rows);
        local lastbutton = unitBar;
        for i=1, GB_UNITS_ARRAY[bar].buttons do
                local button = getglobal(unitBar.."_Button_"..i);
                button:ClearAllPoints();
                if (count == newrow) then
                        local attachto = unitBar.."_Button_"..(i - count);
                        button:SetPoint("TOP", attachto, "BOTTOM", 0, -spacing);
                        if (button:IsVisible() or (not GB_Settings[GB_INDEX][bar].collapse)) then
                                lastbutton = button:GetName();
                        else
                                prevrowstart = attachto;
                        end
                        count = 0;
                        row = row + 1;
                        if (visiblecount > highest) then
                                highest = visiblecount;
                        end
                        visiblecount = 0;
                        if (button:IsVisible()) then
                                visiblecount = 1;
                        end
                        if (row == resetrow) then
                                newrow = newrow - 1;
                        end
                else
                        if (lastbutton == unitBar) then
                                button:SetPoint("TOPLEFT", lastbutton, "TOPLEFT", 0, 0);
                        elseif (prevrowstart) then
                                button:SetPoint("TOP", prevrowstart, "BOTTOM", 0, -spacing);
                                if (button:IsVisible()) then
                                        lastbutton = button:GetName();
                                        prevrowstart = nil;
                                end
                        else
                                button:SetPoint("LEFT", lastbutton, "RIGHT", spacing, 0);
                        end
                        if (button:IsVisible() or (not GB_Settings[GB_INDEX][bar].collapse)) then
                                visiblecount = visiblecount + 1;
                                lastbutton = button:GetName();
                        end
                end
                count = count + 1;
        end
        if (highest == 0) then highest = visiblecount; end
        framewidth = highest * buttonSize;
        getglobal(unitBar):SetHeight(frameheight);
        getglobal(unitBar):SetWidth(framewidth);
end

Generated by GNU Enscript 1.6.5.90.