87 lines
1.5 KiB
Lua
87 lines
1.5 KiB
Lua
List = {
|
|
classname = "FNList",
|
|
}
|
|
|
|
function List:new( list_name )
|
|
local obj = {
|
|
name = list_name,
|
|
}
|
|
|
|
function obj:get_list()
|
|
local gl = Player.get_global()
|
|
if not gl["list_" .. self.name] then gl["list_" .. self.name] = {} end
|
|
return gl["list_" .. self.name]
|
|
end
|
|
|
|
function obj:add( elem )
|
|
local list = obj:get_list()
|
|
table.insert(list, elem)
|
|
end
|
|
|
|
function obj:clear()
|
|
Player.get_global()["list_" .. self.name] = {}
|
|
end
|
|
|
|
function obj:contains_elem( elem )
|
|
local list = obj:get_list()
|
|
|
|
if elem == nil then
|
|
return nil
|
|
end
|
|
|
|
if type(elem) ~= "table" then
|
|
for i,j in pairs(list) do
|
|
if j == elem then
|
|
return true
|
|
end
|
|
end
|
|
else
|
|
for i,j in pairs(list) do
|
|
if type(j) == "table" and #j == #elem then
|
|
local flag = true
|
|
|
|
for ind,val in pairs(j) do
|
|
if elem[ind] ~= val then
|
|
flag = false
|
|
end
|
|
end
|
|
|
|
if flag then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
function obj:remove()
|
|
local list = obj:get_list()
|
|
if #list > 0 then
|
|
table.remove(list, #list)
|
|
end
|
|
end
|
|
|
|
function obj:debug()
|
|
for i,j in pairs(self:get_list()) do
|
|
out(i,j)
|
|
end
|
|
end
|
|
|
|
function obj:get()
|
|
local list = obj:get_list()
|
|
if #list > 0 then
|
|
return list[#list]
|
|
end
|
|
end
|
|
|
|
function obj:is_empty()
|
|
return #obj:get_list() == 0
|
|
end
|
|
|
|
setmetatable(obj, self)
|
|
self.__index = self; return obj
|
|
end
|
|
|
|
return List |