1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2025-03-05 15:05:57 +02:00

Merge pull request #791 from SimonFlapse/evo_gui_fix

Updating evolution gui on player joined
This commit is contained in:
Simon 2019-02-22 20:43:48 +01:00 committed by GitHub
commit 3075b0c64d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,10 +8,16 @@ local pairs = pairs
local main_button_name = Gui.uid_name() local main_button_name = Gui.uid_name()
local memory = { local memory = {
last_percentage = 0, last_percentage = 0
} }
Global.register(memory, function (tbl) memory = tbl end, 'evolution_progress') Global.register(
memory,
function(tbl)
memory = tbl
end,
'evolution_progress'
)
local button_sprites = { local button_sprites = {
['small-biter'] = 0, ['small-biter'] = 0,
@ -21,7 +27,7 @@ local button_sprites = {
['big-spitter'] = 0.5, ['big-spitter'] = 0.5,
['big-biter'] = 0.501, ['big-biter'] = 0.501,
['behemoth-spitter'] = 0.9, ['behemoth-spitter'] = 0.9,
['behemoth-biter'] = 0.901, ['behemoth-biter'] = 0.901
} }
local function get_evolution_percentage() local function get_evolution_percentage()
@ -59,6 +65,21 @@ local function get_alien_name(evolution_factor)
return last_match return last_match
end end
local function update_gui(player)
local button = player.gui.top[main_button_name]
if button and button.valid then
local evolution_factor = get_evolution_percentage()
local evolution_button_number = evolution_factor * 100
local current_alien = get_alien_name(evolution_factor)
local sprite = 'entity/' .. current_alien
button.number = evolution_button_number
if sprite then
button.sprite = sprite
end
end
end
local function player_joined(event) local function player_joined(event)
local player = Game.get_player_by_index(event.player_index) local player = Game.get_player_by_index(event.player_index)
if not player or not player.valid then if not player or not player.valid then
@ -66,18 +87,21 @@ local function player_joined(event)
end end
if player.gui.top[main_button_name] ~= nil then if player.gui.top[main_button_name] ~= nil then
update_gui(player)
return return
end end
local evolution_factor = get_evolution_percentage() local evolution_factor = get_evolution_percentage()
local alien_name = get_alien_name(evolution_factor) local alien_name = get_alien_name(evolution_factor)
player.gui.top.add({ player.gui.top.add(
{
name = main_button_name, name = main_button_name,
type = 'sprite-button', type = 'sprite-button',
sprite = 'entity/' .. alien_name, sprite = 'entity/' .. alien_name,
number = evolution_factor * 100, number = evolution_factor * 100
}).enabled = false }
).enabled = false
end end
local function on_nth_tick() local function on_nth_tick()
@ -97,25 +121,21 @@ local function on_nth_tick()
if current_alien ~= previous_alien then if current_alien ~= previous_alien then
sprite = 'entity/' .. current_alien sprite = 'entity/' .. current_alien
local caption = {'', 'Evolution notice: ', {'entity-name.' .. current_alien}, ' sighted!'} local caption = {'', 'Evolution notice: ', {'entity-name.' .. current_alien}, ' sighted!'}
Toast.toast_all_players_template(10, function (container) Toast.toast_all_players_template(
10,
function(container)
container.add({type = 'sprite', sprite = sprite}) container.add({type = 'sprite', sprite = sprite})
local text = container.add({type = 'label', caption = caption, name = Toast.close_toast_name}) local text = container.add({type = 'label', caption = caption, name = Toast.close_toast_name})
local text_style = text.style local text_style = text.style
text_style.single_line = false text_style.single_line = false
text_style.vertical_align = 'center' text_style.vertical_align = 'center'
end) end
)
end end
local players = game.connected_players local players = game.connected_players
local evolution_button_number = evolution_factor * 100
for i = 1, #players do for i = 1, #players do
local button = players[i].gui.top[main_button_name] update_gui(players[i])
if button and button.valid then
button.number = evolution_button_number
if sprite then
button.sprite = sprite
end
end
end end
end end