vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- Version 0.31
-- 12.05.2005
-- For updates visit http://www.curse-gaming.com/mod.php?addid=1103


TITAN_FRIENDSX_ID = "FriendsX"

NumFriendsOnline = 0;
NumGuildsOnline = 0;
NumFriends = 0;
NumGuilds = 0;


function TitanPanelFriendsXButton_OnLoad()
        this.registry = { 
                id = TITAN_FRIENDSX_ID,
                menuText = FRIENDSX_MENU_TEXT, 
                buttonTextFunction = "TitanPanelFriendsXButton_GetButtonText", 
                tooltipTitle = FRIENDSX_TOOLTIP,
                tooltipTextFunction = "TitanPanelFriendsXButton_GetTooltipText", 
                
                savedVariables = {
                        ShowLabelText = 1,
                        FriendsCount = 1,
                        FriendsShowOnline = 1,
                        FriendsMarkArea = 1,
                        GuildCount = 1,
                        GuildShowOnline = 1,
                        GuildMarkArea = 1,
                        
                }
        };
                this:RegisterEvent("FRIENDLIST_SHOW");
                this:RegisterEvent("FRIENDLIST_UPDATE");
                this:RegisterEvent("GUILD_ROSTER_SHOW");
                this:RegisterEvent("GUILD_ROSTER_UPDATE");
                --this:RegisterEvent("VARIABLES_LOADED");
                --this:RegisterEvent("PLAYER_GUILD_UPDATE");


end


function TitanPanelFriendsXButton_OnEnter()

        --Sea.IO.print("FriendsXButton_OnEnter Event");
        ShowFriends();

end

function TitanPanelFriendsXButton_OnEvent(event)
        
        --TitanPanelButton_UpdateTooltip();
        --if (event == "VARIABLES_LOADED") then
        --      GuildRoster();
        --      Sea.IO.print("VARIABLES_LOADED Event");
        --      ShowFriends();
        --else
        --      Sea.IO.print(event);
                TitanPanelButton_UpdateButton(TITAN_FRIENDSX_ID);
        --end
end


function TitanPanelFriendsXButton_GetButtonText(id)
        local id = TitanUtils_GetButton(id, true);
        NumFriends = GetNumFriends();
        NumFriendsOnline = 0;
        NumGuilds = GetNumGuildMembers();
        NumGuildsOnline = 0;
        local FriendInSameArea = 0;
        local GuildInSameArea = 0;
        local buttonRichText = "";

        local friend_name, friend_level, friend_class, friend_area, friend_connected
        local guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online
        local friendIndex
        local guildIndex
        local CharName = "";

        CharName = UnitName("player");

                -- get a count of the number of online friends
                for friendIndex=1, NumFriends do
                        friend_name, friend_level, friend_class, friend_area, friend_connected = GetFriendInfo(friendIndex);
                        if (CharName ~= friend_name) then
                                if ( friend_connected ) then
                                        NumFriendsOnline = NumFriendsOnline + 1;
                                end
                                if (friend_area == GetZoneText()) then
                                        FriendInSameArea = FriendInSameArea + 1;
                                end
                        end 
                end

        -- get a count of the number of online guild members
        for guildIndex=1, NumGuilds do
                guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online = GetGuildRosterInfo(guildIndex);
                if (CharName ~= guild_name) then
                        if ( guild_online ) then
                                NumGuildsOnline = NumGuildsOnline + 1;
                                if (guild_zone == GetZoneText()) then
                                        GuildInSameArea = GuildInSameArea + 1;
                                end
                        end
                end
        end


        -- Create Button Text depending on options

        if ((TitanGetVar(TITAN_FRIENDSX_ID, "FriendsCount")) and (TitanGetVar(TITAN_FRIENDSX_ID, "GuildCount"))) then
                --Sea.IO.print("Beide Counts an");
                buttonRichText = format(FRIENDSX_BUTTON_TEXT, TitanUtils_GetGreenText(NumFriendsOnline+NumGuildsOnline), TitanUtils_GetHighlightText(NumFriends+NumGuilds), TitanUtils_GetRedText(GuildInSameArea + FriendInSameArea));
        elseif ((TitanGetVar(TITAN_FRIENDSX_ID, "FriendsCount")) and (TitanGetVar(TITAN_FRIENDSX_ID, "GuildCount") == nil)) then
                buttonRichText = format(FRIENDSX_BUTTON_TEXT, TitanUtils_GetGreenText(NumFriendsOnline), TitanUtils_GetHighlightText(NumFriends), TitanUtils_GetRedText(FriendInSameArea));
                --Sea.IO.print("Nur Friend Count an");
        elseif ((TitanGetVar(TITAN_FRIENDSX_ID, "FriendsCount") == nil) and (TitanGetVar(TITAN_FRIENDSX_ID, "GuildCount"))) then
                --Sea.IO.print("nur gild count an");
                buttonRichText = format(FRIENDSX_BUTTON_TEXT, TitanUtils_GetGreenText(NumGuildsOnline), TitanUtils_GetHighlightText(NumGuilds), TitanUtils_GetRedText(GuildInSameArea));
        else
                buttonRichText = format(FRIENDSX_BUTTON_TEXT, TitanUtils_GetGreenText("-"), TitanUtils_GetHighlightText("-"), TitanUtils_GetRedText("-"));
        end
        return FRIENDSX_BUTTON_LABEL, buttonRichText;

