61 lines
1.3 KiB
Lua
61 lines
1.3 KiB
Lua
Tabs = {
|
|
classname = "FNTabs",
|
|
}
|
|
|
|
local GuiTabs = require "utils/tabs/gui_tabs"
|
|
|
|
function Tabs:new(tab_name, gui_name, tabs_list, en_style, dis_style, func)
|
|
|
|
local obj = {
|
|
tab_name = tab_name,
|
|
tabs = tabs_list,
|
|
en_style = en_style,
|
|
dis_style = dis_style,
|
|
func = func
|
|
}
|
|
|
|
function init()
|
|
for val,tab in pairs(tabs_list) do
|
|
Events.add_custom_event(gui_name, "sprite-button", tab_name .. "-" .. tab, obj.tab_event)
|
|
end
|
|
end
|
|
|
|
function obj:get_tab_global()
|
|
local global = Player.get_global()
|
|
if not global.tabs then global.tabs = {} end
|
|
return global.tabs
|
|
end
|
|
|
|
function obj:get_cur_tab()
|
|
return self:get_tab_global()[self.tab_name] or self.tabs[1]
|
|
end
|
|
|
|
function obj:set_cur_tab(val)
|
|
local global = self:get_tab_global()
|
|
global[self.tab_name] = val
|
|
self:draw_tabs()
|
|
end
|
|
|
|
function obj:get_tabs_list()
|
|
return self.tabs
|
|
end
|
|
|
|
function obj:draw_tabs()
|
|
GuiTabs.draw_tabs(self.tab_name, self)
|
|
end
|
|
|
|
function obj.tab_event(event, name)
|
|
local _,pos = string.find(name, string.gsub(obj.tab_name, "%p", "%%%0"))
|
|
local tab_name = string.sub(name, pos + 2)
|
|
|
|
obj:set_cur_tab(tab_name)
|
|
|
|
if obj.func then
|
|
obj.func(event, tab_name)
|
|
end
|
|
end
|
|
|
|
init()
|
|
setmetatable(obj, self)
|
|
self.__index = self; return obj
|
|
end |