Fleshed out Sync Gui

This commit is contained in:
Cooldude2606
2018-04-08 16:22:18 +01:00
parent e28fedb70a
commit 4e773cdd18
3 changed files with 22 additions and 14 deletions

View File

@@ -34,10 +34,6 @@ Example: defines.input_action.drop_item -> 'drop_item'
http://lua-api.factorio.com/latest/defines.html#defines.input_action http://lua-api.factorio.com/latest/defines.html#defines.input_action
--]] --]]
Sync.add_to_gui(function(player,frame)
return 'You have been given the rank '..Ranking.get_rank(player).name..' from our Discord'
end)
-- see ExpCore/ranks.lua for examples - you add your own and edit pre-made ones here. -- see ExpCore/ranks.lua for examples - you add your own and edit pre-made ones here.
local groups = Ranking._groups(true) local groups = Ranking._groups(true)

View File

@@ -34,6 +34,7 @@ end
-- used to open any center gui -- used to open any center gui
function center.open(player,center) function center.open(player,center)
local player = Game.get_player(player) local player = Game.get_player(player)
Gui.center.clear(player)
Gui._get_data('center')[center].open{ Gui._get_data('center')[center].open{
element={name=center}, element={name=center},
player_index=player.index player_index=player.index
@@ -51,7 +52,7 @@ function center._center.open(event)
local player = Game.get_player(event) local player = Game.get_player(event)
local _center = Gui._get_data('center')[event.element.name] local _center = Gui._get_data('center')[event.element.name]
local center_flow = center.get_flow(player) local center_flow = center.get_flow(player)
if center_flow[_center.name] then center.clear(player) return end if center_flow[_center.name] then Gui.center.clear(player) return end
local center_frame = center_flow.add{ local center_frame = center_flow.add{
name=_center.name, name=_center.name,
type='frame', type='frame',

View File

@@ -157,6 +157,7 @@ function Sync.info(set)
if not global.exp_core then global.exp_core = {} end if not global.exp_core then global.exp_core = {} end
if not global.exp_core.sync then global.exp_core.sync = { if not global.exp_core.sync then global.exp_core.sync = {
server_name='Factorio Server', server_name='Factorio Server',
server_description='A factorio server for everyone',
reset_time='On Demand', reset_time='On Demand',
time='Day Mth 00 00:00:00 UTC Year', time='Day Mth 00 00:00:00 UTC Year',
time_set={0,tick_to_display_format(0)}, time_set={0,tick_to_display_format(0)},
@@ -246,6 +247,15 @@ function Sync.add_to_gui(element,...)
else table.insert(Sync_gui_functions,{'string',element}) end else table.insert(Sync_gui_functions,{'string',element}) end
end end
-- Examples for Sync.add_to_gui
Sync.add_to_gui('Welcome to the Explosive Gaming comunity! This is one of many servers which we host.')
Sync.add_to_gui(function(player,frame)
return 'This server will reset at: '..Sync.info().reset_time
end)
Sync.add_to_gui(function(player,frame)
return 'You have been given the rank '..Ranking.get_rank(player).name..' from our Discord'
end)
function Sync._load() function Sync._load()
Gui.center.add{ Gui.center.add{
name='server-info', name='server-info',
@@ -259,13 +269,14 @@ function Sync._load()
Gui.bar(_flow,200) Gui.bar(_flow,200)
_flow.add{ _flow.add{
type='label', type='label',
caption='Welcome To '..info.server_name,style='caption_label' caption='Welcome To '..info.server_name,
style='caption_label'
}.style.width = 185 }.style.width = 185
Gui.bar(_flow,200) Gui.bar(_flow,200)
if info.description then frame.add{ frame.add{
type='label', type='label',
caption=info.description,style='description_label' caption=info.server_description,style='description_label'
} end }
Gui.bar(frame,600) Gui.bar(frame,600)
local frame = frame.add{ local frame = frame.add{
type='frame', type='frame',
@@ -275,19 +286,19 @@ function Sync._load()
frame.style.width = 600 frame.style.width = 600
local text_flow = frame.add{type='flow',direction='vertical'} local text_flow = frame.add{type='flow',direction='vertical'}
local button_flow = frame.add{type='table',column_count=3} local button_flow = frame.add{type='table',column_count=3}
for _,element in pairs(Sync_gui_functions) do for _,element in pairs(table.deepcopy(Sync_gui_functions)) do
local _type = table.remove(element,1) local _type = table.remove(element,1)
if _type == 'function' then if _type == 'function' then
local success, err = pcall(table.remove(element,1),frame.player_index,frame,unpack(element)) local success, err = pcall(table.remove(element,1),frame.player_index,frame,unpack(element))
if not success then error(err) else if not success then error(err) else
if is_type(err,'table') then if is_type(err,'table') then
if element.draw then element:draw(button_flow) if element.draw then element:draw(button_flow)
else text_flow.add{type='label',caption=table.to_string(err)} end else text_flow.add{type='label',caption=err} end
else text_flow.add{type='label',caption=tostring(err)} end else text_flow.add{type='label',caption=tostring(err)} end
end end
elseif _type == 'gui' then element:draw(button_flow) elseif _type == 'gui' then element[1]:draw(button_flow)
elseif _type == 'string' then text_flow.add{type='label',caption=tostring(element)} elseif _type == 'string' then text_flow.add{type='label',caption=tostring(element[1])}
elseif _type == 'table' then text_flow.add{type='label',caption=table.to_string(element)} end elseif _type == 'table' then text_flow.add{type='label',caption=element[1]} end
end end
end} end}
end end