end


function TitanPanelFriendsXButton_GetTooltipText()
        --local NumFriends = GetNumFriends();
        --local NumGuilds = GetNumGuildMembers();
        local tooltipRichText = "";


        local friend_name, friend_level, friend_class, friend_area, friend_connected;
        local friendIndex;
        local guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online;
        local guildIndex;
        local CharName = "";

        CharName = UnitName("player");

        if (TitanGetVar(TITAN_FRIENDSX_ID, "FriendsShowOnline")) then

                if (NumFriendsOnline > 0) then
                        tooltipRichText = tooltipRichText.."\n"..TitanUtils_GetGreenText(FRIENDSX_FRIENDS).."\n";
                        for friendIndex=1, NumFriends do
                                friend_name, friend_level, friend_class, friend_area, friend_connected = GetFriendInfo(friendIndex);
                                if (CharName ~= friend_name) then
                                        if (friend_connected) then
                                                if ((friend_area == GetZoneText()) and (TitanGetVar(TITAN_FRIENDSX_ID, "FriendsMarkArea"))) then
                                                        tooltipRichText = tooltipRichText..TitanUtils_GetRedText(friend_name)..TitanUtils_GetHighlightText(" - "..friend_area.." ["..friend_level.." "..friend_class.."]").."\n";
                                                else
                                                        tooltipRichText = tooltipRichText..TitanUtils_GetNormalText(friend_name)..TitanUtils_GetHighlightText(" - "..friend_area.." ["..friend_level.." "..friend_class.."]").."\n";
                                                end
                                        end
                                end
                        end
                end
        end

        if (TitanGetVar(TITAN_FRIENDSX_ID, "GuildShowOnline")) then
        
                if (NumGuildsOnline > 0) then
                        tooltipRichText = tooltipRichText.."\n"..TitanUtils_GetGreenText(FRIENDSX_GUILD).."\n";
                        for guildIndex=1, NumGuilds do
                                guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online = GetGuildRosterInfo(guildIndex);
                                if (CharName ~= guild_name) then
                                        if ( (guild_online)) then
                                                if ((guild_zone == GetZoneText()) and (TitanGetVar(TITAN_FRIENDSX_ID, "GuildMarkArea"))) then
                                                        tooltipRichText = tooltipRichText..TitanUtils_GetRedText(guild_name)..TitanUtils_GetHighlightText(" - "..guild_zone.." ["..guild_level.." "..guild_class.."]").."\n";                           
                                                else
                                                        tooltipRichText = tooltipRichText..TitanUtils_GetNormalText(guild_name)..TitanUtils_GetHighlightText(" - "..guild_zone.." ["..guild_level.." "..guild_class.."]").."\n";                                
                                                end
                                        end
                                end
                        end
                end
        end
        if (tooltipRichtext == TITAN_FRIENDSX_ID) then
                tooltipRichText = tooltipRichText..TitanUtils_GetNormalText(FRIENDSX_NOBODY_ONLINE_TOOLTIP);
        else
                -- remove the last \n
                tooltipRichText = string.sub(tooltipRichText, 1, string.len(tooltipRichText)-1);
        end

        return tooltipRichText;
