Changed enough to prevent join errors

This commit is contained in:
Cooldude2606
2023-10-02 18:54:12 +01:00
parent 99c3a40ce5
commit f08cc91bdd

View File

@@ -6,15 +6,16 @@ local Roles = require 'expcore.roles' --- @dep expcore.roles
local Event = require 'utils.event' --- @dep utils.event local Event = require 'utils.event' --- @dep utils.event
local cctv_container local cctv_container
local player_list = {}
local cctv_player = local cctv_player =
Gui.element{ Gui.element(function(name, parent, player_list)
type = 'drop-down', return parent.add{
name = 'cctv_player', name = name,
items = player_list, type = 'drop-down',
selected_index = 1 items = player_list,
} selected_index = #player_list > 0 and 1
}
end)
local cctv_type = local cctv_type =
Gui.element{ Gui.element{
@@ -26,9 +27,9 @@ Gui.element{
width = 96 width = 96
}:on_click(function(_, element, _) }:on_click(function(_, element, _)
if element.selected_index == 1 then if element.selected_index == 1 then
element.parent.parent.cctv_display.visible = true element.parent.parent.parent.cctv_display.visible = true
else else
element.parent.parent.cctv_display.visible = false element.parent.parent.parent.cctv_display.visible = false
end end
end) end)
@@ -42,9 +43,9 @@ Gui.element{
width = 96 width = 96
}:on_click(function(_, element, _) }:on_click(function(_, element, _)
if element.selected_index == 1 then if element.selected_index == 1 then
element.parent.parent.cctv_display.visible = true element.parent.parent.parent.cctv_display.visible = true
else else
element.parent.parent.cctv_display.visible = false element.parent.parent.parent.cctv_display.visible = false
end end
end) end)
@@ -65,8 +66,9 @@ Gui.element{
}:style{ }:style{
width = 36 width = 36
}:on_click(function(_, element, _) }:on_click(function(_, element, _)
if element.parent.parent.cctv_display.zoom < 2.0 then local display = element.parent.parent.parent.cctv_display
element.parent.parent.cctv_display.zoom = element.parent.parent.cctv_display.zoom + 0.05 if display.zoom < 2.0 then
display.zoom = display.zoom + 0.05
end end
end) end)
@@ -77,17 +79,18 @@ Gui.element{
}:style{ }:style{
width = 36 width = 36
}:on_click(function(_, element, _) }:on_click(function(_, element, _)
if element.parent.parent.cctv_display.zoom > 0.2 then local display = element.parent.parent.parent.cctv_display
element.parent.parent.cctv_display.zoom = element.parent.parent.cctv_display.zoom - 0.05 if display.zoom > 0.2 then
display.zoom = display.zoom - 0.05
end end
end) end)
local camera_set = local camera_set =
Gui.element(function(_, parent) Gui.element(function(_, parent, name, player_list)
local camera_set = parent.add{type='flow'} local camera_set = parent.add{type='flow', direction="vertical", name=name}
local buttons = Gui.scroll_table(camera_set, 400, 6, 'buttons') local buttons = Gui.scroll_table(camera_set, 400, 6, 'buttons')
cctv_player(buttons) cctv_player(buttons, player_list)
cctv_type(buttons) cctv_type(buttons)
cctv_status(buttons) cctv_status(buttons)
cctv_location(buttons) cctv_location(buttons)
@@ -110,16 +113,14 @@ end)
cctv_container = cctv_container =
Gui.element(function(event_trigger, parent) Gui.element(function(event_trigger, parent)
local container = Gui.container(parent, event_trigger, 480) local container = Gui.container(parent, event_trigger, 480)
local scroll_table_1 = Gui.scroll_table(container, 400, 6, 'cctv_st_1') local player_list = {}
local scroll_table_2 = Gui.scroll_table(container, 400, 6, 'cctv_st_2')
player_list = {}
for _, player in pairs(game.connected_players) do for _, player in pairs(game.connected_players) do
table.insert(player_list, player.name) table.insert(player_list, player.name)
end end
camera_set(scroll_table_1) camera_set(container, "cctv_st_1", player_list)
camera_set(scroll_table_2) camera_set(container, "cctv_st_2", player_list)
return container.parent return container.parent
end) end)
@@ -130,7 +131,7 @@ Gui.left_toolbar_button('entity/radar', 'Surveillance GUI', cctv_container, func
end) end)
local function gui_update() local function gui_update()
player_list = {} local player_list = {}
for _, player in pairs(game.connected_players) do for _, player in pairs(game.connected_players) do
table.insert(player_list, player.name) table.insert(player_list, player.name)
@@ -138,8 +139,8 @@ local function gui_update()
for _, player in pairs(game.connected_players) do for _, player in pairs(game.connected_players) do
local frame = Gui.get_left_element(player, cctv_container) local frame = Gui.get_left_element(player, cctv_container)
frame.container['cctv_st_1'].table.flow['buttons'][cctv_player.name].items = player_list frame.container['cctv_st_1'].buttons.table[cctv_player.name].items = player_list
frame.container['cctv_st_2'].table.flow['buttons'][cctv_player.name].items = player_list frame.container['cctv_st_2'].buttons.table[cctv_player.name].items = player_list
end end
end end
@@ -152,18 +153,19 @@ Event.add(defines.events.on_tick, function(_)
for i=1, 2 do for i=1, 2 do
local scroll_table_name = 'cctv_st_' .. i local scroll_table_name = 'cctv_st_' .. i
local switch_index = frame.container[scroll_table_name].table.flow[cctv_status.name].selected_index local current_camera_set = frame.container[scroll_table_name]
local switch_index = current_camera_set.buttons.table[cctv_status.name].selected_index
if switch_index == 1 then if switch_index == 1 then
local selected_index = frame.container[scroll_table_name].table.flow[cctv_player.name].selected_index local selected_index = current_camera_set.buttons.table[cctv_player.name].selected_index
if selected_index ~= nil or selected_index ~= 0 then if selected_index ~= nil or selected_index ~= 0 then
frame.container[scroll_table_name].table.flow['cctv_display'].position = game.players[selected_index].position current_camera_set['cctv_display'].position = game.players[selected_index].position
frame.container[scroll_table_name].table.flow['cctv_display'].surface_index = game.players[selected_index].surface_index current_camera_set['cctv_display'].surface_index = game.players[selected_index].surface_index
else else
frame.container[scroll_table_name].table.flow['cctv_display'].position = {x=0, y=0} current_camera_set['cctv_display'].position = {x=0, y=0}
frame.container[scroll_table_name].table.flow['cctv_display'].surface_index = game.surfaces['nauvis'].index current_camera_set['cctv_display'].surface_index = game.surfaces['nauvis'].index
end end
end end
end end