vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
MetaMapBLTData = {};
MetaMapBLT_ClassSet = "";
MetaMapBLT_ClassName = "";

local function MetaMapBLT_FixText(text)
    --Armour class
    text = gsub(text, "#a1#", ATLASLOOT_CLOTH);
    text = gsub(text, "#a2#", ATLASLOOT_LEATHER);
    text = gsub(text, "#a3#", ATLASLOOT_MAIL);
    text = gsub(text, "#a4#", ATLASLOOT_PLATE);
    
    --Body slot
    text = gsub(text, "#s1#", ATLASLOOT_HEAD);
    text = gsub(text, "#s2#", ATLASLOOT_NECK);
    text = gsub(text, "#s3#", ATLASLOOT_SHOULDER);
    text = gsub(text, "#s4#", ATLASLOOT_BACK);
    text = gsub(text, "#s5#", ATLASLOOT_CHEST);
    text = gsub(text, "#s6#", ATLASLOOT_SHIRT);
    text = gsub(text, "#s7#", ATLASLOOT_TABARD);
    text = gsub(text, "#s8#", ATLASLOOT_WRIST);
    text = gsub(text, "#s9#", ATLASLOOT_HANDS);
    text = gsub(text, "#s10#", ATLASLOOT_WAIST);
    text = gsub(text, "#s11#", ATLASLOOT_LEGS);
    text = gsub(text, "#s12#", ATLASLOOT_FEET);
    text = gsub(text, "#s13#", ATLASLOOT_RING);
    text = gsub(text, "#s14#", ATLASLOOT_TRINKET);
    text = gsub(text, "#s15#", ATLASLOOT_OFF_HAND);
    text = gsub(text, "#s16#", ATLASLOOT_RELIC);
    
    --Weapon Weilding
    text = gsub(text, "#h1#", ATLASLOOT_ONE_HAND);
    text = gsub(text, "#h2#", ATLASLOOT_TWO_HAND);
    text = gsub(text, "#h3#", ATLASLOOT_MAIN_HAND);
    text = gsub(text, "#h4#", ATLASLOOT_OFFHAND);
    
    --Weapon type
    text = gsub(text, "#w1#", ATLASLOOT_AXE);
    text = gsub(text, "#w2#", ATLASLOOT_BOW);
    text = gsub(text, "#w3#", ATLASLOOT_CROSSBOW);
    text = gsub(text, "#w4#", ATLASLOOT_DAGGER);
    text = gsub(text, "#w5#", ATLASLOOT_GUN);
    text = gsub(text, "#w6#", ATLASLOOT_MACE);
    text = gsub(text, "#w7#", ATLASLOOT_POLEARM);
    text = gsub(text, "#w8#", ATLASLOOT_SHIELD);
    text = gsub(text, "#w9#", ATLASLOOT_STAFF);
    text = gsub(text, "#w10#", ATLASLOOT_SWORD);
    text = gsub(text, "#w11#", ATLASLOOT_THROWN);
    text = gsub(text, "#w12#", ATLASLOOT_WAND);
    text = gsub(text, "#w13#", ATLASLOOT_FIST);
    
    -- Misc. Equipment
    text = gsub(text, "#e1#", ATLASLOOT_POTION);
    text = gsub(text, "#e2#", ATLASLOOT_FOOD);
    text = gsub(text, "#e3#", ATLASLOOT_DRINK);
    text = gsub(text, "#e4#", ATLASLOOT_BANDAGE);
    text = gsub(text, "#e5#", ATLASLOOT_ARROW);
    text = gsub(text, "#e6#", ATLASLOOT_BULLET);
    text = gsub(text, "#e7#", ATLASLOOT_MOUNT);
    text = gsub(text, "#e8#", ATLASLOOT_AMMO);
    text = gsub(text, "#e9#", ATLASLOOT_QUIVER);
    text = gsub(text, "#e10#", ATLASLOOT_BAG);
    text = gsub(text, "#e11#", ATLASLOOT_ENCHANT);
    text = gsub(text, "#e12#", ATLASLOOT_TRADE_GOODS);
    text = gsub(text, "#e13#", ATLASLOOT_SCOPE);
    text = gsub(text, "#e14#", ATLASLOOT_KEY);
    text = gsub(text, "#e15#", ATLASLOOT_PET);
    text = gsub(text, "#e16#", ATLASLOOT_IDOL);
    text = gsub(text, "#e17#", ATLASLOOT_TOTEM);
    text = gsub(text, "#e18#", ATLASLOOT_LIBRAM);
    text = gsub(text, "#e19#", ATLASLOOT_DARKMOON);
    text = gsub(text, "#e20#", ATLASLOOT_BOOK);
    text = gsub(text, "#e21#", ATLASLOOT_BANNER);
    
    -- Classes
    text = gsub(text, "#c1#", ATLASLOOT_DRUID);
    text = gsub(text, "#c2#", ATLASLOOT_HUNTER);
    text = gsub(text, "#c3#", ATLASLOOT_MAGE);
    text = gsub(text, "#c4#", ATLASLOOT_PALADIN);
    text = gsub(text, "#c5#", ATLASLOOT_PRIEST);
    text = gsub(text, "#c6#", ATLASLOOT_ROGUE);
    text = gsub(text, "#c7#", ATLASLOOT_SHAMAN);
    text = gsub(text, "#c8#", ATLASLOOT_WARLOCK);
    text = gsub(text, "#c9#", ATLASLOOT_WARRIOR);
    
    --Professions
    text = gsub(text, "#p1#", ATLASLOOT_ALCHEMY);
    text = gsub(text, "#p2#", ATLASLOOT_BLACKSMITHING);
    text = gsub(text, "#p3#", ATLASLOOT_COOKING);
    text = gsub(text, "#p4#", ATLASLOOT_ENCHANTING);
    text = gsub(text, "#p5#", ATLASLOOT_ENGINEERING);
    text = gsub(text, "#p6#", ATLASLOOT_FIRST_AID);
    text = gsub(text, "#p7#", ATLASLOOT_LEATHERWORKING);
    text = gsub(text, "#p8#", ATLASLOOT_TAILORING);
    text = gsub(text, "#p9#", ATLASLOOT_DRAGONSCALE);
    text = gsub(text, "#p10#", ATLASLOOT_TRIBAL);
    text = gsub(text, "#p11#", ATLASLOOT_ELEMENTAL);
    
    --Reputation
    text = gsub(text, "#r1#", ATLASLOOT_NEUTRAL);
    text = gsub(text, "#r2#", ATLASLOOT_FRIENDLY);
    text = gsub(text, "#r3#", ATLASLOOT_HONORED);
    text = gsub(text, "#r4#", ATLASLOOT_REVERED);
    text = gsub(text, "#r5#", ATLASLOOT_EXALTED);
    
    --Battleground Factions
    text = gsub(text, "#b1#", ATLASLOOT_BG_STORMPIKE);
    text = gsub(text, "#b2#", ATLASLOOT_BG_FROSTWOLF);
    text = gsub(text, "#b3#", ATLASLOOT_BG_SENTINELS);
    text = gsub(text, "#b4#", ATLASLOOT_BG_OUTRIDERS);
    text = gsub(text, "#b5#", ATLASLOOT_BG_ARATHOR);
    text = gsub(text, "#b6#", ATLASLOOT_BG_DEFILERS);
    
    -- Misc phrases and mod specific stuff
    text = gsub(text, "#m1#", ATLASLOOT_CLASSES);
    text = gsub(text, "#m2#", ATLASLOOT_QUEST1);
    text = gsub(text, "#m3#", ATLASLOOT_QUEST2);
    text = gsub(text, "#m4#", ATLASLOOT_QUEST3);
    text = gsub(text, "#m5#", ATLASLOOT_SHARED);
    text = gsub(text, "#m6#", ATLASLOOT_HORDE);
    text = gsub(text, "#m7#", ATLASLOOT_ALLIANCE);
    text = gsub(text, "#m8#", ATLASLOOT_UNIQUE);
    text = gsub(text, "#m9#", ATLASLOOT_RIGHTSIDE);
    text = gsub(text, "#m10#", ATLASLOOT_LEFTSIDE);
    text = gsub(text, "#m11#", ATLASLOOT_FELCOREBAG);
    text = gsub(text, "#m12#", ATLASLOOT_ONYBAG);
    text = gsub(text, "#m13#", ATLASLOOT_WCBAG);
    text = gsub(text, "#m14#", ATLASLOOT_FULLSKILL);
    text = gsub(text, "#m15#", ATLASLOOT_295);
    text = gsub(text, "#m16#", ATLASLOOT_275);
    text = gsub(text, "#m17#", ATLASLOOT_265);
    text = gsub(text, "#m18#", ATLASLOOT_290);
    text = gsub(text, "#m19#", ATLASLOOT_SET);
    text = gsub(text, "#m20#", ATLASLOOT_285);
    text = gsub(text, "#m21#", ATLASLOOT_16SLOT);
    
    text = gsub(text, "#x1#", ATLASLOOT_COBRAHN);
    text = gsub(text, "#x2#", ATLASLOOT_ANACONDRA);
    text = gsub(text, "#x3#", ATLASLOOT_SERPENTIS);
    text = gsub(text, "#x4#", ATLASLOOT_FANGDRUID);
    text = gsub(text, "#x5#", ATLASLOOT_PYTHAS);
    text = gsub(text, "#x6#", ATLASLOOT_VANCLEEF);
    text = gsub(text, "#x7#", ATLASLOOT_GREENSKIN);
    text = gsub(text, "#x8#", ATLASLOOT_DEFIASMINER);
    text = gsub(text, "#x9#", ATLASLOOT_DEFIASOVERSEER);
    text = gsub(text, "#x10#", ATLASLOOT_Primal_Hakkari_Kossack);
    text = gsub(text, "#x11#", ATLASLOOT_Primal_Hakkari_Shawl);
    text = gsub(text, "#x12#", ATLASLOOT_Primal_Hakkari_Bindings);
    text = gsub(text, "#x13#", ATLASLOOT_Primal_Hakkari_Sash);
    text = gsub(text, "#x14#", ATLASLOOT_Primal_Hakkari_Stanchion);
    text = gsub(text, "#x15#", ATLASLOOT_Primal_Hakkari_Aegis);
    text = gsub(text, "#x16#", ATLASLOOT_Primal_Hakkari_Girdle);
    text = gsub(text, "#x17#", ATLASLOOT_Primal_Hakkari_Armsplint);
    text = gsub(text, "#x18#", ATLASLOOT_Primal_Hakkari_Tabard);
    text = gsub(text, "#x19#", ATLASLOOT_Qiraji_Ornate_Hilt);
    text = gsub(text, "#x20#", ATLASLOOT_Qiraji_Martial_Drape);
    text = gsub(text, "#x21#", ATLASLOOT_Qiraji_Magisterial_Ring);
    text = gsub(text, "#x22#", ATLASLOOT_Qiraji_Ceremonial_Ring);
    text = gsub(text, "#x23#", ATLASLOOT_Qiraji_Regal_Drape);
    text = gsub(text, "#x24#", ATLASLOOT_Qiraji_Spiked_Hilt);
    text = gsub(text, "#x25#", ATLASLOOT_Qiraji_Bindings_of_Dominance);
    text = gsub(text, "#x26#", ATLASLOOT_Veknilashs_Circlet);
    text = gsub(text, "#x27#", ATLASLOOT_Ouros_Intact_Hide);
    text = gsub(text, "#x28#", ATLASLOOT_Husk_of_the_Old_God);
    text = gsub(text, "#x29#", ATLASLOOT_Qiraji_Bindings_of_Command);
    text = gsub(text, "#x30#", ATLASLOOT_Veklors_Diadem);
    text = gsub(text, "#x31#", ATLASLOOT_Skin_of_the_Great_Sandworm);
    text = gsub(text, "#x32#", ATLASLOOT_Carapace_of_the_Old_God);
    text = gsub(text, "#x33#", ATLASLOOT_SCARLETDEFENDER);
    text = gsub(text, "#x34#", ATLASLOOT_SCARLETTRASH);
    text = gsub(text, "#x35#", ATLASLOOT_SCARLETCHAMPION);
    text = gsub(text, "#x36#", ATLASLOOT_SCARLETCENTURION);
    text = gsub(text, "#x37#", ATLASLOOT_SCARLETHEROD);
    text = gsub(text, "#x38#", ATLASLOOT_SCARLETPROTECTOR);    
    
    --Text colouring
    text = gsub(text, "=q0=", "|cff9d9d9d");
    text = gsub(text, "=q1=", "|cffFFFFFF");
    text = gsub(text, "=q2=", "|cff1eff00");
    text = gsub(text, "=q3=", "|cff0070dd");
    text = gsub(text, "=q4=", "|cff9F3FFF");
    text = gsub(text, "=q5=", "|cffFF8400");
    text = gsub(text, "=q6=", "|cffFF0000");
    text = gsub(text, "=ds=", "|cffFFd200");
    return text;
