1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-04-11 11:31:57 +02:00

Added skip button

Clean up in radio gui
This commit is contained in:
SimonFlapse 2019-06-10 16:11:12 +02:00
parent 860ead05c0
commit f9fb950639
2 changed files with 36 additions and 19 deletions

View File

@ -4,6 +4,7 @@ local Task = require 'utils.task'
local Global = require 'utils.global'
local Command = require 'utils.command'
local Debug = require 'utils.debug'
local Gui = require 'utils.gui'
local set_timeout_in_ticks = Task.set_timeout_in_ticks
local debug_print = Debug.print
@ -11,6 +12,8 @@ local debug_print = Debug.print
local is_valid_sound_path
local get_player
local skip_btn_name = Gui.uid_name()
local Public = {}
local handler
@ -145,6 +148,16 @@ function Public.register_running_cutscene(player_index, identifier, final_transi
final_transition_time = final_transition_time
}
local btn = player.gui.top.add {type = 'sprite-button', name = skip_btn_name, caption = 'Skip cutscene'}
btn.style.minimal_height = 28
btn.style.minimal_width = 150
btn.style.font = 'default-large-bold'
btn.style.margin = 0
btn.style.top_margin = 0
btn.style.bottom_margin = 0
btn.style.font_color = {r = 255, g = 215, b = 0}
running_cutscene.btn = btn
handler({player_index = player_index, waypoint_index = -1})
end
@ -176,7 +189,8 @@ local function restart_cutscene(player_index, waypoints, start_index)
final_transition_time = final_transition_time,
character = character,
terminate_func = current_running.terminate_func,
rendering = current_running.rendering
rendering = current_running.rendering,
btn = current_running.btn
}
debug_print('Updating cutscene for player_index ' .. player_index)
@ -231,7 +245,12 @@ end
local callback_function =
Token.register(
function(params)
Token.get(params.func)(params.player_index, params.waypoint_index, params.params)
local player_index = params.player_index
if (running_cutscenes[player_index]) then
Token.get(params.func)(player_index, params.waypoint_index, params.params)
else
debug_print('Skipping callback function. Cutscene got terminated!')
end
end
)
@ -240,15 +259,17 @@ local reconnect_character =
function(params)
local player_index = params.player_index
local player = get_player(player_index)
local character = params.character
local func = params.func
local running_cutscene = params.running_cutscene
local character = running_cutscene.character
local func = running_cutscene.terminate_func
if valid(player) and valid(character) then
player.exit_cutscene()
player.set_controller {type = defines.controllers.character, character = character}
if func then
Token.get(func)(player_index)
end
Token.get(remove_renderings)(params.rendering)
Token.get(remove_renderings)(running_cutscene.rendering)
running_cutscene.btn.destroy()
running_cutscenes[player_index] = nil
end
end
@ -267,9 +288,7 @@ function Public.terminate_cutscene(player_index, ticks)
reconnect_character,
{
player_index = player_index,
character = running_cutscene.character,
func = running_cutscene.terminate_func,
rendering = running_cutscene.rendering
running_cutscene = running_cutscene
}
)
end
@ -401,4 +420,11 @@ Command.add(
skip_cutscene
)
Gui.on_click(
skip_btn_name,
function(event)
skip_cutscene(nil, get_player(event.player_index))
end
)
return Public

View File

@ -5,7 +5,6 @@ local Event = require 'utils.event'
local main_button_name = Gui.uid_name()
local radio_frame = Gui.uid_name()
local close_radio = Gui.uid_name()
local play_sound = Gui.uid_name()
local sounds = {
['ambient'] = {
@ -97,6 +96,7 @@ local function draw_radio(event)
vertical_scroll_policy = 'auto-and-reserve-space',
horizontal_scroll_policy = 'never'
}
Gui.set_data(scroll_pane, frame)
local main_table = scroll_pane.add {type = 'table', column_count = 4}
@ -120,6 +120,7 @@ local function draw_radio(event)
}
information_pane.style.horizontally_stretchable = true
information_pane.style.horizontal_align = 'center'
Gui.set_data(information_pane, frame)
local text =
[[
@ -149,9 +150,6 @@ local function draw_radio(event)
local close_button = left_flow.add {type = 'button', name = close_radio, caption = 'Close'}
Gui.set_data(close_button, frame)
local data = {}
Gui.set_data(frame, data)
player.opened = frame
end
@ -167,13 +165,6 @@ Gui.on_click(
end
)
Gui.on_click(
play_sound,
function(_)
game.print('Play_sound')
end
)
Gui.on_custom_close(
radio_frame,
function(event)