vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--------------------------------------------------------------------------
-- TitanSkills.lua 
--------------------------------------------------------------------------
--[[

Titan Panel [Skills]
        Plug-in for Titan Panel that displays Professions, Secondary Skills 
        and Weapons Skills when hovered over. 

Author: Corgi - corgiwow@gmail.com

v0.09 (April 5, 2006 22:00 PST)
- fixed level change
- toc# updated for 1.10 patch

v0.08 (January 5, 2006 20:05 PST)
- added ability to toggle player's Level 
- Shift-click opens Skills frame
- toc# updated for 1.9 patch

v0.07 (October 26, 2005 10:18 PST)
- toc# updated for 1.8 patch
- added Skills (Right) options (thanks Forger)
- tooltip will now popup below/above Titan bar (thanks Forger)
- added skill bonuses (e.g. Skill 10(+5)/300) (thanks Forger)

v0.06 (September 24, 2005 19:11 PST)
- toc# updated for 1.7 patch
- added French localization

v0.05 (June 13, 2005 14:30 PST)
- updated for Titan Panel 1.24

v0.04 (June 7, 2005 14:25 PST)
- toc updated for 1.5 patch
- minor french localization

v0.03 (June 6, 2005 12:35 PST)
- complete German translation by Crowley
- added transparent icon

v0.02 (June 3, 2005 20:00 PST)
- list non-passive Class Skills (ie, Rogue's Lockpicking and Poison skills)

v0.01 (May 31, 2005 2:00 PST)
- Initial Release

]]--

TITAN_SKILLS_ID = "Skills";
TITAN_SKILLS_RIGHT_ID = "SkillsRight";

TITAN_SKILLS_ICON = "Interface\\Addons\\TitanSkills\\Artwork\\TitanSkills";

--
-- OnFuctions
--
function TitanPanelSkillsButton_OnLoad()
        this.registry = { 
                id = TITAN_SKILLS_ID,
                menuText = TITAN_SKILLS_MENU_TEXT, 
                buttonTextFunction = "TitanPanelSkillsButton_GetButtonText", 
                tooltipTitle = TITAN_SKILLS_TOOLTIP,
                tooltipTextFunction = "TitanPanelSkillsButton_GetTooltipText",
                icon = TITAN_SKILLS_ICON,
                iconWidth = 16,
                savedVariables = {
                        ShowIcon = 1,
                        ShowLabelText = 1,
                        ShowLevel = TITAN_NIL,
                }
        };
        this:RegisterEvent("SKILL_LINES_CHANGED");
        this:RegisterEvent("PLAYER_LEVEL_UP");
end

function TitanPanelSkillsRightButton_OnLoad()
        this.registry = { 
                id = TITAN_SKILLS_RIGHT_ID,
                menuText = TITAN_SKILLS_RIGHT_MENU_TEXT, 
                buttonTextFunction = "TitanPanelSkillsButton_GetButtonText", 
                tooltipTitle = TITAN_SKILLS_TOOLTIP,
                tooltipTextFunction = "TitanPanelSkillsButton_GetTooltipText",
                icon = TITAN_SKILLS_ICON,
                iconWidth = 16,
        };
end

function TitanPanelSkillsButton_OnEvent()
        TitanPanelButton_UpdateButton(TITAN_SKILLS_ID); 
        TitanPanelButton_UpdateTooltip();
end

-- CROWGOBLIN ADDITION
function TitanPanelSkillsButton_OnClick()
        if (IsShiftKeyDown()) then
                ToggleCharacter("SkillFrame");
        end
end

--
-- Titan functions
--
function TitanPanelSkillsButton_GetButtonText(id)       
        local buttonRichText = "";
        
        if ( TitanGetVar(TITAN_SKILLS_ID,"ShowLevel") ~= nil ) then
                buttonRichText = " "..TitanUtils_GetHighlightText(UnitLevel("player"));
        end
        
        if ( id == TITAN_SKILLS_RIGHT_ID ) then
                return "", "";
        else
                return TITAN_SKILLS_BUTTON_LABEL, buttonRichText;
        end
end

function TitanPanelSkillsButton_GetTooltipText()
        
        local tooltipRichText = "";
        
        local SkillList = TitanPanelSkills_BuildSkillList();
        
        local numSkills = table.getn(SkillList);

        local i = 0;
        local currentHeader = "";
        local prevHeader = "";
        
        for i=1, numSkills do

                currentHeader = SkillList[i].stype;

                if ( SkillList[i].stype == TRADE_SKILLS or SkillList[i].stype == TITAN_SKILLS_SECONDARY_TEXT or SkillList[i].stype == TITAN_SKILLS_WEAPON_TEXT or SkillList[i].stype == TITAN_SKILLS_CLASS_TEXT ) then
                        if ( currentHeader ~= prevHeader and SkillList[i].maxrank > 1 ) then
                                tooltipRichText = tooltipRichText..TitanUtils_GetNormalText(SkillList[i].stype).."\n";
                                prevHeader = currentHeader;
                        end
                        if ( SkillList[i].maxrank > 1 ) then
                                        tooltipRichText = tooltipRichText..TitanUtils_GetGreenText(SkillList[i].name)..":".."\t"..SkillList[i].rank;
                                        if ( SkillList[i].rankbonus > 0 ) then
                                                tooltipRichText = tooltipRichText.."(+"..SkillList[i].rankbonus..")";
                                        end
                                        tooltipRichText = tooltipRichText.."/"..SkillList[i].maxrank.."\n";
                        end
                end
        end

        -- remove the last \n
        tooltipRichText = string.sub(tooltipRichText, 1, string.len(tooltipRichText)-1);

        return tooltipRichText;
end

--
-- create menus
--
function TitanPanelRightClickMenu_PrepareSkillsMenu()
        TitanPanelRightClickMenu_PrepareMenu(TITAN_SKILLS_ID);
end

function TitanPanelRightClickMenu_PrepareSkillsRightMenu()
        TitanPanelRightClickMenu_PrepareMenu(TITAN_SKILLS_RIGHT_ID);
end

function TitanPanelRightClickMenu_PrepareMenu(id)

        local info = {};
        
        if ( UIDROPDOWNMENU_MENU_LEVEL == 2 ) then
        
                if ( UIDROPDOWNMENU_MENU_VALUE == "DisplayAbout" ) then
                        info = {};
                        info.text = TITAN_SKILLS_ABOUT_POPUP_TEXT;
                        info.value = "AboutTextPopUP";
                        info.notClickable = 1;
                        info.isTitle = 0;
                        UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
                end
                return;
        end
        
        TitanPanelRightClickMenu_AddTitle(TitanPlugins[id].menuText);
        if ( id == TITAN_SKILLS_ID ) then
                info = {};
                info.text = TITAN_SKILLS_SHOW_LEVEL_TEXT;
                info.value = "ShowLevelToggle";
                info.func = TitanPanelSkills_ShowLevelToggle;
                info.checked = TitanGetVar(TITAN_SKILLS_ID, "ShowLevel");
                UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL);
                
                TitanPanelRightClickMenu_AddToggleLabelText(id);
                TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, id, TITAN_PANEL_MENU_FUNC_HIDE);
        end

        -- info about plugin
        info = {};
        info.text = TITAN_SKILLS_ABOUT_TEXT;
        info.value = "DisplayAbout";
        info.hasArrow = 1;
        UIDropDownMenu_AddButton(info);
