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:
commit
3075b0c64d
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user