Files
factorio-scenario-ExpCluster/Addons/Guis/tasklist.lua
Cooldude2606 bd534210f9 More Edits
2018-01-01 13:23:20 +00:00

152 lines
4.6 KiB
Lua

--[[
Explosive Gaming
This file can be used with permission but this and the credit below must remain in the file.
Contact a member of management on our discord to seek permission to use our code.
Any changes that you may make to the code are yours but that does not make the script yours.
Discord: https://discord.gg/r6dC2uK
]]
--Please Only Edit Below This Line-----------------------------------------------------------
local function _global(reset)
global.addons = not reset and global.addons or {}
global.addons.tasklist = not reset and global.addons.tasklist or {tasks={},_edit={},_base={_edit=false,_tasks={},_editing={}}}
return global.addons.tasklist
end
local edit = Gui.inputs.add{
name='tasklist-edit',
type='button',
caption='utility/rename_icon_normal'
}:on_event('click',function(event)
local text_flow = event.element.parent.parent.text_flow
local data = _global()._edit[frame.player_index]
if text_flow.text.type == 'label' then
data._editing[text_flow.parent.name]=true
local text = text_flow.text.caption
text_flow.clear()
local _text = text_flow.add{
name='text',
type='textfield',
text=text
}
_text.style.width = 100
event.element.sprite = 'utility/enter'
elseif text_flow.text.type == 'textfield' then
local text = text_flow.text.text
data._editing[text_flow.parent.name]=false
data._tasks[text_flow.parent.name]=text
text_flow.parent.parent.clear()
_draw(text_flow.parent.parent)
end
end)
local function _edit(frame)
local element = edit:draw()
local text_flow = element.parent.parent.text_flow
local data = _global()._edit[frame.player_index]
if data._editing[text_flow.parent.name] then
local text = text_flow.text.caption
text_flow.clear()
local _text = text_flow.add{
name='text',
type='textfield',
text=text
}
_text.style.width = 100
element.sprite = 'utility/enter'
end
end
local remove = Gui.inputs.add{
name='tasklist-remove',
type='button',
caption='utility/remove'
}:on_event('click',function(event)
local frame = event.element.parent.parent.parent
local data = _global()._edit[event.player_index]
table.remove(data._tasks,frame.name)
table.remove(data._editing,frame.name)
frame.clear()
_draw(frame)
end)
local add = Gui.inputs.add{
name='tasklist-add',
type='button',
caption='add'
}:on_event('click',function(event)
local frame = event.element.parent.parent.parent
local data = _global()._edit[event.player_index]
table.insert(data._tasks,frame.name,'New Value')
table.insert(data._editing,frame.name,true)
frame.clear()
_draw(frame)
end)
local function _draw(frame)
frame.caption = {'tasklist.name'}
local data = _global()
local player = Game.get_player(frame.player_index)
local rank = Ranking.get_rank(player)
if rank:allowed('edit-tasklist') then
if not data._edit[player.index] then data._edit[player.index] = data._base end
end
for i,task in pairs(_tasks(player)) do
local flow = frame.add{
name=i
type='flow',
direction='horizontal'
}
local text_flow = flow.add{
name='text_flow',
type='flow',
direction='horizontal'
}
text_flow.add{
name='text',
type='label',
caption=task
}
local button_flow = flow.add{
type='flow',
direction='horizontal'
}
if rank:allowed('edit-tasklist') then
_edit(button_flow)
remove:draw(button_flow)
add:draw(button_flow)
end
end
end
local function _tasks(player)
local player = Game.get_player(player)
local data = _global()._edit[player.index]
if not data then return _global().tasks end
local _edit = false
for _,v in pairs(data._editing) do
if v == true then
_edit = true
break
end
end
if data._edit and not _edit then
_global().tasks = table.deepcopy(data._tasks)
data._edit = false
Gui.left.update('tasklist')
elseif not data._edit and _edit then
data.tasks = table.deepcopy(_global()._tasks)
data._edit = true
elseif _edit then return data._tasks
else return _global().tasks
end
end
Gui.left.add{
name='tasklist',
caption='utility/not_enough_repair_packs_icon',
tooltip={'tasklist.tooltip'},
draw=_draw,
open_on_join=true
}