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:
parent
860ead05c0
commit
f9fb950639
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user