mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-08-13 00:45:11 +09:00
Fix rocket info silo pruning and unit number keys
The prune loop shadowed its own parameter, so `silo_data[unit_number] = nil` wrote into the entry instead of removing it from the table. `unit_number` is optional on LuaEntity but always set for a silo. Note that `--[[ @as ]]` does not narrow for an index expression, only `@cast` does. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -404,9 +404,9 @@ end
|
|||||||
--- @return ExpGui_RocketInfo.elements.progress_table.row_data[]
|
--- @return ExpGui_RocketInfo.elements.progress_table.row_data[]
|
||||||
function Elements.progress_table.calculate_row_data_all(silo_data)
|
function Elements.progress_table.calculate_row_data_all(silo_data)
|
||||||
local row_data = {}
|
local row_data = {}
|
||||||
for unit_number, silo_data in pairs(silo_data) do
|
for unit_number, silo in pairs(silo_data) do
|
||||||
if silo_data.entity.valid then
|
if silo.entity.valid then
|
||||||
row_data[unit_number] = Elements.progress_table.calculate_row_data(silo_data)
|
row_data[unit_number] = Elements.progress_table.calculate_row_data(silo)
|
||||||
else
|
else
|
||||||
-- Prune silos that are no longer valid
|
-- Prune silos that are no longer valid
|
||||||
silo_data[unit_number] = nil
|
silo_data[unit_number] = nil
|
||||||
@@ -433,7 +433,9 @@ function Elements.progress_table.add_row(progress_table, row_data)
|
|||||||
progress.style.padding = { 0, 2 }
|
progress.style.padding = { 0, 2 }
|
||||||
progress.style.font_color = row_data.color
|
progress.style.font_color = row_data.color
|
||||||
|
|
||||||
rows[row_data.entity.unit_number] = { x = x, y = y, progress = progress }
|
local unit_number = row_data.entity.unit_number
|
||||||
|
--- @cast unit_number uint
|
||||||
|
rows[unit_number] = { x = x, y = y, progress = progress }
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Remove a silo row from the progress table
|
--- Remove a silo row from the progress table
|
||||||
@@ -455,7 +457,9 @@ end
|
|||||||
--- @param row_data ExpGui_RocketInfo.elements.progress_table.row_data
|
--- @param row_data ExpGui_RocketInfo.elements.progress_table.row_data
|
||||||
function Elements.progress_table.refresh_row(progress_table, row_data)
|
function Elements.progress_table.refresh_row(progress_table, row_data)
|
||||||
local element_data = Elements.progress_table.data[progress_table]
|
local element_data = Elements.progress_table.data[progress_table]
|
||||||
local row = element_data.rows[row_data.entity.unit_number]
|
local unit_number = row_data.entity.unit_number
|
||||||
|
--- @cast unit_number uint
|
||||||
|
local row = element_data.rows[unit_number]
|
||||||
row.x.caption = row_data.x
|
row.x.caption = row_data.x
|
||||||
row.y.caption = row_data.y
|
row.y.caption = row_data.y
|
||||||
row.progress.caption = row_data.caption
|
row.progress.caption = row_data.caption
|
||||||
@@ -620,7 +624,9 @@ end
|
|||||||
function Elements.container.add_silo(entity)
|
function Elements.container.add_silo(entity)
|
||||||
local force = entity.force --[[ @as LuaForce ]]
|
local force = entity.force --[[ @as LuaForce ]]
|
||||||
local silos = Elements.container._get_force_data(force).silos
|
local silos = Elements.container._get_force_data(force).silos
|
||||||
silos[entity.unit_number] = {
|
local unit_number = entity.unit_number
|
||||||
|
--- @cast unit_number uint
|
||||||
|
silos[unit_number] = {
|
||||||
entity = entity,
|
entity = entity,
|
||||||
launched = 0,
|
launched = 0,
|
||||||
awaiting_reset = false,
|
awaiting_reset = false,
|
||||||
@@ -632,7 +638,9 @@ end
|
|||||||
function Elements.container.increment_silo(entity)
|
function Elements.container.increment_silo(entity)
|
||||||
local force = entity.force --[[ @as LuaForce ]]
|
local force = entity.force --[[ @as LuaForce ]]
|
||||||
local silos = Elements.container._get_force_data(force).silos
|
local silos = Elements.container._get_force_data(force).silos
|
||||||
local silo_data = silos[entity.unit_number]
|
local unit_number = entity.unit_number
|
||||||
|
--- @cast unit_number uint
|
||||||
|
local silo_data = silos[unit_number]
|
||||||
if not silo_data then return end
|
if not silo_data then return end
|
||||||
silo_data.launched = silo_data.launched + 1
|
silo_data.launched = silo_data.launched + 1
|
||||||
silo_data.awaiting_reset = true
|
silo_data.awaiting_reset = true
|
||||||
@@ -653,7 +661,8 @@ Gui.toolbar.create_button{
|
|||||||
--- Record the launch and update the stats when a cargo pod finishes ascending
|
--- Record the launch and update the stats when a cargo pod finishes ascending
|
||||||
--- @param event EventData.on_cargo_pod_finished_ascending
|
--- @param event EventData.on_cargo_pod_finished_ascending
|
||||||
local function on_cargo_pod_finished_ascending(event)
|
local function on_cargo_pod_finished_ascending(event)
|
||||||
local force = event.cargo_pod.force --[[ @as LuaForce ]]
|
local force = event.cargo_pod.force
|
||||||
|
--- @cast force LuaForce
|
||||||
local rockets_launched = force.rockets_launched
|
local rockets_launched = force.rockets_launched
|
||||||
|
|
||||||
-- Update the launch stats for the force
|
-- Update the launch stats for the force
|
||||||
@@ -669,6 +678,7 @@ local function on_cargo_pod_finished_ascending(event)
|
|||||||
|
|
||||||
-- Append the launch tick into the times array
|
-- Append the launch tick into the times array
|
||||||
local times = Elements.container.get_launch_times(force)
|
local times = Elements.container.get_launch_times(force)
|
||||||
|
--- @cast rockets_launched uint
|
||||||
times[rockets_launched] = event.tick
|
times[rockets_launched] = event.tick
|
||||||
|
|
||||||
-- Discard the launch time that is no longer needed by any rolling average unless it is a milestone
|
-- Discard the launch time that is no longer needed by any rolling average unless it is a milestone
|
||||||
|
|||||||
Reference in New Issue
Block a user