end

--
-- Skills functions
--
function TitanPanelSkills_BuildSkillList()

        local skillName, isHeader, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable;
        local stepCost, rankCost, minLevel, skillCostType;

        local skillType = "";
        local skillIndex = 0;
        local SkillList = { };

        local numSkills = GetNumSkillLines();

        for skillIndex=1, numSkills do
                
                skillName, isHeader, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType = GetSkillLineInfo(skillIndex);
        
                if ( isHeader ) then
                        skillType = skillName;
                else
                        local entry = { name = skillName, stype = skillType, rank = skillRank, maxrank = skillMaxRank, rankbonus = skillModifier };
                        table.insert(SkillList, entry);
                end
        end
        
        --TitanPanelSkills_DisplayTheList(SkillList);
        return SkillList;
end

function TitanPanelSkills_ShowLevelToggle()
        if ( TitanGetVar(TITAN_SKILLS_ID, "ShowLevel") ) then
                TitanSetVar(TITAN_SKILLS_ID, "ShowLevel", nil);
        else
                TitanSetVar(TITAN_SKILLS_ID, "ShowLevel", 1);
        end
        
        TitanPanelButton_UpdateButton(TITAN_SKILLS_ID);
end

--
-- debug
-- 
function TitanPanelSkills_DisplayTheList(thelist)
        local i = 0;
        for i=1, table.getn(thelist) do
                TitanPanelSkills_ChatPrint(i..":"..thelist[i].name..":"..thelist[i].stype.."\n");
        end
end

function TitanPanelSkills_ChatPrint(msg)
        DEFAULT_CHAT_FRAME:AddMessage(msg);
end

Generated by GNU Enscript 1.6.5.90.