mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-30 20:41:41 +09:00
Fixed Admin gui not closing; Gui draw more consistent
This commit is contained in:
@@ -16,7 +16,7 @@ local mod_gui = require('mod-gui')
|
|||||||
local module_verbose = false
|
local module_verbose = false
|
||||||
local AdminGui = {
|
local AdminGui = {
|
||||||
on_init=function()
|
on_init=function()
|
||||||
if loaded_modules['ExpGamingPlayer.playerInfo'] then playerInfo = require('ExpGamingPlayer')
|
if loaded_modules['ExpGamingPlayer.playerInfo'] then playerInfo = require('ExpGamingPlayer.playerInfo')
|
||||||
else playerInfo = function(player,frame)
|
else playerInfo = function(player,frame)
|
||||||
frame.add{
|
frame.add{
|
||||||
type='label',
|
type='label',
|
||||||
@@ -30,7 +30,7 @@ local AdminGui = {
|
|||||||
|
|
||||||
function Admin.open(player,pre_select_player,pre_select_action)
|
function Admin.open(player,pre_select_player,pre_select_action)
|
||||||
Gui.center.clear(player)
|
Gui.center.clear(player)
|
||||||
Admin.center.open(player,pre_select_player,pre_select_action)
|
Admin.center(player,pre_select_player,pre_select_action)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Function Define
|
-- Function Define
|
||||||
@@ -140,24 +140,7 @@ Admin.center = Gui.center{
|
|||||||
name='admin-commands',
|
name='admin-commands',
|
||||||
caption='utility/danger_icon',
|
caption='utility/danger_icon',
|
||||||
tooltip={'ExpGamingAdmin.tooltip'},
|
tooltip={'ExpGamingAdmin.tooltip'},
|
||||||
open=function(event,pre_select_player,pre_select_action)
|
draw=function(self,frame,pre_select_player,pre_select_action)
|
||||||
local _player = Game.get_player(pre_select_player)
|
|
||||||
local player = Game.get_player(event)
|
|
||||||
local _center = Gui.data.center['admin-commands']
|
|
||||||
local center_flow = Gui.center.get_flow(player)
|
|
||||||
if center_flow[_center.name] then Gui.center.clear(player) return end
|
|
||||||
local center_frame = center_flow.add{
|
|
||||||
name=_center.name,
|
|
||||||
type='frame',
|
|
||||||
direction='vertical',
|
|
||||||
style=mod_gui.frame_style
|
|
||||||
}
|
|
||||||
-- only edit i made was passing diffrent arguments to the draw function, try to avoid this
|
|
||||||
local success, err = pcall(_center.draw,center_frame,_player,pre_select_action)
|
|
||||||
if not success then error(err) end
|
|
||||||
player.opened=center_frame
|
|
||||||
end,
|
|
||||||
draw=function(frame,pre_select_player,pre_select_action)
|
|
||||||
frame.caption={'ExpGamingAdmin.name'}
|
frame.caption={'ExpGamingAdmin.name'}
|
||||||
local frame = frame.add{
|
local frame = frame.add{
|
||||||
type='flow',
|
type='flow',
|
||||||
|
|||||||
@@ -21,11 +21,11 @@ function center.add(obj)
|
|||||||
if not is_type(obj,'table') then return end
|
if not is_type(obj,'table') then return end
|
||||||
if not is_type(obj.name,'string') then return end
|
if not is_type(obj.name,'string') then return end
|
||||||
verbose('Created Center Gui: '..obj.name)
|
verbose('Created Center Gui: '..obj.name)
|
||||||
setmetatable(obj,{__index=center._prototype,__call=function(self,player) return center.open(player,self.name) end})
|
setmetatable(obj,{__index=center._prototype,__call=function(self,player,...) return center.open(player,self.name,...) end})
|
||||||
obj.tabs = {}
|
obj.tabs = {}
|
||||||
obj._tabs = {}
|
obj._tabs = {}
|
||||||
Gui.data('center',obj.name,obj)
|
Gui.data('center',obj.name,obj)
|
||||||
if Gui.toolbar then Gui.toolbar(obj.name,obj.caption,obj.tooltip,obj.open) end
|
if Gui.toolbar then Gui.toolbar(obj.name,obj.caption,obj.tooltip,function(event) return obj:open(event.player_index) end) end
|
||||||
return obj
|
return obj
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -39,23 +39,31 @@ function center.get_flow(player)
|
|||||||
return player.gui.center.exp_center or player.gui.center.add{name='exp_center',type='flow'}
|
return player.gui.center.exp_center or player.gui.center.add{name='exp_center',type='flow'}
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Used to open a center frame for a player
|
--- Used to open a center frame for a player, extra params are sent to open event
|
||||||
-- @usage Gui.center.open(player,'server-info') -- return true
|
-- @usage Gui.center.open(player,'server-info') -- return true
|
||||||
-- @param player a player indifier to get the flow for
|
-- @param player a player indifier to get the flow for
|
||||||
-- @tparam string center the name of the center frame to open
|
-- @tparam string center the name of the center frame to open
|
||||||
-- @treturn boelon based on if it successed or not
|
-- @treturn boelon based on if it successed or not
|
||||||
function center.open(player,center)
|
function center.open(player,center,...)
|
||||||
local player = Game.get_player(player)
|
local player = Game.get_player(player)
|
||||||
if not player then error('Invalid player',2) return false end
|
if not player then error('Invalid player',2) return false end
|
||||||
Gui.center.clear(player)
|
Gui.center.clear(player)
|
||||||
if not Gui.data.center[center] then return false end
|
if not Gui.data.center[center] then return false end
|
||||||
Gui.data.center[center].open{
|
local self = Gui.data.center[center]
|
||||||
element={name=center},
|
-- this function is the draw function passed to the open event
|
||||||
player_index=player.index
|
self:open(player,function(...) Gui.center._draw(self,...) end,...)
|
||||||
}
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- used as a pice of middle ware for the open event
|
||||||
|
function center._draw(self,frame,...)
|
||||||
|
game.players[frame.player_index].opened=frame
|
||||||
|
if is_type(self.draw,'function') then
|
||||||
|
local success, err = pcall(self.draw,self,frame,...)
|
||||||
|
if not success then error(err) end
|
||||||
|
else error('No Callback on center frame '..self.name) end
|
||||||
|
end
|
||||||
|
|
||||||
--- Used to open a center frame for a player
|
--- Used to open a center frame for a player
|
||||||
-- @usage Gui.center.open_tab(player,'readme','rules') -- return true
|
-- @usage Gui.center.open_tab(player,'readme','rules') -- return true
|
||||||
-- @param player a player indifier to get the flow for
|
-- @param player a player indifier to get the flow for
|
||||||
@@ -82,27 +90,24 @@ function center.clear(player)
|
|||||||
center.get_flow(player).clear()
|
center.get_flow(player).clear()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- used on the button press when the toolbar button is press, can be overriden
|
-- opens this gui for this player, draw is the draw function when event is called from center.open
|
||||||
-- not recomented for direct use see Gui.center.open
|
-- this is the default function it can be overriden when the gui is defined, simply call draw on the frame you create
|
||||||
function center._prototype.open(event)
|
-- extra values passed to draw will also be passed to the draw event
|
||||||
local player = Game.get_player(event)
|
-- extra values from center.draw and passed to the open event
|
||||||
local _center = Gui.data.center[event.element.name]
|
function center._prototype:open(player,draw,...)
|
||||||
|
local player = Game.get_player(player)
|
||||||
|
local draw = draw or function(...) center._draw(self,...) end
|
||||||
local center_flow = center.get_flow(player)
|
local center_flow = center.get_flow(player)
|
||||||
if center_flow[_center.name] then Gui.center.clear(player) return end
|
if center_flow[self.name] then Gui.center.clear(player) return end
|
||||||
local center_frame = center_flow.add{
|
local center_frame = center_flow.add{
|
||||||
name=_center.name,
|
name=self.name,
|
||||||
type='frame',
|
type='frame',
|
||||||
caption=_center.caption,
|
caption=self.caption,
|
||||||
direction='vertical',
|
direction='vertical',
|
||||||
style=mod_gui.frame_style
|
style=mod_gui.frame_style
|
||||||
}
|
}
|
||||||
if is_type(center_frame.caption,'string') and player.gui.is_valid_sprite_path(center_frame.caption) then center_frame.caption = '' end
|
if is_type(center_frame.caption,'string') and player.gui.is_valid_sprite_path(center_frame.caption) then center_frame.caption = '' end
|
||||||
if is_type(_center.draw,'function') then
|
draw(center_frame,...)
|
||||||
local success, err = pcall(_center.draw,_center,center_frame)
|
|
||||||
if not success then error(err) end
|
|
||||||
else error('No Callback on center frame '.._center.name)
|
|
||||||
end
|
|
||||||
player.opened=center_frame
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- this is the default draw function if one is not provided, can be overriden
|
-- this is the default draw function if one is not provided, can be overriden
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ function left._prototype:first_open(player)
|
|||||||
frame.style.visible = false
|
frame.style.visible = false
|
||||||
if is_type(self.open_on_join,'boolean') then frame.style.visible = self.open_on_join left_flow['gui-left-hide'].style.visible = true end
|
if is_type(self.open_on_join,'boolean') then frame.style.visible = self.open_on_join left_flow['gui-left-hide'].style.visible = true end
|
||||||
end
|
end
|
||||||
if is_type(self.draw,'function') then self.draw(frame) else frame.style.visible = false error('No Callback On '..self.name) end
|
if is_type(self.draw,'function') then self:draw(frame) else frame.style.visible = false error('No Callback On '..self.name) end
|
||||||
return frame
|
return frame
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ function popup.open(style,data,players)
|
|||||||
}
|
}
|
||||||
_popup.close(_frame)
|
_popup.close(_frame)
|
||||||
if is_type(_popup.draw,'function') then
|
if is_type(_popup.draw,'function') then
|
||||||
local success, err = pcall(_popup.draw,frame,data)
|
local success, err = pcall(_popup.draw,_popup,frame,data)
|
||||||
if not success then error(err) end
|
if not success then error(err) end
|
||||||
else error('No Draw On Popup '.._popup.name) end
|
else error('No Draw On Popup '.._popup.name) end
|
||||||
end
|
end
|
||||||
@@ -94,7 +94,7 @@ function popup.open(style,data,players)
|
|||||||
}
|
}
|
||||||
self.data.popup.close(_frame)
|
self.data.popup.close(_frame)
|
||||||
if is_type(self.data.popup.draw,'function') then
|
if is_type(self.data.popup.draw,'function') then
|
||||||
local success, err = pcall(self.data.popup.draw,frame,self.data.data)
|
local success, err = pcall(self.data.popup.draw,self.data.popup,frame,self.data.data)
|
||||||
if not success then error(err) end
|
if not success then error(err) end
|
||||||
else error('No Draw On Popup '..self.data.popup.name) end
|
else error('No Draw On Popup '..self.data.popup.name) end
|
||||||
end):open()
|
end):open()
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ Gui.left{
|
|||||||
name='test-left',
|
name='test-left',
|
||||||
caption='Gui Left',
|
caption='Gui Left',
|
||||||
tooltip='just testing',
|
tooltip='just testing',
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
for _,player in pairs(game.connected_players) do
|
for _,player in pairs(game.connected_players) do
|
||||||
frame.add{type='label',caption=player.name}
|
frame.add{type='label',caption=player.name}
|
||||||
end
|
end
|
||||||
@@ -166,14 +166,14 @@ end)
|
|||||||
Gui.popup{
|
Gui.popup{
|
||||||
name='test-popup',
|
name='test-popup',
|
||||||
caption='Gui Popup',
|
caption='Gui Popup',
|
||||||
draw=function(frame,data)
|
draw=function(self,frame,data)
|
||||||
frame.add{type='label',caption='Opened by: '..data.player}
|
frame.add{type='label',caption='Opened by: '..data.player}
|
||||||
frame.add{type='label',caption='Message: '..data.message}
|
frame.add{type='label',caption='Message: '..data.message}
|
||||||
end
|
end
|
||||||
}:add_left{
|
}:add_left{
|
||||||
caption='Gui Left w/ Popup',
|
caption='Gui Left w/ Popup',
|
||||||
tooltip='Send a message',
|
tooltip='Send a message',
|
||||||
draw=function(frame)
|
function(self,frame)
|
||||||
text_popup:draw(frame)
|
text_popup:draw(frame)
|
||||||
send_popup:draw(frame)
|
send_popup:draw(frame)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ ThisModule.Gui = Gui.left{
|
|||||||
name='rockets',
|
name='rockets',
|
||||||
caption='item/rocket-silo',
|
caption='item/rocket-silo',
|
||||||
tooltip={'ExpGamingInfo-Rockets.tooltip'},
|
tooltip={'ExpGamingInfo-Rockets.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
frame.caption = {'ExpGamingInfo-Rockets.name'}
|
frame.caption = {'ExpGamingInfo-Rockets.name'}
|
||||||
local player = Game.get_player(frame.player_index)
|
local player = Game.get_player(frame.player_index)
|
||||||
local satellites = player.force.get_item_launched('satellite')
|
local satellites = player.force.get_item_launched('satellite')
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ ThisModule.Gui = Gui.left{
|
|||||||
name='science',
|
name='science',
|
||||||
caption='item/lab',
|
caption='item/lab',
|
||||||
tooltip={'ExpGamingInfo-Science.tooltip'},
|
tooltip={'ExpGamingInfo-Science.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
local player = Game.get_player(frame.player_index)
|
local player = Game.get_player(frame.player_index)
|
||||||
if not global[player.force.name] then
|
if not global[player.force.name] then
|
||||||
verbose('Added Science Global for: '..player.force.name)
|
verbose('Added Science Global for: '..player.force.name)
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ ThisModule.Gui = Gui.left{
|
|||||||
name='tasklist',
|
name='tasklist',
|
||||||
caption='utility/not_enough_repair_packs_icon',
|
caption='utility/not_enough_repair_packs_icon',
|
||||||
tooltip={'ExpGamingInfo-Tasklist.tooltip'},
|
tooltip={'ExpGamingInfo-Tasklist.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
frame.caption = ''
|
frame.caption = ''
|
||||||
local title = frame.add{
|
local title = frame.add{
|
||||||
type='flow',
|
type='flow',
|
||||||
|
|||||||
@@ -54,5 +54,5 @@ return setmetatable({
|
|||||||
if loaded_modules['ExpGamingCore.Group'] then Group = require('ExpGamingCore.Group') end
|
if loaded_modules['ExpGamingCore.Group'] then Group = require('ExpGamingCore.Group') end
|
||||||
end
|
end
|
||||||
},{
|
},{
|
||||||
__call=function(self,...) self.get_player_info(...) end
|
__call=function(self,...) return self.get_player_info(...) end
|
||||||
})
|
})
|
||||||
@@ -63,7 +63,7 @@ ThisModule.Gui = Gui.left{
|
|||||||
name='player-list',
|
name='player-list',
|
||||||
caption='entity/player',
|
caption='entity/player',
|
||||||
tooltip={'ExpGamingPlayer-playerList.tooltip'},
|
tooltip={'ExpGamingPlayer-playerList.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
frame.caption = ''
|
frame.caption = ''
|
||||||
local player_list = frame.add{
|
local player_list = frame.add{
|
||||||
name='scroll',
|
name='scroll',
|
||||||
@@ -125,6 +125,8 @@ script.on_event(defines.events.on_gui_click,function(event)
|
|||||||
-- must be a right click
|
-- must be a right click
|
||||||
if event.button == defines.mouse_button_type.right then else return end
|
if event.button == defines.mouse_button_type.right then else return end
|
||||||
local player_list = event.element.parent.parent.parent
|
local player_list = event.element.parent.parent.parent
|
||||||
|
-- must be a valid player which is clicked
|
||||||
|
if not Game.get_player(event.element.name) then return end
|
||||||
-- hides the player list to show the info
|
-- hides the player list to show the info
|
||||||
player_list.scroll.style.visible = false
|
player_list.scroll.style.visible = false
|
||||||
local flow = player_list.add{type='flow',direction='vertical'}
|
local flow = player_list.add{type='flow',direction='vertical'}
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ end)
|
|||||||
ThisModule.Gui = Gui.popup{
|
ThisModule.Gui = Gui.popup{
|
||||||
name='polls',
|
name='polls',
|
||||||
caption={'ExpGamingPlayer-polls.name'},
|
caption={'ExpGamingPlayer-polls.name'},
|
||||||
draw=function(frame,data)
|
draw=function(self,frame,data)
|
||||||
frame.style.right_padding = 5
|
frame.style.right_padding = 5
|
||||||
frame.style.bottom_padding = 5
|
frame.style.bottom_padding = 5
|
||||||
local uuid = data.uuid
|
local uuid = data.uuid
|
||||||
@@ -225,7 +225,7 @@ ThisModule.Gui = Gui.popup{
|
|||||||
}:add_left{
|
}:add_left{
|
||||||
caption='utility/item_editor_icon',
|
caption='utility/item_editor_icon',
|
||||||
tooltip={'ExpGamingPlayer-polls.tooltip'},
|
tooltip={'ExpGamingPlayer-polls.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
frame.caption={'ExpGamingPlayer-polls.name'}
|
frame.caption={'ExpGamingPlayer-polls.name'}
|
||||||
frame.add{
|
frame.add{
|
||||||
type='label',
|
type='label',
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ end)
|
|||||||
ThisModule.Gui = Gui.popup{
|
ThisModule.Gui = Gui.popup{
|
||||||
name='announcements',
|
name='announcements',
|
||||||
caption={'GuiAnnouncements.name'},
|
caption={'GuiAnnouncements.name'},
|
||||||
draw=function(frame,data)
|
draw=function(self,frame,data)
|
||||||
frame.style.right_padding = 5
|
frame.style.right_padding = 5
|
||||||
frame.style.bottom_padding = 5
|
frame.style.bottom_padding = 5
|
||||||
frame.add{type='label',caption=data.sent_by,style='caption_label'}
|
frame.add{type='label',caption=data.sent_by,style='caption_label'}
|
||||||
@@ -72,7 +72,7 @@ ThisModule.Gui = Gui.popup{
|
|||||||
}:add_left{
|
}:add_left{
|
||||||
caption='item/programmable-speaker',
|
caption='item/programmable-speaker',
|
||||||
tooltip={'GuiAnnouncements.tooltip'},
|
tooltip={'GuiAnnouncements.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
frame.caption = {'GuiAnnouncements.name'}
|
frame.caption = {'GuiAnnouncements.name'}
|
||||||
local frame = frame.add{
|
local frame = frame.add{
|
||||||
type='flow',
|
type='flow',
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ ThisModule.Gui = Gui.left{
|
|||||||
name='warp-list',
|
name='warp-list',
|
||||||
caption='item/'..warp_item,
|
caption='item/'..warp_item,
|
||||||
tooltip={'WarpPoints.tooltip'},
|
tooltip={'WarpPoints.tooltip'},
|
||||||
draw=function(frame)
|
draw=function(self,frame)
|
||||||
local player = Game.get_player(frame.player_index)
|
local player = Game.get_player(frame.player_index)
|
||||||
frame.caption={'WarpPoints.name'}
|
frame.caption={'WarpPoints.name'}
|
||||||
local warp_list = frame.add{
|
local warp_list = frame.add{
|
||||||
|
|||||||
Reference in New Issue
Block a user