vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
-- MetaMapZSM (ZoneShifter for German and French clients)
-- Written by MetaHawk - aka Urshurak

function MetaMapZSM_Init()
        MetaMapZSM_InfoHeader:SetText(METAMAPZSM_NEW_VERSION);
        for index, versions in MetaMapZSM_VersionData do
                for version, value in versions do
                        local setButton = false;
                        if(GetLocale() == "deDE") then
                                if(DE_ZoneShift[version] ~= nil) then
                                        setButton = true;
                                end
                        elseif(GetLocale() == "frFR") then
                                if(FR_ZoneShift[version] ~= nil) then
                                        setButton = true;
                                end
                        end
                        if(setButton) then
                                getglobal("MetaMapZSM_ZoneShiftButton"..index):SetText("ZoneShift from "..value.old.." to "..value.new);
                                getglobal("MetaMapZSM_ZoneShiftButton"..index.."Version"):SetText(value.old);
                                getglobal("MetaMapZSM_ZoneShiftButton"..index):Show();
                                if(MetaMapOptions.ZoneShiftVersion >= value.new) then
                                        getglobal("MetaMapZSM_ZoneShiftButton"..index):Disable();
                                        getglobal("MetaMapZSM_ZoneShiftButton"..index.."SkipShift"):Hide();
                                else
                                        getglobal("MetaMapZSM_ZoneShiftButton"..index):Enable();
                                        getglobal("MetaMapZSM_ZoneShiftButton"..index.."SkipShift"):Show();
                                end
                        end
                end
        end
        if(MetaMapOptions.ZoneShiftVersion == METAMAP_TOC) then
                MetaMapZSM_InfoHeader:SetText(METAMAPZSM_NO_SHIFT);
                MetaMapZSM_Update:Disable();
        end
end

function MetaMapZSM_OnClick(id, button)
        if(not IsAddOnLoaded("MetaMapWKB")) then
                LoadAddOn("MetaMapWKB");
        end
        local newShift = MetaMapZSM_VersionData[button][id].new;
        MetaMapZSM_Convert(newShift);
        MetaMapOptions.ZoneShiftVersion = newShift;
        MetaMapZSM_Init();
end

function MetaMapZSM_Convert(newShift)
        local temp = {}
        for z=1, 2, 1 do
                for index, value in MetaMapNotes_Data[z] do
                        if(GetLocale() == "deDE" and type(z) ~= "string") then
                                temp[DE_ZoneShift[newShift][z][index]] = value;
                        elseif(GetLocale() == "frFR" and type(z) ~= "string") then
                                temp[FR_ZoneShift[newShift][z][index]] = value;
                        end
                end
                MetaMapNotes_Data[z] = {};
                for index, value in temp do
                        MetaMapNotes_Data[z][index] = value;
                end
                temp = {};
        end
        temp = {};
        for z=1, 2, 1 do
                for index, value in MetaMapNotes_Lines[z] do
                        if(GetLocale() == "deDE") then
                                temp[DE_ZoneShift[newShift][z][index]] = value;
                        elseif(GetLocale() == "frFR") then
                                temp[FR_ZoneShift[newShift][z][index]] = value;
                        end
                end
                MetaMapNotes_Lines[z] = {};
                for index, value in temp do
                        MetaMapNotes_Lines[z][index] = value;
                end
                temp = {};
        end
        temp = {};
        if(MetaKB_Data) then
                for name, continentTable in MetaKB_Data[MetaKB_dbID] do
                        for continent, zoneTable in continentTable do
                                for zone, value in zoneTable do
                                        if(GetLocale() ~= "deDE") then
                                                temp[DE_ZoneShift[newShift][continent][zone]] = value;
                                        elseif(GetLocale() == "frFR") then
                                                temp[FR_ZoneShift[newShift][continent][zone]] = value;
                                        end
                                end
                                MetaKB_Data[MetaKB_dbID][name][continent] = {};
                                for index, value in temp do
                                        MetaKB_Data[MetaKB_dbID][name][continent][index] = value;
                                end
                                temp = {};
                        end
                end
        end
        MetaMapZSM_InfoHeader:SetText(format(METAMAPZSM_UPDATE_DONE, newShift));
end

MetaMapZSM_VersionData = {
        [1] = {
                [11000] = {
                        ["old"] = 11000,
                        ["new"] = 11100,
                },
        },
        [2] = {
                [11100] = {
                        ["old"] = 11100,
                        ["new"] = 11200,
                },
        },
}

-- German ZoneShift
DE_ZoneShift = {
        [11000] = {
                [0] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
                [1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 },
                [2] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 },
        },
        [11100] = {
                [0] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
                [1] = { 1, 2, 4, 3, 14, 20, 5, 9, 6, 7, 8, 10, 11, 12, 13, 15, 17, 18, 16 ,19, 21 },
                [2] = { 1, 2, 7, 10, 15, 24, 6, 13, 21, 16, 20, 3, 12, 19, 23, 25, 4, 5, 8, 9, 14, 11, 17, 18, 22 },
        },
        [11200] = {
                [0] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
                [1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 },
                [2] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 },
        },
}
-- French ZoneShift
FR_ZoneShift = {
        [11000] = {
                [0] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
                [1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 },
                [2] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 },
        },
        [11100] = {
                [0] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
                [1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 },
                [2] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 },
        },
        [11200] = {
                [0] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 },
                [1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 },
                [2] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 },
        },
}