WoWInterface SVN MountRandomMount

[/] [trunk/] [MountRandomMount_GUI.lua] - Rev 34

Compare with Previous | Blame | View Log

local AceConfigDialog = LibStub("AceConfigDialog-3.0")
local AceConfig = LibStub("AceConfig-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("MountRandomMount")

local MRM_OptionsTable = {
        name = "MountRandomMount",
        handler = MountRandomMount,
        type = "group",
        args = {--MountRandomMount
                desc = {
                        order = 1,
                        name = L['MRMCommands'],
                        fontSize = "medium",
                        type = "description"
                },
                enableFlyEverywere = {
                        order = 2,
                        name = L['Flying will be random with land mount in area where flying is not enable.'],
                        type = "toggle",
                        set = function(info,val)
                                MountRandomMount_SavedTable['enableFlyEverywere'] = val
                        end,
                        get = function(info)
                                if MountRandomMount_SavedTable['enableFlyEverywere'] == nil then
                                        MountRandomMount_SavedTable['enableFlyEverywere'] = false
                                end
                                return MountRandomMount_SavedTable['enableFlyEverywere']
                        end
                }
        }
}

local tableAccents = {}
tableAccents["à"] = "a"
tableAccents["á"] = "a"
tableAccents["â"] = "a"
tableAccents["ã"] = "a"
tableAccents["ä"] = "a"
tableAccents["ç"] = "c"
tableAccents["è"] = "e"
tableAccents["é"] = "e"
tableAccents["ê"] = "e"
tableAccents["ë"] = "e"
tableAccents["ì"] = "i"
tableAccents["í"] = "i"
tableAccents["î"] = "i"
tableAccents["ï"] = "i"
tableAccents["ñ"] = "n"
tableAccents["ò"] = "o"
tableAccents["ó"] = "o"
tableAccents["ô"] = "o"
tableAccents["õ"] = "o"
tableAccents["ö"] = "o"
tableAccents["ù"] = "u"
tableAccents["ú"] = "u"
tableAccents["û"] = "u"
tableAccents["ü"] = "u"
tableAccents["ý"] = "y"
tableAccents["ÿ"] = "y"
tableAccents["À"] = "A"
tableAccents["Á"] = "A"
tableAccents["Â"] = "A"
tableAccents["Ã"] = "A"
tableAccents["Ä"] = "A"
tableAccents["Ç"] = "C"
tableAccents["È"] = "E"
tableAccents["É"] = "E"
tableAccents["Ê"] = "E"
tableAccents["Ë"] = "E"
tableAccents["Ì"] = "I"
tableAccents["Í"] = "I"
tableAccents["Î"] = "I"
tableAccents["Ï"] = "I"
tableAccents["Ñ"] = "N"
tableAccents["Ò"] = "O"
tableAccents["Ó"] = "O"
tableAccents["Ô"] = "O"
tableAccents["Õ"] = "O"
tableAccents["Ö"] = "O"
tableAccents["Ù"] = "U"
tableAccents["Ú"] = "U"
tableAccents["Û"] = "U"
tableAccents["Ü"] = "U"
tableAccents["Ý"] = "Y"

-- Strip accents from a string
function string.stripAccents( str )

        local normalizedString = ""

        for strChar in string.gmatch(str, "([%z\1-\127\194-\244][\128-\191]*)") do
                if tableAccents[strChar] ~= nil then
                        normalizedString = normalizedString..tableAccents[strChar]
                else
                        normalizedString = normalizedString..strChar
                end
        end

        return normalizedString

end



--POPULATE GROUND MOUNTS OPTIONS
function MountRandomMount:GroundFrame()
        local optionTable = {}
        local allmounts = {}
        local allMountsOrder = {}
        local EnableMounts = {}
        local sourcesort = {}
        local sources, mounts, k, v, j, i, sourceTxt

        for sources, mounts in pairs(MountRandomMount_MountDataList["ground"]) do
                local optionTableMount = {}
                i = 0
                table.foreach(mounts, function(k,v)
                        optionTableMount['mount'..v..k] = {
                                order = k,
                                name = v,
                                type = "toggle",
                                set = function(info,val)
                                        if val then
                                                print(v.." "..L['MRMLandAdded'])
                                                table.insert(MountRandomMount_SavedTable['ground'], k)
                                        else
                                                for iSaved, vSaved in pairs(MountRandomMount_SavedTable['ground']) do
                                                        if vSaved == k then
                                                                print(v.." "..L['MRMLandRemoved'])
                                                                table.remove(MountRandomMount_SavedTable['ground'], iSaved)
                                                                break
                                                        end
                                                end
                                        end
                                end,
                                get = function(info)
                                        for iSaved, vSaved in pairs(MountRandomMount_SavedTable['ground']) do
                                                if vSaved == k then
                                                        return true
                                                end
                                        end
                                        return false
                                end
                        }
                        table.insert(allMountsOrder, 'mount'..v..k)
                        i = 1
                        allmounts['mount'..v..k] = optionTableMount['mount'..v..k]

                        for iSaved, vSaved in pairs(_G['MountRandomMount_SavedTable']['ground']) do
                                if vSaved == k then
                                        EnableMounts['mount'..v..k] = optionTableMount['mount'..k]
                                end
                        end
                end)

                if i ~= 0 then
                        if sources ~= 0 then
                                sourceTxt = _G["BATTLE_PET_SOURCE_"..sources]
                        else
                                sourceTxt = 'API BUG'
                        end
                        table.insert(sourcesort, sourceTxt)
                        optionTable[sourceTxt] = {
                                name = sourceTxt,
                                type = "group",
                                handler = MountRandomMount,
                                childGroups = "tab",
                                args = optionTableMount
                        }
                end
        end

        table.sort(sourcesort, function(a, b)
                return string.stripAccents(a)<string.stripAccents(b)
        end)
        j=3
        table.foreach(sourcesort, function(k,v)
                optionTable[v].order = j
                j=j+1
        end)

        table.sort(allMountsOrder)
        j=1
        table.foreach(allMountsOrder, function(k,v)
                allmounts[v].order = j
                j=j+1
        end)

        optionTable['All'] = {
                name = L['All'],
                order = 1,
                type = "group",
                handler = MountRandomMount,
                childGroups = "tab",
                args = allmounts
        }

        optionTable['Enabled'] = {
                name = L['Enabled'],
                desc = L['This panel is only updated when you reload the UI or at loggin.'],
                order = 0,
                type = "group",
                handler = _G['MountRandomMount'],
                childGroups = "tab",
                args = EnableMounts
        }

        return {
                name = L["Ground Mount"],
                handler = MountRandomMount,
                type = "group",
                args = optionTable
        }
end

--POPULATE FLYING MOUNTS OPTIONS
function MountRandomMount:FlyingFrame()
        local optionTable = {}
        local allmounts = {}
        local allMountsOrder = {}
        local EnableMounts = {}
        local sourcesort = {}
        local sources, mounts, k, v, j, i, sourceTxt

        for sources, mounts in pairs(MountRandomMount_MountDataList["flying"]) do
                local optionTableMount = {}
                i = 0
                table.foreach(mounts, function(k,v)
                        optionTableMount['mount'..v..k] = {
                                order = k,
                                name = v,
                                type = "toggle",
                                set = function(info,val)
                                        if val then
                                                print(v.." "..L['MRMFlyingAdded'])
                                                table.insert(MountRandomMount_SavedTable['flying'], k)
                                        else
                                                for iSaved, vSaved in pairs(MountRandomMount_SavedTable['flying']) do
                                                        if vSaved == k then
                                                                print(v.." "..L['MRMFlyingRemoved'])
                                                                table.remove(MountRandomMount_SavedTable['flying'], iSaved)
                                                                break
                                                        end
                                                end
                                        end
                                end,
                                get = function(info)
                                        for iSaved, vSaved in pairs(MountRandomMount_SavedTable['flying']) do
                                                if vSaved == k then
                                                        return true
                                                end
                                        end
                                        return false
                                end
                        }
                        table.insert(allMountsOrder, 'mount'..v..k)
                        i = 1
                        allmounts['mount'..v..k] = optionTableMount['mount'..v..k]

                        for iSaved, vSaved in pairs(_G['MountRandomMount_SavedTable']['flying']) do
                                if vSaved == k then
                                        EnableMounts['mount'..v..k] = optionTableMount['mount'..k]
                                end
                        end
                end)

                if i ~= 0 then
                        if sources ~= 0 then
                                sourceTxt = _G["BATTLE_PET_SOURCE_"..sources]
                        else
                                sourceTxt = 'API BUG'
                        end
                        table.insert(sourcesort, sourceTxt)
                        optionTable[sourceTxt] = {
                                name = sourceTxt,
                                type = "group",
                                handler = MountRandomMount,
                                childGroups = "tab",
                                args = optionTableMount
                        }
                end
        end

        table.sort(sourcesort, function(a, b)
                return string.stripAccents(a)<string.stripAccents(b)
        end)
        j=3
        table.foreach(sourcesort, function(k,v)
                optionTable[v].order = j
                j=j+1
        end)

        table.sort(allMountsOrder)
        j=1
        table.foreach(allMountsOrder, function(k,v)
                allmounts[v].order = j
                j=j+1
        end)

        optionTable['All'] = {
                name = L['All'],
                order = 1,
                type = "group",
                handler = MountRandomMount,
                childGroups = "tab",
                args = allmounts
        }

        optionTable['Enabled'] = {
                name = L['Enabled'],
                desc = L['This panel is only updated when you reload the UI or at loggin.'],
                order = 0,
                type = "group",
                handler = _G['MountRandomMount'],
                childGroups = "tab",
                args = EnableMounts
        }

        return {
                name = L["Flying Mount"],
                handler = MountRandomMount,
                type = "group",
                args = optionTable
        }
end

function MountRandomMount:ResetOptions()
        MountRandomMount_SavedTable['ground'] = {}
        MountRandomMount_SavedTable['flying'] = {}
end

function MountRandomMount:PlayerMounts()
        _G['playerMountArray'] = {}
        local mounts = C_MountJournal.GetMountIDs()

        _G['MountRandomMount_SeaTurtleHave'] = true
        if MountRandomMount_MountDataAquatic[420] ~= nil then--Hippocampe assujetti
                _G['MountRandomMount_SeaTurtleID'] = 420
        elseif MountRandomMount_MountDataAquatic[838] ~= nil then--Fathom Dweller
                _G['MountRandomMount_SeaTurtleID'] = 838
        elseif MountRandomMount_MountDataAquatic[800] ~= nil then--Brinedeep Bottom-Feeder
                _G['MountRandomMount_SeaTurtleID'] = 800
        elseif MountRandomMount_MountDataAquatic[312] ~= nil then--Tortue de mer
                _G['MountRandomMount_SeaTurtleID'] = 312
        elseif MountRandomMount_MountDataAquatic[125] ~= nil then--Tortue de monte
                _G['MountRandomMount_SeaTurtleID'] = 125
        else
                _G['MountRandomMount_SeaTurtleHave'] = false
        end

        if MountRandomMount_MountDataAquatic[373] ~= nil then--Hippocampe de Vashj’ir
                _G['MountRandomMount_SeaHorseID'] = 373
                _G['MountRandomMount_SeaHorseHave'] = true
        else
                _G['MountRandomMount_SeaHorseHave'] = false
        end
end

function MountRandomMount:PLAYER_LOGIN()
        MountRandomMount:MountDataListFill()
        if(MountRandomMount_SavedTable['ground'] == nil)then
                MountRandomMount_SavedTable['ground'] = {}
        end
        if(MountRandomMount_SavedTable['flying'] == nil)then
                MountRandomMount_SavedTable['flying'] = {}
        end

        MountRandomMount:PlayerMounts()

        AceConfig:RegisterOptionsTable("MountRandomMount", MRM_OptionsTable)
        AceConfig:RegisterOptionsTable("MountRandomMount_Ground", MountRandomMount:GroundFrame())
        AceConfig:RegisterOptionsTable("MountRandomMount_Flying", MountRandomMount:FlyingFrame())

        local SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MountRandomMount","MountRandomMount")
        SetDefaultOpttion.default = function() MountRandomMount:ResetOptions() end
        SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MountRandomMount_Ground",L["Ground Mount"],"MountRandomMount")
        SetDefaultOpttion.default = function() MountRandomMount:ResetOptions() end
        SetDefaultOpttion = AceConfigDialog:AddToBlizOptions("MountRandomMount_Flying",L["Flying Mount"],"MountRandomMount")
        SetDefaultOpttion.default = function() MountRandomMount:ResetOptions() end
end

function MountRandomMount:COMPANION_LEARNED()
        MountRandomMount:PlayerMounts()
end

function MountRandomMount:OnInitialize()
        MountRandomMount:RegisterEvent("PLAYER_LOGIN")
        MountRandomMount:RegisterEvent("COMPANION_LEARNED")
end

Compare with Previous | Blame