From f08cc91bdd3ea078aa0f013727d204b85a98d27d Mon Sep 17 00:00:00 2001 From: Cooldude2606 <25043174+Cooldude2606@users.noreply.github.com> Date: Mon, 2 Oct 2023 18:54:12 +0100 Subject: [PATCH] Changed enough to prevent join errors --- modules/gui/surveillance.lua | 66 +++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/modules/gui/surveillance.lua b/modules/gui/surveillance.lua index 2cd3777f..b4087fa4 100644 --- a/modules/gui/surveillance.lua +++ b/modules/gui/surveillance.lua @@ -6,15 +6,16 @@ local Roles = require 'expcore.roles' --- @dep expcore.roles local Event = require 'utils.event' --- @dep utils.event local cctv_container -local player_list = {} local cctv_player = -Gui.element{ - type = 'drop-down', - name = 'cctv_player', - items = player_list, - selected_index = 1 -} +Gui.element(function(name, parent, player_list) + return parent.add{ + name = name, + type = 'drop-down', + items = player_list, + selected_index = #player_list > 0 and 1 + } +end) local cctv_type = Gui.element{ @@ -26,9 +27,9 @@ Gui.element{ width = 96 }:on_click(function(_, element, _) if element.selected_index == 1 then - element.parent.parent.cctv_display.visible = true + element.parent.parent.parent.cctv_display.visible = true else - element.parent.parent.cctv_display.visible = false + element.parent.parent.parent.cctv_display.visible = false end end) @@ -42,9 +43,9 @@ Gui.element{ width = 96 }:on_click(function(_, element, _) if element.selected_index == 1 then - element.parent.parent.cctv_display.visible = true + element.parent.parent.parent.cctv_display.visible = true else - element.parent.parent.cctv_display.visible = false + element.parent.parent.parent.cctv_display.visible = false end end) @@ -65,8 +66,9 @@ Gui.element{ }:style{ width = 36 }:on_click(function(_, element, _) - if element.parent.parent.cctv_display.zoom < 2.0 then - element.parent.parent.cctv_display.zoom = element.parent.parent.cctv_display.zoom + 0.05 + local display = element.parent.parent.parent.cctv_display + if display.zoom < 2.0 then + display.zoom = display.zoom + 0.05 end end) @@ -77,17 +79,18 @@ Gui.element{ }:style{ width = 36 }:on_click(function(_, element, _) - if element.parent.parent.cctv_display.zoom > 0.2 then - element.parent.parent.cctv_display.zoom = element.parent.parent.cctv_display.zoom - 0.05 + local display = element.parent.parent.parent.cctv_display + if display.zoom > 0.2 then + display.zoom = display.zoom - 0.05 end end) local camera_set = -Gui.element(function(_, parent) - local camera_set = parent.add{type='flow'} +Gui.element(function(_, parent, name, player_list) + local camera_set = parent.add{type='flow', direction="vertical", name=name} local buttons = Gui.scroll_table(camera_set, 400, 6, 'buttons') - cctv_player(buttons) + cctv_player(buttons, player_list) cctv_type(buttons) cctv_status(buttons) cctv_location(buttons) @@ -110,16 +113,14 @@ end) cctv_container = Gui.element(function(event_trigger, parent) local container = Gui.container(parent, event_trigger, 480) - local scroll_table_1 = Gui.scroll_table(container, 400, 6, 'cctv_st_1') - local scroll_table_2 = Gui.scroll_table(container, 400, 6, 'cctv_st_2') - player_list = {} + local player_list = {} for _, player in pairs(game.connected_players) do table.insert(player_list, player.name) end - camera_set(scroll_table_1) - camera_set(scroll_table_2) + camera_set(container, "cctv_st_1", player_list) + camera_set(container, "cctv_st_2", player_list) return container.parent end) @@ -130,7 +131,7 @@ Gui.left_toolbar_button('entity/radar', 'Surveillance GUI', cctv_container, func end) local function gui_update() - player_list = {} + local player_list = {} for _, player in pairs(game.connected_players) do table.insert(player_list, player.name) @@ -138,8 +139,8 @@ local function gui_update() for _, player in pairs(game.connected_players) do 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_2'].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'].buttons.table[cctv_player.name].items = player_list end end @@ -152,18 +153,19 @@ Event.add(defines.events.on_tick, function(_) for i=1, 2 do 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 - 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 - frame.container[scroll_table_name].table.flow['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'].position = game.players[selected_index].position + current_camera_set['cctv_display'].surface_index = game.players[selected_index].surface_index else - frame.container[scroll_table_name].table.flow['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'].position = {x=0, y=0} + current_camera_set['cctv_display'].surface_index = game.surfaces['nauvis'].index end end end