You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
325 lines
11 KiB
325 lines
11 KiB
|
5 years ago
|
-------------------------------------------------------------------------------
|
||
|
|
---------------------------------- NAMESPACE ----------------------------------
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
local _, ns = ...
|
||
|
|
local L = ns.locale
|
||
|
|
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
---------------------------------- DEFAULTS -----------------------------------
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
ns.optionDefaults = {
|
||
|
|
profile = {
|
||
|
|
-- visibility
|
||
|
|
hide_done_rares = false,
|
||
|
|
hide_minimap = false,
|
||
|
|
show_completed_nodes = false,
|
||
|
|
|
||
|
|
-- tooltip
|
||
|
|
show_loot = true,
|
||
|
|
show_notes = true,
|
||
|
|
|
||
|
|
-- development
|
||
|
|
development = false,
|
||
|
|
show_debug_map = false,
|
||
|
|
show_debug_quest = false,
|
||
|
|
force_nodes = false,
|
||
|
|
|
||
|
|
-- poi/path scale
|
||
|
|
poi_scale = 1,
|
||
|
|
|
||
|
|
-- poi color
|
||
|
|
poi_color_R = 0,
|
||
|
|
poi_color_G = 0.5,
|
||
|
|
poi_color_B = 1,
|
||
|
|
poi_color_A = 1,
|
||
|
|
|
||
|
|
-- path color
|
||
|
|
path_color_R = 0,
|
||
|
|
path_color_G = 0.5,
|
||
|
|
path_color_B = 1,
|
||
|
|
path_color_A = 1
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
----------------------------------- HELPERS -----------------------------------
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
function ns:GetOpt(n) return ns.addon.db.profile[n] end
|
||
|
|
function ns:SetOpt(n, v) ns.addon.db.profile[n] = v; ns.addon:Refresh() end
|
||
|
|
|
||
|
|
function ns:GetColorOpt(n)
|
||
|
|
local db = ns.addon.db.profile
|
||
|
|
return db[n..'_R'], db[n..'_G'], db[n..'_B'], db[n..'_A']
|
||
|
|
end
|
||
|
|
|
||
|
|
function ns:SetColorOpt(n, r, g, b, a)
|
||
|
|
local db = ns.addon.db.profile
|
||
|
|
db[n..'_R'], db[n..'_G'], db[n..'_B'], db[n..'_A'] = r, g, b, a
|
||
|
|
ns.addon:Refresh()
|
||
|
|
end
|
||
|
|
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
--------------------------------- OPTIONS UI ----------------------------------
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
ns.options = {
|
||
|
|
type = "group",
|
||
|
|
name = L["options_title"],
|
||
|
|
childGroups = "tab",
|
||
|
|
get = function(info) return ns:GetOpt(info.arg) end,
|
||
|
|
set = function(info, v) ns:SetOpt(info.arg, v) end,
|
||
|
|
args = {
|
||
|
|
GeneralTab = {
|
||
|
|
type = "group",
|
||
|
|
name = L["options_general_settings"],
|
||
|
|
desc = L["options_general_description"],
|
||
|
|
order = 0,
|
||
|
|
args = {
|
||
|
|
VisibilityHeader = {
|
||
|
|
type = "header",
|
||
|
|
name = L["options_visibility_settings"],
|
||
|
|
order = 10,
|
||
|
|
},
|
||
|
|
show_completed_nodes = {
|
||
|
|
type = "toggle",
|
||
|
|
arg = "show_completed_nodes",
|
||
|
|
name = L["options_show_completed_nodes"],
|
||
|
|
desc = L["options_show_completed_nodes_desc"],
|
||
|
|
order = 11,
|
||
|
|
width = "full",
|
||
|
|
},
|
||
|
|
hide_done_rare = {
|
||
|
|
type = "toggle",
|
||
|
|
arg = "hide_done_rares",
|
||
|
|
name = L["options_toggle_hide_done_rare"],
|
||
|
|
desc = L["options_toggle_hide_done_rare_desc"],
|
||
|
|
order = 12,
|
||
|
|
width = "full",
|
||
|
|
},
|
||
|
|
hide_minimap = {
|
||
|
|
type = "toggle",
|
||
|
|
arg = "hide_minimap",
|
||
|
|
name = L["options_toggle_hide_minimap"],
|
||
|
|
desc = L["options_toggle_hide_minimap_desc"],
|
||
|
|
order = 13,
|
||
|
|
width = "full",
|
||
|
|
},
|
||
|
|
restore_all_nodes = {
|
||
|
|
type = "execute",
|
||
|
|
name = L["options_restore_hidden_nodes"],
|
||
|
|
desc = L["options_restore_hidden_nodes_desc"],
|
||
|
|
order = 14,
|
||
|
|
width = "full",
|
||
|
|
func = function ()
|
||
|
|
wipe(ns.addon.db.char)
|
||
|
|
ns.addon:Refresh()
|
||
|
|
end
|
||
|
|
},
|
||
|
|
FocusHeader = {
|
||
|
|
type = "header",
|
||
|
|
name = L["options_focus_settings"],
|
||
|
|
order = 20,
|
||
|
|
},
|
||
|
|
POI_scale = {
|
||
|
|
type = "range",
|
||
|
|
name = L["options_scale"],
|
||
|
|
desc = L["options_scale_desc"],
|
||
|
|
min = 1, max = 3, step = 0.01,
|
||
|
|
arg = "poi_scale",
|
||
|
|
width = "full",
|
||
|
|
order = 21,
|
||
|
|
},
|
||
|
|
POI_color = {
|
||
|
|
type = "color",
|
||
|
|
name = L["options_poi_color"],
|
||
|
|
desc = L["options_poi_color_desc"],
|
||
|
|
hasAlpha = true,
|
||
|
|
set = function(_, ...) ns:SetColorOpt('poi_color', ...) end,
|
||
|
|
get = function() return ns:GetColorOpt('poi_color') end,
|
||
|
|
order = 22,
|
||
|
|
},
|
||
|
|
PATH_color = {
|
||
|
|
type = "color",
|
||
|
|
name = L["options_path_color"],
|
||
|
|
desc = L["options_path_color_desc"],
|
||
|
|
hasAlpha = true,
|
||
|
|
set = function(_, ...) ns:SetColorOpt('path_color', ...) end,
|
||
|
|
get = function() return ns:GetColorOpt('path_color') end,
|
||
|
|
order = 23,
|
||
|
|
},
|
||
|
|
restore_poi_colors = {
|
||
|
|
type = "execute",
|
||
|
|
name = L["options_reset_poi_colors"],
|
||
|
|
desc = L["options_reset_poi_colors_desc"],
|
||
|
|
order = 24,
|
||
|
|
width = "full",
|
||
|
|
func = function ()
|
||
|
|
local df = ns.optionDefaults.profile
|
||
|
|
ns:SetColorOpt('poi_color', df.poi_color_R, df.poi_color_G, df.poi_color_B, df.poi_color_A)
|
||
|
|
ns:SetColorOpt('path_color', df.path_color_R, df.path_color_G, df.path_color_B, df.path_color_A)
|
||
|
|
end
|
||
|
|
},
|
||
|
|
TooltipsHeader = {
|
||
|
|
type = "header",
|
||
|
|
name = L["options_tooltip_settings"],
|
||
|
|
order = 30,
|
||
|
|
},
|
||
|
|
show_loot = {
|
||
|
|
type = "toggle",
|
||
|
|
arg = "show_loot",
|
||
|
|
name = L["options_toggle_show_loot"],
|
||
|
|
desc = L["options_toggle_show_loot_desc"],
|
||
|
|
order = 31,
|
||
|
|
},
|
||
|
|
show_notes = {
|
||
|
|
type = "toggle",
|
||
|
|
arg = "show_notes",
|
||
|
|
name = L["options_toggle_show_notes"],
|
||
|
|
desc = L["options_toggle_show_notes_desc"],
|
||
|
|
order = 32,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
GlobalTab = {
|
||
|
|
type = "group",
|
||
|
|
name = L["options_global"],
|
||
|
|
desc = L["options_global_description"],
|
||
|
|
order = 1,
|
||
|
|
args = {
|
||
|
|
}
|
||
|
|
},
|
||
|
|
ZonesTab = {
|
||
|
|
type = "group",
|
||
|
|
name = L["options_zones"],
|
||
|
|
desc = L["options_zones_description"],
|
||
|
|
childGroups = "select",
|
||
|
|
order = 2,
|
||
|
|
args = {
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
-- Display these groups in the global settings tab. They are the most common
|
||
|
|
-- group options that players might want to customize.
|
||
|
|
|
||
|
|
function ns.CreateGlobalGroupOptions()
|
||
|
|
for i, group in ipairs({
|
||
|
|
ns.groups.RARE,
|
||
|
|
ns.groups.TREASURE,
|
||
|
|
ns.groups.PETBATTLE,
|
||
|
|
ns.groups.OTHER
|
||
|
|
}) do
|
||
|
|
ns.options.args.GlobalTab.args['group_icon_'..group.name] = {
|
||
|
|
type = "header",
|
||
|
|
name = L["options_icons_"..group.name],
|
||
|
|
order = i * 10,
|
||
|
|
}
|
||
|
|
|
||
|
|
ns.options.args.GlobalTab.args['icon_scale_'..group.name] = {
|
||
|
|
type = "range",
|
||
|
|
name = L["options_scale"],
|
||
|
|
desc = L["options_scale_desc"],
|
||
|
|
min = 0.3, max = 3, step = 0.01,
|
||
|
|
arg = group.scaleArg,
|
||
|
|
width = 1.13,
|
||
|
|
order = i * 10 + 1,
|
||
|
|
}
|
||
|
|
|
||
|
|
ns.options.args.GlobalTab.args['icon_alpha_'..group.name] = {
|
||
|
|
type = "range",
|
||
|
|
name = L["options_opacity"],
|
||
|
|
desc = L["options_opacity_desc"],
|
||
|
|
min = 0, max = 1, step = 0.01,
|
||
|
|
arg = group.alphaArg,
|
||
|
|
width = 1.13,
|
||
|
|
order = i * 10 + 2,
|
||
|
|
}
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
------------------------------- OPTIONS HELPERS -------------------------------
|
||
|
|
-------------------------------------------------------------------------------
|
||
|
|
|
||
|
|
local _INITIALIZED = {}
|
||
|
|
|
||
|
|
function ns.CreateGroupOptions (map, group)
|
||
|
|
-- Check if we've already initialized this group
|
||
|
|
if _INITIALIZED[group.name..map.id] then return end
|
||
|
|
_INITIALIZED[group.name..map.id] = true
|
||
|
|
|
||
|
|
-- Create map options group under zones tab
|
||
|
|
local options = ns.options.args.ZonesTab.args['Zone_'..map.id]
|
||
|
|
if not options then
|
||
|
|
options = {
|
||
|
|
type = "group",
|
||
|
|
name = C_Map.GetMapInfo(map.id).name,
|
||
|
|
args = {
|
||
|
|
IconsGroup = {
|
||
|
|
type = "group",
|
||
|
|
name = L["options_icon_settings"],
|
||
|
|
inline = true,
|
||
|
|
order = 1,
|
||
|
|
args = {}
|
||
|
|
},
|
||
|
|
VisibilityGroup = {
|
||
|
|
type = "group",
|
||
|
|
name = L["options_visibility_settings"],
|
||
|
|
inline = true,
|
||
|
|
order = 2,
|
||
|
|
args = {}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
ns.options.args.ZonesTab.args['Zone_'..map.id] = options
|
||
|
|
end
|
||
|
|
|
||
|
|
map._icons_order = map._icons_order or 0
|
||
|
|
map._visibility_order = map._visibility_order or 0
|
||
|
|
|
||
|
|
options.args.IconsGroup.args["icon_toggle_"..group.name] = {
|
||
|
|
type = "toggle",
|
||
|
|
arg = group.displayArg,
|
||
|
|
name = L["options_icons_"..group.name],
|
||
|
|
desc = L["options_icons_"..group.name.."_desc"],
|
||
|
|
disabled = function () return not group:IsEnabled() end,
|
||
|
|
width = 0.9,
|
||
|
|
order = map._icons_order
|
||
|
|
}
|
||
|
|
|
||
|
|
options.args.VisibilityGroup.args["header_"..group.name] = {
|
||
|
|
type = "header",
|
||
|
|
name = L["options_icons_"..group.name],
|
||
|
|
order = map._visibility_order
|
||
|
|
}
|
||
|
|
|
||
|
|
options.args.VisibilityGroup.args['icon_scale_'..group.name] = {
|
||
|
|
type = "range",
|
||
|
|
name = L["options_scale"],
|
||
|
|
desc = L["options_scale_desc"],
|
||
|
|
disabled = function () return not (group:IsEnabled() and group:GetDisplay()) end,
|
||
|
|
min = 0.3, max = 3, step = 0.01,
|
||
|
|
arg = group.scaleArg,
|
||
|
|
width = 0.95,
|
||
|
|
order = map._visibility_order + 1
|
||
|
|
}
|
||
|
|
|
||
|
|
options.args.VisibilityGroup.args['icon_alpha_'..group.name] = {
|
||
|
|
type = "range",
|
||
|
|
name = L["options_opacity"],
|
||
|
|
desc = L["options_opacity_desc"],
|
||
|
|
disabled = function () return not (group:IsEnabled() and group:GetDisplay()) end,
|
||
|
|
min = 0, max = 1, step = 0.01,
|
||
|
|
arg = group.alphaArg,
|
||
|
|
width = 0.95,
|
||
|
|
order = map._visibility_order + 2
|
||
|
|
}
|
||
|
|
|
||
|
|
map._icons_order = map._icons_order + 1
|
||
|
|
map._visibility_order = map._visibility_order + 3
|
||
|
|
end
|