end

function MetaMapBLT_OnSelect(lootID, name)
        if(lootID == nil) then return; end
        local info;
        if(lootID and lootID ~= "") then
                MetaMapBLT_ToggleDR(1);
                local itemName, itemLink, itemQuality, itemLevel, itemType, itemSubType, itemCount, itemEquipLoc, itemTexture, itemColor;
                local iconFrame, nameFrame, extraFrame;
                local text, extra;
                if(string.find(lootID, "CLASS_SET")) then
                        MetaMapBLT_SetMenu(lootID, name);
                        info = METAMAPBLT_CLASS_SELECT;
                        lootID = nil;
                end
                for i = 1, 30, 1 do
                        if(MetaMapBLTData[lootID] ~= nil and MetaMapBLTData[lootID][i] ~= nil and MetaMapBLTData[lootID][i][3] ~= "") then
                                itemName, itemLink, itemQuality, itemLevel, itemType, itemSubType, itemCount, itemEquipLoc, itemTexture = GetItemInfo(MetaMapBLTData[lootID][i][1]);
                                if(GetItemInfo(MetaMapBLTData[lootID][i][1])) then
                                        _, _, _, itemColor = GetItemQualityColor(itemQuality);
                                        text = itemColor..itemName;
                                else
                                        text = MetaMapBLTData[lootID][i][3];
                                        text = MetaMapBLT_FixText(text);
                                end
                                
                                extra = MetaMapBLTData[lootID][i][4];
                extra = MetaMapBLT_FixText(extra)
                                if(not GetItemInfo(MetaMapBLTData[lootID][i][1]) and (MetaMapBLTData[lootID][i][1] ~= 0)) then
                                        extra = extra.." |cffff0000(no iteminfo)";
                                end
                        
                                getglobal("MetaMapBLTItem_"..i.."_Icon"):SetTexture("Interface\\Icons\\"..MetaMapBLTData[lootID][i][2]);
                                getglobal("MetaMapBLTItem_"..i.."_Extra"):SetText(extra);
                                getglobal("MetaMapBLTItem_"..i.."_Name"):SetText(text);
                                getglobal("MetaMapBLTItem_"..i).itemID = MetaMapBLTData[lootID][i][1];
                                getglobal("MetaMapBLTItem_"..i).storeID = MetaMapBLTData[lootID][i][1];
                                getglobal("MetaMapBLTItem_"..i).droprate = MetaMapBLTData[lootID][i][5];
                                getglobal("MetaMapBLTItem_"..i).i = 1;
                                getglobal("MetaMapBLTItem_"..i):Show();
                                MetaMapContainer_InfoText:Hide();
                        else
                                getglobal("MetaMapBLTItem_"..i):Hide();
                        end
                        if(MetaMapBLTData[lootID] == nil and info == nil) then 
                                info = METAMAPBLT_NO_DATA;
                        end
                end
        else
                for i = 1, 30, 1 do
                        getglobal("MetaMapBLTItem_"..i):Hide();
                end            
                info = METAMAPBLT_NO_INFO;
        end
        MetaMapContainer_ShowFrame(MetaMapBLT_SubFrame, name, METAMAPBLT_HINT, info);
