Convert bonus, research, sups, and cctv
This commit is contained in:
@@ -1,32 +1,31 @@
|
||||
---- module surveillance
|
||||
-- @gui surveillance
|
||||
|
||||
local Gui = require("modules.exp_legacy.expcore.gui") --- @dep expcore.gui
|
||||
local Gui = require("modules/exp_gui")
|
||||
local Roles = require("modules.exp_legacy.expcore.roles") --- @dep expcore.roles
|
||||
local Event = require("modules/exp_legacy/utils/event") --- @dep utils.event
|
||||
|
||||
local cctv_player =
|
||||
Gui.element(function(definition, parent, player_list)
|
||||
local cctv_player = Gui.element("cctv_player")
|
||||
:draw(function(def, parent, player_list)
|
||||
return parent.add{
|
||||
name = definition.name,
|
||||
name = def.name,
|
||||
type = "drop-down",
|
||||
items = player_list,
|
||||
selected_index = #player_list > 0 and 1,
|
||||
selected_index = #player_list > 0 and 1 or nil,
|
||||
}
|
||||
end)
|
||||
:style{
|
||||
horizontally_stretchable = true,
|
||||
}
|
||||
:static_name(Gui.unique_static_name)
|
||||
|
||||
local cctv_status =
|
||||
Gui.element{
|
||||
local cctv_status = Gui.element("cctv_status")
|
||||
:draw{
|
||||
type = "drop-down",
|
||||
items = { { "surveillance.status-enable" }, { "surveillance.status-disable" } },
|
||||
selected_index = 2,
|
||||
}:style{
|
||||
width = 96,
|
||||
}:on_selection_changed(function(_, element, _)
|
||||
}:on_selection_state_changed(function(def, event, element)
|
||||
if element.selected_index == 1 then
|
||||
element.parent.parent.parent.cctv_display.visible = true
|
||||
else
|
||||
@@ -34,59 +33,60 @@ local cctv_status =
|
||||
end
|
||||
end)
|
||||
|
||||
local cctv_type =
|
||||
Gui.element{
|
||||
local cctv_type = Gui.element("cctv_type")
|
||||
:draw{
|
||||
type = "drop-down",
|
||||
name = Gui.unique_static_name,
|
||||
name = Gui.property_from_name,
|
||||
items = { { "surveillance.type-player" }, { "surveillance.type-static" }, { "surveillance.type-player-loop" } },
|
||||
selected_index = 1,
|
||||
}:style{
|
||||
width = 96,
|
||||
}
|
||||
|
||||
local cctv_location =
|
||||
Gui.element{
|
||||
local cctv_location = Gui.element("cctv_location")
|
||||
:draw{
|
||||
type = "button",
|
||||
name = Gui.unique_static_name,
|
||||
name = Gui.property_from_name,
|
||||
caption = { "surveillance.func-set" },
|
||||
}:style{
|
||||
width = 48,
|
||||
}:on_click(function(player, element, _)
|
||||
}:on_click(function(def, event, element)
|
||||
local player = Gui.get_player(event)
|
||||
element.parent.parent.parent.cctv_display.position = player.physical_position
|
||||
end)
|
||||
|
||||
local zoom_in =
|
||||
Gui.element{
|
||||
local zoom_in = Gui.element("zoom_in")
|
||||
:draw{
|
||||
type = "button",
|
||||
name = Gui.unique_static_name,
|
||||
name = Gui.property_from_name,
|
||||
caption = "+",
|
||||
}:style{
|
||||
width = 32,
|
||||
}:on_click(function(_, element, _)
|
||||
}:on_click(function(def, event, element)
|
||||
local display = element.parent.parent.parent.cctv_display
|
||||
if display.zoom < 2.0 then
|
||||
display.zoom = display.zoom + 0.05
|
||||
end
|
||||
end)
|
||||
|
||||
local zoom_out =
|
||||
Gui.element{
|
||||
local zoom_out = Gui.element("zoom_out")
|
||||
:draw{
|
||||
type = "button",
|
||||
name = Gui.unique_static_name,
|
||||
name = Gui.property_from_name,
|
||||
caption = "-",
|
||||
}:style{
|
||||
width = 32,
|
||||
}:on_click(function(_, element, _)
|
||||
}:on_click(function(def, event, element)
|
||||
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, name, player_list)
|
||||
local camera_set = Gui.element("camera_set")
|
||||
:draw(function(_, parent, name, player_list)
|
||||
local camera_set = parent.add{ type = "flow", direction = "vertical", name = name }
|
||||
local buttons = Gui.scroll_table(camera_set, 480, 6, "buttons")
|
||||
local buttons = Gui.elements.scroll_table(camera_set, 480, 6, "buttons")
|
||||
|
||||
cctv_player(buttons, player_list)
|
||||
cctv_status(buttons)
|
||||
@@ -109,9 +109,9 @@ local camera_set =
|
||||
return camera_set
|
||||
end)
|
||||
|
||||
local cctv_container =
|
||||
Gui.element(function(definition, parent)
|
||||
local container = Gui.container(parent, definition.name, 480)
|
||||
local cctv_container = Gui.element("cctv_container")
|
||||
:draw(function(def, parent)
|
||||
local container = Gui.elements.container(parent, 480)
|
||||
local scroll = container.add{ name = "scroll", type = "scroll-pane", direction = "vertical" }
|
||||
scroll.style.maximal_height = 704
|
||||
local player_list = {}
|
||||
@@ -125,12 +125,18 @@ local cctv_container =
|
||||
|
||||
return container.parent
|
||||
end)
|
||||
:static_name(Gui.unique_static_name)
|
||||
:add_to_left_flow()
|
||||
|
||||
Gui.left_toolbar_button("entity/radar", { "surveillance.main-tooltip" }, cctv_container, function(player)
|
||||
return Roles.player_allowed(player, "gui/surveillance")
|
||||
end)
|
||||
--- Add the element to the left flow with a toolbar button
|
||||
Gui.add_left_element(cctv_container, false)
|
||||
Gui.create_toolbar_button{
|
||||
name = "cctv_toggle",
|
||||
left_element = cctv_container,
|
||||
sprite = "entity/radar",
|
||||
tooltip = { "surveillance.main-tooltip" },
|
||||
visible = function(player, element)
|
||||
return Roles.player_allowed(player, "gui/surveillance")
|
||||
end
|
||||
}
|
||||
|
||||
local function gui_update()
|
||||
local player_list = {}
|
||||
@@ -140,9 +146,9 @@ local function gui_update()
|
||||
end
|
||||
|
||||
for _, player in pairs(game.connected_players) do
|
||||
local frame = Gui.get_left_element(player, cctv_container)
|
||||
frame.container.scroll["cctv_st_1"].buttons.table[cctv_player.name].items = player_list
|
||||
frame.container.scroll["cctv_st_2"].buttons.table[cctv_player.name].items = player_list
|
||||
local container = Gui.get_left_element(cctv_container, player)
|
||||
container.frame.scroll["cctv_st_1"].buttons.table[cctv_player.name].items = player_list
|
||||
container.frame.scroll["cctv_st_2"].buttons.table[cctv_player.name].items = player_list
|
||||
end
|
||||
end
|
||||
|
||||
@@ -151,18 +157,18 @@ Event.add(defines.events.on_player_left_game, gui_update)
|
||||
|
||||
Event.add(defines.events.on_tick, function(_)
|
||||
for _, player in pairs(game.connected_players) do
|
||||
local frame = Gui.get_left_element(player, cctv_container)
|
||||
local container = Gui.get_left_element(cctv_container, player)
|
||||
|
||||
for i = 1, 2 do
|
||||
local scroll_table_name = "cctv_st_" .. i
|
||||
local current_camera_set = frame.container.scroll[scroll_table_name]
|
||||
local current_camera_set = container.frame.scroll[scroll_table_name]
|
||||
local switch_index = current_camera_set.buttons.table[cctv_type.name].selected_index
|
||||
|
||||
if (switch_index == 1) or (switch_index == 3) then
|
||||
local selected_index = current_camera_set.buttons.table[cctv_player.name].selected_index
|
||||
|
||||
if selected_index ~= 0 then
|
||||
selected_index = current_camera_set.buttons.table[cctv_player.name].items[selected_index]
|
||||
selected_index = current_camera_set.buttons.table[cctv_player.name].items[selected_index] --[[ @as number ]]
|
||||
current_camera_set["cctv_display"].position = game.players[selected_index].physical_position
|
||||
current_camera_set["cctv_display"].surface_index = game.players[selected_index].surface_index
|
||||
else
|
||||
@@ -176,10 +182,10 @@ end)
|
||||
|
||||
Event.on_nth_tick(600, function(_)
|
||||
for _, player in pairs(game.connected_players) do
|
||||
local frame = Gui.get_left_element(player, cctv_container)
|
||||
local container = Gui.get_left_element(cctv_container, player)
|
||||
|
||||
for i = 1, 2 do
|
||||
local current_camera_set = frame.container.scroll["cctv_st_" .. i]
|
||||
local current_camera_set = container.frame.scroll["cctv_st_" .. i]
|
||||
|
||||
if current_camera_set.buttons.table[cctv_type.name].selected_index == 3 then
|
||||
local item_n = #current_camera_set.buttons.table[cctv_player.name].items
|
||||
|
||||
Reference in New Issue
Block a user