vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
if ( CT_AddMovable ) then
        CT_AddMovable("CT_PlayerFrame_Drag", CT_PLAYERFRAME_MOVABLE, "TOPLEFT", "TOPLEFT", "UIParent", 97, -25, function(status)
                if ( status ) then
                        CT_PlayerFrame_Drag:Show();
                else
                        CT_PlayerFrame_Drag:Hide();
                end
        end);
end

function CT_PlayerFrameOnLoad()

        this:RegisterEvent("UNIT_MANA");
        this:RegisterEvent("UNIT_HEALTH");
        this:RegisterEvent("UNIT_RAGE");
        this:RegisterEvent("UNIT_FOCUS");
        this:RegisterEvent("UNIT_ENERGY");
        this:RegisterEvent("UNIT_DISPLAYPOWER");
        this:RegisterEvent("VARIABLES_LOADED");
        this:RegisterEvent("PLAYER_ENTERING_WORLD");
        this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS");
end

function CT_UnitFrames_LinkFrameDrag(frame, drag, point, relative, x, y)
        frame:ClearAllPoints();
        frame:SetPoint(point, drag:GetName(), relative, x, y);
end

function CT_PlayerFrameOnEvent (event)

        if ( event == "PLAYER_ENTERING_WORLD" or ( event == "UNIT_DISPLAYPOWER" and arg1 == "player" ) ) then
                CT_ShowPlayerHealth();
                CT_ShowPlayerMana();
                CT_PlayerFrame_UpdateSBT();
                return;
        end

        if( event == "UNIT_HEALTH" and arg1 == "player" ) then
                CT_ShowPlayerHealth();
                CT_PlayerFrame_UpdateSBT();
                return;
        elseif ( event == "UNIT_HEALTH" and arg1 == "pet" ) then
                CT_ChangePetHealthBar();
                return;
        end
        
        if( ( event == "UNIT_MANA" or event == "UNIT_RAGE" or event == "UNIT_FOCUS" or event == "UNIT_ENERGY" or event == "UPDATE_SHAPESHIFT_FORMS" ) and arg1 == "player" ) then
                CT_ShowPlayerMana();
                CT_PlayerFrame_UpdateSBT();
                return;
        end

        if ( event == "VARIABLES_LOADED" ) then
                CT_PlayerFrame_UpdateSBT();
        end
end

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

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

function CT_PlayerFrame_GetMana(id)
        if ( not UnitExists("player") ) then
                return "";
        end
        if ( id == 2 ) then
                return floor(( UnitMana("player") or 1 ) / ( UnitManaMax("player") or 1)*100) .. "%";
        elseif ( id == 3 ) then
                local deficit = ( UnitMana("player") or 1 ) - ( UnitManaMax("player") or 1 );
                if ( deficit == 0 ) then
                        deficit = "";
                end
                return deficit;
        elseif ( id == 4 ) then
                return ( UnitMana("player") or "?" ) .. "/" .. ( UnitManaMax("player") or "?" );
        end
end

function CT_ShowPlayerHealth()
        if ( not UnitExists("player") ) then
                return "";
        end
        local typeOnHealth, typeRightHealth = CT_PlayerFrame_ShallDisplay(1), CT_PlayerFrame_ShallDisplay(2);
        if ( typeOnHealth > 1 ) then
                CT_PlayerHealthBar:Show();
                CT_PlayerHealthBar:SetText(CT_PlayerFrame_GetHealth(typeOnHealth));
        else
                CT_PlayerHealthBar:Hide();
        end
        if ( typeRightHealth > 1 ) then
                CT_PlayerHealthRight:SetText(CT_PlayerFrame_GetHealth(typeRightHealth));
                CT_PlayerHealthRight:Show();
        else
                CT_PlayerHealthRight:Hide();
        end
        CT_PlayerHealthBar:SetTextColor(CT_UnitFramesOptions.styles[1][1][2], CT_UnitFramesOptions.styles[1][1][3], CT_UnitFramesOptions.styles[1][1][4], CT_UnitFramesOptions.styles[1][1][5]);
        CT_PlayerHealthRight:SetTextColor(CT_UnitFramesOptions.styles[1][2][2], CT_UnitFramesOptions.styles[1][2][3], CT_UnitFramesOptions.styles[1][2][4], CT_UnitFramesOptions.styles[1][2][5]);
        local hp = UnitHealth("player") / UnitHealthMax("player");
        local r, g = 1, 1;
        if ( hp > 0.5 ) then
                r = (1.0 - hp) * 2;
                g = 1.0;
        else
                r = 1.0;
                g = hp * 2;
        end
        if ( r < 0 ) then r = 0; elseif ( r > 1 ) then r = 1; end
        if ( g < 0 ) then g = 0; elseif ( g > 1 ) then g = 1; end
        PlayerFrameHealthBar:SetStatusBarColor(r, g, 0);