end

function MetaMapBLTItem_OnEnter()
        if(this.itemID ~= nil) then
    if(IsAddOnLoaded("LootLink") and GetItemInfo(this.itemID) == nil) then
                        GameTooltip:SetOwner(this, "ANCHOR_RIGHT", -200, 0);
      LootLink_SetTooltip(GameTooltip, strsub(getglobal("MetaMapBLTItem_"..this:GetID().."_Name"):GetText(), 11), 1);
                        if( this.droprate ~= nil) then
                                GameTooltip:AddLine("Drop Rate: "..this.droprate, 1, 1, 0);
                        end
                        GameTooltip:Show();
    elseif(IsAddOnLoaded("ItemSync")) then
                        ISync:ButtonEnter();
                        if( this.droprate ~= nil) then
                                GameTooltip:AddLine("Drop Rate: "..this.droprate, 1, 1, 0);
                                GameTooltip:Show();
                        end
                elseif(this.itemID ~= nil and  GetItemInfo(this.itemID) ~= nil) then
                        GameTooltip:SetOwner(this, "ANCHOR_RIGHT", -200, 0);
                        GameTooltip:SetHyperlink("item:"..this.itemID..":0:0:0");
                        if( this.droprate ~= nil) then
                                GameTooltip:AddLine("Drop Rate: "..this.droprate, 1, 1, 0);
                        end
                        GameTooltip:Show();
                end
        end