end


function Whisper()
        -- yes its the same like kragusĀ“ one :) nice job!
        if ( not ChatFrameEditBox:IsVisible() ) then
                ChatFrame_OpenChat("/w "..this.value.." ");
        else
                ChatFrameEditBox:SetText("/w "..this.value.." ");
        end
end


function invite()
        InviteByName(this.value);               
end


function TitanPanelRightClickMenu_PrepareFriendsXMenu()


        if (IsShiftKeyDown() ) then
                -- Creater Wisper menu

                local guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online
                local friend_name, friend_level, friend_class, friend_area, friend_connected;
                local Index = 0;
                local CharName = "";

                CharName = UnitName("player");          

                info = {};
                info.text = TitanUtils_GetNormalText("Whisper");
                info.notClickable = 1;
                UIDropDownMenu_AddButton(info);



                info = {};
                info.text = TitanUtils_GetGreenText(FRIENDSX_FRIENDS);
                info.notClickable = 1;
                UIDropDownMenu_AddButton(info);

                -- get online friends
                for Index=1, NumFriends do
                        friend_name, friend_level, friend_class, friend_area, friend_connected = GetFriendInfo(Index);
                        if ( friend_connected and CharName ~= friend_name) then
                                info = {};
                                info.text = friend_name;
                                info.func = Whisper;
                                info.value = friend_name;
                                UIDropDownMenu_AddButton(info);
                        end
                end

                info = {};
                info.text = TitanUtils_GetGreenText(FRIENDSX_GUILD);
                info.notClickable = 1
                UIDropDownMenu_AddButton(info);

                -- get online guild people
                for Index=1, NumGuilds do
                        guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online = GetGuildRosterInfo(Index);
                        if ( guild_online and CharName ~= guild_name) then
                                info = {};
                                info.text = guild_name;
                                info.func = Whisper;
                                info.value = guild_name;
                                UIDropDownMenu_AddButton(info);
                        end
                end


        elseif (IsControlKeyDown() ) then

                -- Create invite menu

                local guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online
                local friend_name, friend_level, friend_class, friend_area, friend_connected;
                local Index = 0;
                local CharName = "";

                CharName = UnitName("player");          


                info = {};
                info.text = TitanUtils_GetNormalText("Invite");
                info.notClickable = 1;
                UIDropDownMenu_AddButton(info);


                info = {};
                info.text = TitanUtils_GetGreenText(FRIENDSX_FRIENDS);
                info.notClickable = 1;
                UIDropDownMenu_AddButton(info);

                -- get online friends
                for Index=1, NumFriends do
                        friend_name, friend_level, friend_class, friend_area, friend_connected = GetFriendInfo(Index);
                        if ( friend_connected and CharName ~= friend_name) then
                                info = {};
                                info.text = friend_name;
                                info.func = invite;
                                info.value = friend_name;
                                UIDropDownMenu_AddButton(info);
                        end
                end

                info = {};
                info.text = TitanUtils_GetGreenText(FRIENDSX_GUILD);
                info.notClickable = 1
                UIDropDownMenu_AddButton(info);

                -- get online guild people
                for Index=1, NumGuilds do
                        guild_name, guild_rank, guild_rankIndex, guild_level, guild_class, guild_zone, guild_group, guild_note, guild_officernote, guild_online = GetGuildRosterInfo(Index);
                        if ( guild_online and CharName ~= guild_name) then
                                info = {};
                                info.text = guild_name;
                                info.func = invite;
                                info.value = guild_name_name;
                                UIDropDownMenu_AddButton(info);
                        end
                end


        else

                local id = "FriendsX";
                local info;
                TitanPanelRightClickMenu_AddTitle(TitanPlugins[id].menuText);

                -- FRIEND OPTIONS
                info = {};
                info.text = TitanUtils_GetGreenText(FRIENDSX_FRIENDS_OPTIONS);
                info.notClickable = 1
                UIDropDownMenu_AddButton(info);

                info = {};
                info.text = FRIENDSX_FRIENDS_OPTIONS_COUNT;
                info.func = function()
                        TitanToggleVar(TITAN_FRIENDSX_ID, "FriendsCount");
                        --TitanPanelSettings.FriendsCount = TitanUtils_Toggle(TitanPanelSettings.FriendsCount);
                        TitanPanelButton_UpdateButton(TITAN_FRIENDSX_ID);
                end
                info.keepShownOnClick = 1;
                info.checked =  TitanGetVar(TITAN_FRIENDSX_ID, "FriendsCount");
                UIDropDownMenu_AddButton(info);
        
                info = {};
                info.text = FRIENDSX_FRIENDS_OPTIONS_SHOW_ONLINE_TOOLTIP;
                info.func = function()
                        TitanToggleVar(TITAN_FRIENDSX_ID, "FriendsShowOnline");
                end
                info.keepShownOnClick = 1;
                info.checked =  TitanGetVar(TITAN_FRIENDSX_ID, "FriendsShowOnline");
                UIDropDownMenu_AddButton(info);

                info = {};
                info.text = FRIENDSX_FRIENDS_OPTIONS_MARK_AREA;
                info.func = function()
                        TitanToggleVar(TITAN_FRIENDSX_ID, "FriendsMarkArea");
                end
                info.keepShownOnClick = 1;
                info.checked =  TitanGetVar(TITAN_FRIENDSX_ID, "FriendsMarkArea");
                UIDropDownMenu_AddButton(info);


                -- GUILD OPTIONS
                info = {};
                info.text = TitanUtils_GetGreenText(FRIENDSX_GUILD_OPTIONS);
                info.notClickable = 1;
                UIDropDownMenu_AddButton(info);


                info = {};
                info.text = FRIENDSX_GUILD_OPTIONS_COUNT;
                info.func = function()
                        TitanToggleVar(TITAN_FRIENDSX_ID, "GuildCount");
                        TitanPanelButton_UpdateButton(TITAN_FRIENDSX_ID);
                end
                info.keepShownOnClick = 1;
                info.checked =  TitanGetVar(TITAN_FRIENDSX_ID, "GuildCount");
                UIDropDownMenu_AddButton(info);

                info = {};
                info.text = FRIENDSX_GUILD_OPTIONS_SHOW_ONLINE_TOOLTIP;
                info.func = function()
                        TitanToggleVar(TITAN_FRIENDSX_ID, "GuildShowOnline");
                end
                info.keepShownOnClick = 1;
                info.checked =  TitanGetVar(TITAN_FRIENDSX_ID, "GuildShowOnline");
                UIDropDownMenu_AddButton(info);

                info = {};
                info.text = FRIENDSX_GUILD_OPTIONS_MARK_AREA;
                info.func = function()
                        TitanToggleVar(TITAN_FRIENDSX_ID, "GuildMarkArea");
                end
                info.keepShownOnClick = 1;
                info.checked =  TitanGetVar(TITAN_FRIENDSX_ID, "GuildMarkArea");
                UIDropDownMenu_AddButton(info);

                TitanPanelRightClickMenu_AddSpacer();   

                TitanPanelRightClickMenu_AddToggleLabelText(TITAN_FRIENDSX_ID); 
                TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, id, TITAN_PANEL_MENU_FUNC_HIDE);

        end

end

Generated by GNU Enscript 1.6.5.90.