vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- // OnFoo Functions // --
function CT_PartyFrameSlider_OnLoad()
        getglobal(this:GetName().."Text"):SetText(CT_UFO_PARTYTEXTSIZE);
        getglobal(this:GetName().."High"):SetText(CT_UFO_PARTYTEXTSIZE_LARGE);
        getglobal(this:GetName().."Low"):SetText(CT_UFO_PARTYTEXTSIZE_SMALL);
        this:SetMinMaxValues(1, 5);
        this:SetValueStep(1);
        this.tooltipText = "Allows you to change the text size of the party health & mana texts.";
end

function CT_PartyFrame_ShallDisplay(offset)
        return CT_UnitFramesOptions.styles[2][offset][1];
end

function CT_PartyFrame_GetHealth(unit, id)
        if ( id == 1 ) then
                return "";
        end
        if ( not UnitExists(unit) or not UnitExists("player") ) then
                return "";
        end
        if ( (UnitHealth(unit) <= 0) and UnitIsConnected(unit) ) then
                return "";
        end
        if ( UnitHealthMax(unit) == 100 ) then
                id = 2;
        end
        if ( id == 2 ) then
                return floor(( UnitHealth(unit) or 1 ) / ( UnitHealthMax(unit) or 1)*100) .. "%";
        elseif ( id == 3 ) then
                local deficit = ( UnitHealth(unit) or 1 ) - ( UnitHealthMax(unit) or 1 );
                if ( deficit == 0 ) then
                        deficit = "";
                end
                return deficit;
        elseif ( id == 4 ) then
                return ( UnitHealth(unit) or "?" ) .. "/" .. ( UnitHealthMax(unit) or "?" );
        end
end

function CT_PartyFrame_GetMana(unit, id)
        if ( id == 1 ) then
                return "";
        end
        if ( not UnitExists(unit) or not UnitExists("player") ) then
                return "";
        end
        if ( UnitPowerType(unit) > 0 or UnitManaMax(unit) == 0 or ( UnitIsDead(unit) and UnitIsConnected(unit) ) ) then
                return "";
        end
        if ( id == 2 ) then
                return floor(( UnitMana(unit) or 1 ) / ( UnitManaMax(unit) or 1)*100) .. "%";
        elseif ( id == 3 ) then
                local deficit = ( UnitMana(unit) or 1 ) - ( UnitManaMax(unit) or 1 );
                if ( deficit == 0 ) then
                        deficit = "";
                end
                return deficit;
        elseif ( id == 4 ) then
                return ( UnitMana(unit) or "?" ) .. "/" .. ( UnitManaMax(unit) or "?" );
        end
end

-- // Update Party Member's Health // --
function CT_PartyFrame_UpdateMember(unit, health)
        if ( not UnitExists(unit) ) then
                return;
        end
        local i = strsub(unit, 6, 6);
        getglobal("CT_PartyFrame" .. i .. "HealthBar"):SetTextHeight( ( CT_UnitFramesOptions.partyTextSize or 3 ) + 7);
        local color = CT_UnitFramesOptions.styles[2];
        getglobal("CT_PartyFrame" .. i .. "HealthBar"):SetTextColor(color[1][2], color[1][3], color[1][4], color[1][5]);
        getglobal("CT_PartyFrame" .. i .. "HealthRight"):SetTextHeight( ( CT_UnitFramesOptions.partyTextSize or 3 ) + 7);
        getglobal("CT_PartyFrame" .. i .. "HealthRight"):SetTextColor(color[2][2], color[2][3], color[2][4], color[2][5]);
        getglobal("CT_PartyFrame" .. i .. "ManaBar"):SetTextHeight( ( CT_UnitFramesOptions.partyTextSize or 3 ) + 7);
        getglobal("CT_PartyFrame" .. i .. "ManaBar"):SetTextColor(color[3][2], color[3][3], color[3][4], color[3][5]);
        getglobal("CT_PartyFrame" .. i .. "ManaRight"):SetTextHeight( ( CT_UnitFramesOptions.partyTextSize or 3 ) + 7);
        getglobal("CT_PartyFrame" .. i .. "ManaRight"):SetTextColor(color[4][2], color[4][3], color[4][4], color[4][5]);
        if ( health ) then
                local hp = getglobal("PartyMemberFrame" .. i).unitHPPercent;
                if ( hp ) then
                        if ( hp > 0 ) then
                                if ( hp > 0.5 ) then
                                        r = (1.0 - hp) * 2;
                                        g = 1.0;
                                else
                                        r = 1.0;
                                        g = hp * 2;
                                end
                        else
                                r = 0; g = 1;
                        end
                else
                        r = 0; g = 1;
                end
                getglobal("PartyMemberFrame" .. i .. "HealthBar"):SetStatusBarColor(r, g, 0);
                local typeOnHealth, typeRightHealth = CT_PartyFrame_ShallDisplay(1), CT_PartyFrame_ShallDisplay(2);
                getglobal("CT_PartyFrame" .. i .. "HealthBar"):SetText(CT_PartyFrame_GetHealth(unit, typeOnHealth));
                getglobal("CT_PartyFrame" .. i .. "HealthRight"):SetText(CT_PartyFrame_GetHealth(unit, typeRightHealth));
        else
                local typeOnMana, typeRightMana = CT_PartyFrame_ShallDisplay(3), CT_PartyFrame_ShallDisplay(4);
                getglobal("CT_PartyFrame" .. i .. "ManaBar"):SetText(CT_PartyFrame_GetMana(unit, typeOnMana));
                getglobal("CT_PartyFrame" .. i .. "ManaRight"):SetText(CT_PartyFrame_GetMana(unit, typeRightMana));
        end
end

function CT_PartyFrame_Update(unit, event)
        if ( event == "PARTY_MEMBERS_CHANGED" or event == "VARIABLES_LOADED" ) then
                for i = 1, GetNumPartyMembers(), 1 do
                        CT_PartyFrame_UpdateMember("party" .. i, 1);
                        CT_PartyFrame_UpdateMember("party" .. i, nil);
                end
        elseif ( string.find(unit, "^party%d$") ) then
                if ( event == "UNIT_HEALTH" or event == "UNIT_MAXHEALTH" or event == "UNIT_DISPLAYPOWER"  ) then
                        CT_PartyFrame_UpdateMember(unit, 1);
                else
                        CT_PartyFrame_UpdateMember(unit, nil);
                end
        end
end