end

function MetaMapBLTItem_OnClick()
        local iteminfo = GetItemInfo(this.itemID);
        local color = strsub(getglobal("MetaMapBLTItem_"..this:GetID().."_Name"):GetText(), 1, 10);
        local name = strsub(getglobal("MetaMapBLTItem_"..this:GetID().."_Name"):GetText(), 11);
        if(ChatFrameEditBox:IsVisible() and IsShiftKeyDown() and iteminfo) then
                ChatFrameEditBox:Insert(color.."|Hitem:"..this.itemID..":0:0:0|h["..name.."]|h|r");
        elseif(IsControlKeyDown() and iteminfo) then
                DressUpItemLink(this.itemID);
                DressUpFrame:Show();
                DressUpItemLink(this.itemID);
        elseif(IsAddOnLoaded("ItemSync")) then
                ISync:AddTooltipInfo(GameTooltip, "item:"..this.itemID..":0:0:0", 1);
        end
end
    
function MetaMapBLT_SetMenu(lootID, name)
        MetaMapBLT_ClassSet = string.gsub(lootID, "CLASS_SET", "")
        MetaMapBLT_ClassName = name;
        MetaMapContainer_ShowFrame(MetaMapBLT_SubFrame, name, METAMAPBLT_HINT, info);
        MetaMapBLT_ClassMenu:Show();
