197 lines
5.9 KiB
Lua
197 lines
5.9 KiB
Lua
-- This class keeps track of welcome screen that appears when not playing with angels exploration.
|
|
|
|
-- Create class ---------------------------------------------------------------
|
|
local welcome_dialog = {}
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Initiation of the class
|
|
-------------------------------------------------------------------------------
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Behavioural functions
|
|
-------------------------------------------------------------------------------
|
|
function welcome_dialog:create_welcome_dialog(player_index)
|
|
local player = game.players[player_index]
|
|
|
|
local welcomeFrame = player.gui.screen.add({
|
|
type = "frame",
|
|
name = "angels_welcome_screen",
|
|
direction = "vertical",
|
|
})
|
|
welcomeFrame.style.maximal_width = 400
|
|
|
|
local welcomeFrameHeader = welcomeFrame.add({
|
|
type = "flow",
|
|
name = "header",
|
|
})
|
|
welcomeFrameHeader.drag_target = welcomeFrame
|
|
welcomeFrameHeader.style.horizontally_stretchable = true
|
|
|
|
welcomeFrameHeader.add({
|
|
type = "label",
|
|
name = "header_label",
|
|
caption = { "angels-welcome-message-gui.title" },
|
|
style = "frame_title",
|
|
ignored_by_interaction = true,
|
|
}).drag_target =
|
|
welcomeFrame
|
|
|
|
local headerSpace = welcomeFrameHeader.add({
|
|
type = "empty-widget",
|
|
name = "space",
|
|
style = "draggable_space_header",
|
|
ignored_by_interaction = true,
|
|
})
|
|
headerSpace.style.horizontally_stretchable = true
|
|
headerSpace.style.height = 24
|
|
headerSpace.style.right_margin = 4
|
|
|
|
welcomeFrameHeader.add({
|
|
type = "sprite-button",
|
|
name = "welcome_close_button",
|
|
sprite = "utility/close_white",
|
|
hovered_sprite = "utility/close_black",
|
|
clicked_sprite = "utility/close_black",
|
|
style = "frame_action_button",
|
|
})
|
|
|
|
welcomeFrame.force_auto_center()
|
|
|
|
local welcomeFrameContent = welcomeFrame.add({
|
|
type = "frame",
|
|
name = "angels_welcome_screen_content",
|
|
direction = "vertical",
|
|
style = "inside_shallow_frame_with_padding",
|
|
})
|
|
|
|
welcomeFrameContent.add({
|
|
type = "label",
|
|
name = "intro_message",
|
|
caption = { "", { "angels-welcome-message.intro" }, "\n" },
|
|
ignored_by_interaction = true,
|
|
}).style.single_line =
|
|
false
|
|
|
|
local pollutionSetting = game.map_settings.pollution.enabled and "enabled" or "disabled"
|
|
welcomeFrameContent.add({
|
|
type = "label",
|
|
name = "pollution_message",
|
|
caption = {
|
|
"",
|
|
" ",
|
|
{
|
|
"angels-welcome-message-settings.pollution-setting",
|
|
{ "angels-welcome-message-settings." .. pollutionSetting },
|
|
},
|
|
" [img=info]",
|
|
},
|
|
tooltip = { "angels-welcome-message-settings-tooltip.pollution-setting" },
|
|
})
|
|
|
|
local enemySizeSetting = ((player.surface.map_gen_settings["autoplace_controls"] or {})["angels-biter-slider"] or {
|
|
["size"] = 0,
|
|
})["size"] > 1 and "enabled" or "disabled"
|
|
welcomeFrameContent.add({
|
|
type = "label",
|
|
name = "enemy_size_message",
|
|
caption = {
|
|
"",
|
|
" ",
|
|
{ "angels-welcome-message-settings.enemy-setting", { "angels-welcome-message-settings." .. enemySizeSetting } },
|
|
" [img=info]",
|
|
},
|
|
tooltip = { "angels-welcome-message-settings-tooltip.enemy-setting" },
|
|
})
|
|
|
|
local enemyEvolutionSetting = game.map_settings.enemy_evolution.enabled and "enabled" or "disabled"
|
|
welcomeFrameContent.add({
|
|
type = "label",
|
|
name = "enemy_evolution_message",
|
|
caption = {
|
|
"",
|
|
" ",
|
|
{
|
|
"angels-welcome-message-settings.evolution-setting",
|
|
{ "angels-welcome-message-settings." .. enemyEvolutionSetting },
|
|
},
|
|
" [img=info]",
|
|
},
|
|
tooltip = { "angels-welcome-message-settings-tooltip.evolution-setting" },
|
|
})
|
|
|
|
local enemyExpansionSetting = game.map_settings.enemy_expansion.enabled and "enabled" or "disabled"
|
|
welcomeFrameContent.add({
|
|
type = "label",
|
|
name = "expansion_message",
|
|
caption = {
|
|
"",
|
|
" ",
|
|
{
|
|
"angels-welcome-message-settings.expansion-setting",
|
|
{ "angels-welcome-message-settings." .. enemyExpansionSetting },
|
|
},
|
|
" [img=info]",
|
|
},
|
|
tooltip = { "angels-welcome-message-settings-tooltip.expansion-setting" },
|
|
})
|
|
|
|
welcomeFrameContent.add({
|
|
type = "label",
|
|
name = "faq",
|
|
caption = { "", "\n", { "angels-welcome-message.outro" } },
|
|
ignored_by_interaction = true,
|
|
}).style.single_line =
|
|
false
|
|
|
|
local welcomeFrameFooter = welcomeFrame.add({
|
|
type = "flow",
|
|
name = "footer",
|
|
style = "dialog_buttons_horizontal_flow",
|
|
})
|
|
welcomeFrameFooter.style.horizontally_stretchable = true
|
|
|
|
local footerSpace = welcomeFrameFooter.add({
|
|
type = "empty-widget",
|
|
name = "bottom_space",
|
|
--style = 'draggable_space'
|
|
style = "draggable_space_with_no_left_margin",
|
|
ignored_by_interaction = true,
|
|
})
|
|
footerSpace.style.horizontally_stretchable = true
|
|
footerSpace.style.height = 32
|
|
|
|
welcomeFrameFooter.add({
|
|
type = "button",
|
|
name = "welcome_accept_button",
|
|
caption = { "angels-welcome-message-gui.confirm-button" },
|
|
style = "confirm_button",
|
|
})
|
|
end
|
|
|
|
function welcome_dialog:destroy_welcome_dialog(player_index)
|
|
local player = game.players[player_index]
|
|
local dialog_screen = player.gui.screen["angels_welcome_screen"]
|
|
if dialog_screen then
|
|
dialog_screen.destroy()
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------------------------
|
|
-- Event handlers
|
|
-------------------------------------------------------------------------------
|
|
function welcome_dialog:on_cutscene_cancelled(player_index)
|
|
if game.active_mods["angelsexploration"] then
|
|
return
|
|
end
|
|
self:create_welcome_dialog(player_index)
|
|
end
|
|
|
|
function welcome_dialog:on_gui_click(gui_element_name, player_index)
|
|
if gui_element_name == "welcome_close_button" or gui_element_name == "welcome_accept_button" then
|
|
self:destroy_welcome_dialog(player_index)
|
|
end
|
|
end
|
|
|
|
-- Return class ---------------------------------------------------------------
|
|
return welcome_dialog
|