vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
CT_RATab_AutoPromotions = { };

UnitPopupButtons["CTRAID_DEFAULT_LOOT_TYPE"] = { text = "Default Loot Type", dist = 0, nested = 1 };
UnitPopupButtons["CTRAID_LOOTMETHOD_FREEFORALL"] = { text = TEXT(LOOT_FREE_FOR_ALL), dist = 0 };
UnitPopupButtons["CTRAID_LOOTMETHOD_ROUNDROBIN"] = { text = TEXT(LOOT_ROUND_ROBIN), dist = 0 };
UnitPopupButtons["CTRAID_LOOTMETHOD_MASTER"] = { text = TEXT(LOOT_MASTER_LOOTER), dist = 0 };
UnitPopupButtons["CTRAID_LOOTMETHOD_GROUP"] = { text = TEXT(LOOT_GROUP_LOOT), dist = 0 };
UnitPopupButtons["CTRAID_LOOTMETHOD_NEEDBEFOREGREED"] = { text = TEXT(LOOT_NEED_BEFORE_GREED), dist = 0 };
UnitPopupMenus["CTRAID_DEFAULT_LOOT_TYPE"] = { "CTRAID_LOOTMETHOD_FREEFORALL", "CTRAID_LOOTMETHOD_ROUNDROBIN", "CTRAID_LOOTMETHOD_MASTER", "CTRAID_LOOTMETHOD_GROUP", "CTRAID_LOOTMETHOD_NEEDBEFOREGREED", "CANCEL" };
NEWBIE_TOOLTIP_UNIT_CTRAID_LOOTMETHOD_FREEFORALL = "Set the default loot type to Free for All, which will make CT_RaidAssist automatically set your loot type to the selected option upon creating a raid.";
NEWBIE_TOOLTIP_UNIT_CTRAID_LOOTMETHOD_ROUNDROBIN = "Set the default loot type to Round Robin, which will make CT_RaidAssist automatically set your loot type to the selected option upon creating a raid.";
NEWBIE_TOOLTIP_UNIT_CTRAID_LOOTMETHOD_MASTER = "Set the default loot type to Master Looter, which will make CT_RaidAssist automatically set your loot type to the selected option upon creating a raid.";
NEWBIE_TOOLTIP_UNIT_CTRAID_LOOTMETHOD_GROUP = "Set the default loot type to Group Loot, which will make CT_RaidAssist automatically set your loot type to the selected option upon creating a raid.";
NEWBIE_TOOLTIP_UNIT_CTRAID_LOOTMETHOD_NEEDBEFOREGREED = "Set the default loot type to Need Before Greed, which will make CT_RaidAssist automatically set your loot type to the selected option upon creating a raid.";
tinsert(UnitPopupMenus["SELF"], getn(UnitPopupMenus["SELF"]), "CTRAID_DEFAULT_LOOT_TYPE");
tinsert(UnitPopupShown, 1);
local lootTypeTable = UnitPopupMenus["CTRAID_DEFAULT_LOOT_TYPE"];

local oldUnitPopup_OnClick = UnitPopup_OnClick;
function UnitPopup_OnClick()
        local button = this.value;
        oldUnitPopup_OnClick();
        if ( strsub(button, 1, 17) == "CTRAID_LOOTMETHOD" ) then
                local id = this:GetID();
                CT_RATab_DefaultLootMethod = id;
                if ( CT_RA_Level >= 2 and GetNumRaidMembers() > 0 ) then
                        local lootType = strsub(button, 19);
                        if ( lootType == "MASTER" ) then
                                SetLootMethod(lootType, UnitName("player"));
                        else
                                SetLootMethod(lootType);
                        end
                end
        end
end
local metaFunction = function(tbl, key, val)
        if ( key == "selectedLootMethod" and type(tbl) == "table" ) then
                local defaultLoot = CT_RATab_DefaultLootMethod or 4;
                if ( defaultLoot ) then
                        local k, v = next(lootTypeTable);
                        for i = 1, (defaultLoot-1) do
                                k, v = next(lootTypeTable, k);
                        end
                        rawset(tbl, "selectedLootMethod", UnitPopupButtons[v].text);
                        return;
                end
        end
        rawset(tbl, key, val);
end

local oldUnitPopup_ShowMenu = UnitPopup_ShowMenu;
function UnitPopup_ShowMenu(dropdownMenu, which, unit, name, userData)
        local metatable = getmetatable(dropdownMenu);
        if ( UIDROPDOWNMENU_MENU_LEVEL == 2 and UIDROPDOWNMENU_MENU_VALUE == "CTRAID_DEFAULT_LOOT_TYPE" ) then
                dropdownMenu.selectedLootMethod = nil;
                metatable.__newindex = metaFunction;
        else
                dropdownMenu.selectedLootMethod = UnitLootMethod[GetLootMethod()].text;
                metatable.__newindex = nil;
        end
        oldUnitPopup_ShowMenu(dropdownMenu, which, unit, name, userData);
end

local oldUnitPopup_HideButtons = UnitPopup_HideButtons;
function UnitPopup_HideButtons()
        oldUnitPopup_HideButtons();
        local dropdownMenu = getglobal(UIDROPDOWNMENU_INIT_MENU);
        if ( GetNumPartyMembers() == 0 ) then
                for index, value in UnitPopupMenus[dropdownMenu.which] do
                        if ( value == "CTRAID_DEFAULT_LOOT_TYPE" ) then
                                UnitPopupShown[index] = 0;
                                return;
                        end
                end
        end
end


function CT_RATab_newRaidFrameDropDown_Initialize()
        UnitPopup_ShowMenu(getglobal(UIDROPDOWNMENU_OPEN_MENU), "RAID", this.unit, this.name, this.id);
        local info = {};
        info.text = "Auto-Promote";
        info.tooltipTitle = "Auto-Promote";
        info.tooltipText = "When checked, this player is automatically promoted when he or she joins the raid.";
        info.checked = CT_RATab_AutoPromotions[this.name];
        info.value = this.id;
        info.func = CT_RATab_AutoPromote_OnClick;
        UIDropDownMenu_AddButton(info);
end

function CT_RATab_AutoPromote_OnClick()
        local name, rank = GetRaidRosterInfo(this.value);
        CT_RATab_AutoPromotions[name] = not CT_RATab_AutoPromotions[name];
        if ( CT_RA_Level and CT_RA_Level >= 2 and CT_RATab_AutoPromotions[name] and rank < 1 ) then
                PromoteToAssistant(name);
                CT_RA_Print("<CTRaid> Auto-Promoted |c00FFFFFF" .. name .. "|r.", 1, 0.5, 0);
        end
end