mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2025-12-30 12:31:41 +09:00
Cleaned gui modules
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
--[[-- Gui Module - Player List
|
||||
- Adds a player list to show names and play time; also includes action buttons which can apply to players
|
||||
- Adds a player list to show names and play time; also includes action buttons which can preform actions to players
|
||||
@gui Player-List
|
||||
@alias player_list
|
||||
]]
|
||||
@@ -60,7 +60,7 @@ Gui.element{
|
||||
style = 'shortcut_bar_button_red'
|
||||
}
|
||||
:style(Gui.sprite_style(30,-1,{ top_margin = -1, right_margin = -1 }))
|
||||
:on_click(function(player,element)
|
||||
:on_click(function(player,_)
|
||||
Store.clear(selected_player_store,player)
|
||||
Store.clear(selected_action_store,player)
|
||||
end)
|
||||
@@ -170,7 +170,7 @@ Gui.element(function(_,parent)
|
||||
end)
|
||||
|
||||
--- Updates the visible state of the action bar buttons
|
||||
local function update_action_bar_buttons(element)
|
||||
local function update_action_bar(element)
|
||||
local player = Gui.get_player_from_element(element)
|
||||
local selected_player_name = Store.get(selected_player_store,player)
|
||||
|
||||
@@ -389,7 +389,7 @@ Store.watch(selected_player_store,function(value,player_name)
|
||||
local player = Game.get_player_from_any(player_name)
|
||||
local frame = Gui.get_left_element(player,player_list_container)
|
||||
local scroll_table = frame.container.scroll.table
|
||||
update_action_bar_buttons(frame.container.action_bar)
|
||||
update_action_bar(frame.container.action_bar)
|
||||
for _,next_player in pairs(game.connected_players) do
|
||||
local element = scroll_table[next_player.name][open_action_bar.name]
|
||||
local style = 'frame_button'
|
||||
|
||||
@@ -37,151 +37,6 @@ local function check_player_permissions(player,action)
|
||||
return true
|
||||
end
|
||||
|
||||
--- Data label which contains a name and a value label pair
|
||||
-- @element data_label
|
||||
local data_label =
|
||||
Gui.element(function(_,parent,label_data)
|
||||
local data_name = label_data.name
|
||||
local data_subname = label_data.subname
|
||||
local data_fullname = data_subname and data_name..data_subname or data_name
|
||||
|
||||
-- Add the name label
|
||||
local name_label = parent.add{
|
||||
type = 'label',
|
||||
name = data_fullname..'-label',
|
||||
caption = {'rocket-info.data-caption-'..data_name,data_subname},
|
||||
tooltip = {'rocket-info.data-tooltip-'..data_name,data_subname}
|
||||
}
|
||||
name_label.style.padding = {0,2}
|
||||
|
||||
--- Right aligned label to store the data
|
||||
local alignment = Gui.alignment(parent,data_fullname)
|
||||
local element =
|
||||
alignment.add{
|
||||
type = 'label',
|
||||
name = 'label',
|
||||
caption = label_data.value,
|
||||
tooltip = label_data.tooltip
|
||||
}
|
||||
element.style.padding = {0,2}
|
||||
|
||||
return element
|
||||
end)
|
||||
|
||||
local function update_data_labels(parent,data_label_data)
|
||||
for _, label_data in ipairs(data_label_data) do
|
||||
local data_name = label_data.subname and label_data.name..label_data.subname or label_data.name
|
||||
if not parent[data_name] then
|
||||
data_label(parent,label_data)
|
||||
else
|
||||
local data_label_element = parent[data_name].label
|
||||
data_label_element.tooltip = label_data.tooltip
|
||||
data_label_element.caption = label_data.value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--- Gets the label data for all the different stats
|
||||
local function get_stats_data(force_name)
|
||||
local force_rockets = Rockets.get_rocket_count(force_name)
|
||||
local stats = Rockets.get_stats(force_name)
|
||||
local stats_data = {}
|
||||
|
||||
-- Format the first launch data
|
||||
if config.stats.show_first_rocket then
|
||||
local value = stats.first_launch or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'first-launch',
|
||||
value = time_formats.caption_hours(value),
|
||||
tooltip = time_formats.tooltip_hours(value)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format the last launch data
|
||||
if config.stats.show_last_rocket then
|
||||
local value = stats.last_launch or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'last-launch',
|
||||
value = time_formats.caption_hours(value),
|
||||
tooltip = time_formats.tooltip_hours(value)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format fastest launch data
|
||||
if config.stats.show_fastest_rocket then
|
||||
local value = stats.fastest_launch or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'fastest-launch',
|
||||
value = time_formats.caption_hours(value),
|
||||
tooltip = time_formats.tooltip_hours(value)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format total rocket data
|
||||
if config.stats.show_total_rockets then
|
||||
local total_rockets = Rockets.get_game_rocket_count()
|
||||
total_rockets = total_rockets == 0 and 1 or total_rockets
|
||||
local percentage = math.round(force_rockets/total_rockets,3)*100
|
||||
table.insert(stats_data,{
|
||||
name = 'total-rockets',
|
||||
value = force_rockets,
|
||||
tooltip = {'rocket-info.value-tooltip-total-rockets',percentage}
|
||||
})
|
||||
end
|
||||
|
||||
-- Format game avg data
|
||||
if config.stats.show_game_avg then
|
||||
local avg = force_rockets > 0 and math.floor(game.tick/force_rockets) or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'avg-launch',
|
||||
value = time_formats.caption(avg),
|
||||
tooltip = time_formats.tooltip(avg)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format rolling avg data
|
||||
for _,avg_over in pairs(config.stats.rolling_avg) do
|
||||
local avg = Rockets.get_rolling_average(force_name,avg_over)
|
||||
table.insert(stats_data,{
|
||||
name = 'avg-launch-n',
|
||||
subname = avg_over,
|
||||
value = time_formats.caption(avg),
|
||||
tooltip = time_formats.tooltip(avg)
|
||||
})
|
||||
end
|
||||
|
||||
-- Return formated data
|
||||
return stats_data
|
||||
end
|
||||
|
||||
--- Gets the label data for the milestones
|
||||
local function get_milestone_data(force_name)
|
||||
local force_rockets = Rockets.get_rocket_count(force_name)
|
||||
local milestone_data = {}
|
||||
|
||||
for _,milestone in ipairs(config.milestones) do
|
||||
if milestone <= force_rockets then
|
||||
local time = Rockets.get_rocket_time(force_name,milestone)
|
||||
table.insert(milestone_data,{
|
||||
name = 'milestone-n',
|
||||
subname = milestone,
|
||||
value = time_formats.caption_hours(time),
|
||||
tooltip = time_formats.tooltip_hours(time)
|
||||
})
|
||||
else
|
||||
table.insert(milestone_data,{
|
||||
name = 'milestone-n',
|
||||
subname = milestone,
|
||||
value = {'rocket-info.data-caption-milestone-next'},
|
||||
tooltip = {'rocket-info.data-tooltip-milestone-next'}
|
||||
})
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
return milestone_data
|
||||
end
|
||||
|
||||
--- Button to toggle the auto launch on a rocket silo
|
||||
-- @elemeent toggle_launch
|
||||
local toggle_launch =
|
||||
@@ -191,7 +46,7 @@ Gui.element{
|
||||
tooltip = {'rocket-info.toggle-rocket-tooltip'}
|
||||
}
|
||||
:style(Gui.sprite_style(16))
|
||||
:on_click(function(player,element,_)
|
||||
:on_click(function(_,element,_)
|
||||
local rocket_silo_name = element.parent.name:sub(8)
|
||||
local rocket_silo = Rockets.get_silo_entity(rocket_silo_name)
|
||||
if rocket_silo.auto_launch then
|
||||
@@ -315,6 +170,51 @@ Gui.element(function(_,parent,silo_data)
|
||||
return element
|
||||
end)
|
||||
|
||||
--- Data label which contains a name and a value label pair
|
||||
-- @element data_label
|
||||
local data_label =
|
||||
Gui.element(function(_,parent,label_data)
|
||||
local data_name = label_data.name
|
||||
local data_subname = label_data.subname
|
||||
local data_fullname = data_subname and data_name..data_subname or data_name
|
||||
|
||||
-- Add the name label
|
||||
local name_label = parent.add{
|
||||
type = 'label',
|
||||
name = data_fullname..'-label',
|
||||
caption = {'rocket-info.data-caption-'..data_name,data_subname},
|
||||
tooltip = {'rocket-info.data-tooltip-'..data_name,data_subname}
|
||||
}
|
||||
name_label.style.padding = {0,2}
|
||||
|
||||
--- Right aligned label to store the data
|
||||
local alignment = Gui.alignment(parent,data_fullname)
|
||||
local element =
|
||||
alignment.add{
|
||||
type = 'label',
|
||||
name = 'label',
|
||||
caption = label_data.value,
|
||||
tooltip = label_data.tooltip
|
||||
}
|
||||
element.style.padding = {0,2}
|
||||
|
||||
return element
|
||||
end)
|
||||
|
||||
-- Used to update the captions and tooltips on the data labels
|
||||
local function update_data_labels(parent,data_label_data)
|
||||
for _, label_data in ipairs(data_label_data) do
|
||||
local data_name = label_data.subname and label_data.name..label_data.subname or label_data.name
|
||||
if not parent[data_name] then
|
||||
data_label(parent,label_data)
|
||||
else
|
||||
local data_label_element = parent[data_name].label
|
||||
data_label_element.tooltip = label_data.tooltip
|
||||
data_label_element.caption = label_data.value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local function get_progress_data(force_name)
|
||||
local force_silos = Rockets.get_silos(force_name)
|
||||
local progress_data = {}
|
||||
@@ -417,6 +317,107 @@ local function update_build_progress(parent,progress_data)
|
||||
if show_message then parent.no_silos.visible = true end
|
||||
end
|
||||
|
||||
--- Gets the label data for all the different stats
|
||||
local function get_stats_data(force_name)
|
||||
local force_rockets = Rockets.get_rocket_count(force_name)
|
||||
local stats = Rockets.get_stats(force_name)
|
||||
local stats_data = {}
|
||||
|
||||
-- Format the first launch data
|
||||
if config.stats.show_first_rocket then
|
||||
local value = stats.first_launch or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'first-launch',
|
||||
value = time_formats.caption_hours(value),
|
||||
tooltip = time_formats.tooltip_hours(value)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format the last launch data
|
||||
if config.stats.show_last_rocket then
|
||||
local value = stats.last_launch or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'last-launch',
|
||||
value = time_formats.caption_hours(value),
|
||||
tooltip = time_formats.tooltip_hours(value)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format fastest launch data
|
||||
if config.stats.show_fastest_rocket then
|
||||
local value = stats.fastest_launch or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'fastest-launch',
|
||||
value = time_formats.caption_hours(value),
|
||||
tooltip = time_formats.tooltip_hours(value)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format total rocket data
|
||||
if config.stats.show_total_rockets then
|
||||
local total_rockets = Rockets.get_game_rocket_count()
|
||||
total_rockets = total_rockets == 0 and 1 or total_rockets
|
||||
local percentage = math.round(force_rockets/total_rockets,3)*100
|
||||
table.insert(stats_data,{
|
||||
name = 'total-rockets',
|
||||
value = force_rockets,
|
||||
tooltip = {'rocket-info.value-tooltip-total-rockets',percentage}
|
||||
})
|
||||
end
|
||||
|
||||
-- Format game avg data
|
||||
if config.stats.show_game_avg then
|
||||
local avg = force_rockets > 0 and math.floor(game.tick/force_rockets) or 0
|
||||
table.insert(stats_data,{
|
||||
name = 'avg-launch',
|
||||
value = time_formats.caption(avg),
|
||||
tooltip = time_formats.tooltip(avg)
|
||||
})
|
||||
end
|
||||
|
||||
-- Format rolling avg data
|
||||
for _,avg_over in pairs(config.stats.rolling_avg) do
|
||||
local avg = Rockets.get_rolling_average(force_name,avg_over)
|
||||
table.insert(stats_data,{
|
||||
name = 'avg-launch-n',
|
||||
subname = avg_over,
|
||||
value = time_formats.caption(avg),
|
||||
tooltip = time_formats.tooltip(avg)
|
||||
})
|
||||
end
|
||||
|
||||
-- Return formated data
|
||||
return stats_data
|
||||
end
|
||||
|
||||
--- Gets the label data for the milestones
|
||||
local function get_milestone_data(force_name)
|
||||
local force_rockets = Rockets.get_rocket_count(force_name)
|
||||
local milestone_data = {}
|
||||
|
||||
for _,milestone in ipairs(config.milestones) do
|
||||
if milestone <= force_rockets then
|
||||
local time = Rockets.get_rocket_time(force_name,milestone)
|
||||
table.insert(milestone_data,{
|
||||
name = 'milestone-n',
|
||||
subname = milestone,
|
||||
value = time_formats.caption_hours(time),
|
||||
tooltip = time_formats.tooltip_hours(time)
|
||||
})
|
||||
else
|
||||
table.insert(milestone_data,{
|
||||
name = 'milestone-n',
|
||||
subname = milestone,
|
||||
value = {'rocket-info.data-caption-milestone-next'},
|
||||
tooltip = {'rocket-info.data-tooltip-milestone-next'}
|
||||
})
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
return milestone_data
|
||||
end
|
||||
|
||||
-- Button to toggle a section dropdown
|
||||
-- @element toggle_section
|
||||
local toggle_section =
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--[[-- Gui Module - Task List
|
||||
- Adds a task list to the game which players can add remove and edit items on
|
||||
- Adds a task list to the game which players can add, remove and edit items on
|
||||
@gui Task-List
|
||||
@alias task_list
|
||||
]]
|
||||
|
||||
@@ -79,7 +79,7 @@ Gui.element{
|
||||
style = 'tool_button'
|
||||
}
|
||||
:style(Styles.sprite20)
|
||||
:on_click(function(player,element)
|
||||
:on_click(function(player,_)
|
||||
-- Add the new warp
|
||||
local force_name = player.force.name
|
||||
local surface = player.surface
|
||||
@@ -263,6 +263,7 @@ Gui.element(function(event_trigger,parent,warp)
|
||||
end)
|
||||
:style(Styles.sprite32)
|
||||
:on_click(function(player,element,_)
|
||||
if element.type == 'choose-elem-button' then return end
|
||||
local warp_id = element.parent.caption
|
||||
Warps.teleport_player(warp_id,player)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user