end

function CT_ShowPlayerMana()
        if ( not UnitExists("player") ) then
                return "";
        end
        local typeOnMana, typeRightMana = CT_PlayerFrame_ShallDisplay(3), CT_PlayerFrame_ShallDisplay(4);
        if ( typeOnMana > 1 ) then
                CT_PlayerManaBar:SetText(CT_PlayerFrame_GetMana(typeOnMana));
                CT_PlayerManaBar:Show();
        else
                CT_PlayerManaBar:Hide();
        end
        if ( typeRightMana > 1 ) then
                CT_PlayerManaRight:SetText(CT_PlayerFrame_GetMana(typeRightMana));
                CT_PlayerManaRight:Show();
        else
                CT_PlayerManaRight:Hide();
        end
        CT_PlayerManaBar:SetTextColor(CT_UnitFramesOptions.styles[1][3][2], CT_UnitFramesOptions.styles[1][3][3], CT_UnitFramesOptions.styles[1][3][4], CT_UnitFramesOptions.styles[1][3][5]);
        CT_PlayerManaRight:SetTextColor(CT_UnitFramesOptions.styles[1][4][2], CT_UnitFramesOptions.styles[1][4][3], CT_UnitFramesOptions.styles[1][4][4], CT_UnitFramesOptions.styles[1][4][5]);
end

function CT_ChangePetHealthBar()
        if ( not UnitExists("pet") ) then
                return;
        end
        local hp = UnitHealth("pet") / UnitHealthMax("pet");
        local r, g = 1, 1;
        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
        if ( r < 0 ) then r = 0; elseif ( r > 1 ) then r = 1; end
        if ( g < 0 ) then g = 0; elseif ( g > 1 ) then g = 1; end
        PetFrameHealthBar:SetStatusBarColor(r, g, 0);
end

CT_oldTSB_OE = TextStatusBar_OnEvent;

function CT_TextStatusBar_OnEvent(cvar, value)
        if ( event == "CVAR_UPDATE" and cvar == "STATUS_BAR_TEXT" and ( this == PlayerFrameHealthBar or this == PlayerFrameManaBar ) ) then
                CT_PlayerFrame_UpdateSBT();
                return;
        end
        CT_oldTSB_OE(cvar, value);
end

TextStatusBar_OnEvent = CT_TextStatusBar_OnEvent;

function CT_PlayerFrame_UpdateSBT()
        local bar1 = PlayerFrameHealthBar;
        local bar2 = PlayerFrameManaBar;

        local shallDisplay = true;
        if ( CT_PlayerFrame_ShallDisplay(1) > 1 ) then
                bar1.textLockable = nil;
                bar1.TextString:Hide();
                shallDisplay = false;
        end
        if ( CT_PlayerFrame_ShallDisplay(3) > 1 ) then
                bar2.textLockable = nil;
                bar2.TextString:Hide();
                shallDisplay = false;
        end
        if ( GetCVar("STATUSBARTEXT") == "0" ) then

                bar1.textLockable = nil;
                bar2.textLockable = nil;

                bar1.TextString:Hide();
                bar2.TextString:Hide();

        elseif ( GetCVar("STATUSBARTEXT") == "1" and shallDisplay ) then

                bar1.textLockable = 1;
                bar2.textLockable = 1;

                bar1.TextString:Show();
                bar2.TextString:Show();
                
                ShowTextStatusBarText(PlayerFrameHealthBar);
                ShowTextStatusBarText(PlayerFrameManaBar);

        end
end

CT_OldShowTextStatusBarText = ShowTextStatusBarText;
function CT_ShowTextStatusBarText(bar)
        if ( ( bar ~= PlayerFrameManaBar and bar ~= PlayerFrameHealthBar ) or ( CT_PlayerFrame_ShallDisplay(1) == 1 and bar == PlayerFrameHealthBar ) or ( CT_PlayerFrame_ShallDisplay(3) == 1 and bar == PlayerFrameManaBar ) ) then
                CT_OldShowTextStatusBarText(bar);
        end
end
ShowTextStatusBarText = CT_ShowTextStatusBarText;

Generated by GNU Enscript 1.6.5.90.