end

function MetaMapBLT_MenuOnClick()
        local className = MetaMapBLT_ClassSet..getglobal(this:GetName().."ClassName"):GetText();
        local header = MetaMapBLT_ClassName.." - "..this:GetText();
        MetaMapBLT_OnSelect(className, header);
end

function MetaMapBLT_ToggleDR(mode)
        if(mode == 1) then
                DressUpFrame:SetMovable(true);
                DressUpFrame:SetFrameStrata("FULLSCREEN");
                DressUpFrame:SetScript("OnMouseDown", X_Frame:GetScript("OnMouseDown"));
                DressUpFrame:SetScript("OnMouseUp", X_Frame:GetScript("OnMouseUp"));
        else
                DressUpFrame:SetMovable(false);
                DressUpFrame:SetFrameStrata("HIGH");
                DressUpFrame:SetScript("OnMouseDown", nil);
                DressUpFrame:SetScript("OnMouseUp", nil);
        end
end

function MetaMapBLTItem_OnLeave()
        GameTooltip:Hide();
end

function MetaMapBLT_SetClassColors()
        local color;
        color = RAID_CLASS_COLORS["DRUID"];
        MetaMapBLT_DruidButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["HUNTER"];
        MetaMapBLT_HunterButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["MAGE"];
        MetaMapBLT_MageButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["PALADIN"];
        MetaMapBLT_PaladinButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["PRIEST"];
        MetaMapBLT_PriestButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["ROGUE"];
        MetaMapBLT_RogueButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["SHAMAN"];
        MetaMapBLT_ShamanButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["WARLOCK"];
        MetaMapBLT_WarlockButton:SetTextColor(color.r, color.g, color.b);
        color = RAID_CLASS_COLORS["WARRIOR"];
        MetaMapBLT_WarriorButton:SetTextColor(color.r, color.g, color.b);
end