From 6748a3fd4e8eac046b8b7a349131a90b5faeeca5 Mon Sep 17 00:00:00 2001 From: PennyJim Date: Mon, 9 Mar 2026 17:47:47 -0600 Subject: [PATCH] Fix a couple things that bother me --- src/control.lua | 10 +++------- src/core/labRenderers.lua | 25 ++++++++++++------------- src/core/researchColor.lua | 18 ++++++------------ 3 files changed, 21 insertions(+), 32 deletions(-) diff --git a/src/control.lua b/src/control.lua index a4bba38..7ac2e38 100644 --- a/src/control.lua +++ b/src/control.lua @@ -89,18 +89,14 @@ script.on_configuration_changed( ) script.on_event( - { - defines.events.on_script_trigger_effect - }, + defines.events.on_script_trigger_effect, function (event) labRenderers.addLab(event.target_entity) end ) script.on_event( - { - defines.events.on_object_destroyed - }, + defines.events.on_object_destroyed, function (event) if event.type ~= defines.target_type.entity then return end labRenderers.removeLab(event.useful_id) @@ -116,7 +112,7 @@ script.on_nth_tick( ) script.on_event( - {defines.events.on_tick}, + defines.events.on_tick, function (event) researchColor.validateIngredientColors() labColoring.updateRenderers(event, labRenderers, researchColor) diff --git a/src/core/labRenderers.lua b/src/core/labRenderers.lua index 95d0f1a..d986e05 100644 --- a/src/core/labRenderers.lua +++ b/src/core/labRenderers.lua @@ -36,7 +36,7 @@ labRenderers.createAnimation = function (entity) x_scale = scale, y_scale = scale, render_layer = "higher-object-under", - animation_offset = floor(random()*300), + animation_offset = random(300)-1, -- `random()` is [0,1), but `random(m)` is [1,m] visible = false, }) end @@ -50,18 +50,18 @@ labRenderers.isCompatibleLab = function (entity) end labRenderers.addLab = function (entity) - if not entity or not entity.valid then + if not entity or not entity.valid + or not labRenderers.isCompatibleLab(entity) then return end - if labRenderers.isCompatibleLab(entity) then - local labUnitNumber = entity.unit_number - if labRenderers.state.labs[labUnitNumber] then - return - end - labRenderers.state.labs[labUnitNumber] = entity - if not labRenderers.state.labAnimations[labUnitNumber] then - labRenderers.createAnimation(entity) - end + + local labUnitNumber = entity.unit_number + if labRenderers.state.labs[labUnitNumber] then + return + end + labRenderers.state.labs[labUnitNumber] = entity + if not labRenderers.state.labAnimations[labUnitNumber] then + labRenderers.createAnimation(entity) end script.register_on_object_destroyed(entity) end @@ -70,8 +70,7 @@ labRenderers.reloadLabs = function () labRenderers.state.labs = {} labRenderers.state.labAnimations = {} rendering.clear("DiscoScience") - for surfaceIndex in pairs(game.surfaces) do - local surface = game.get_surface(surfaceIndex) + for _, surface in pairs(game.surfaces) do for index, lab in ipairs(surface.find_entities_filtered({type = "lab"})) do labRenderers.addLab(lab) end diff --git a/src/core/researchColor.lua b/src/core/researchColor.lua index 42aa093..e440ba0 100644 --- a/src/core/researchColor.lua +++ b/src/core/researchColor.lua @@ -8,8 +8,6 @@ researchColor.defaultColors = { {r = 1.0, g = 0.0, b = 1.0} } researchColor.state = {} -researchColor.validated = false - researchColor.linkState = function (state) researchColor.state = state return state @@ -49,16 +47,11 @@ researchColor.validateIngredientColors = function() return end researchColor.state.validated = true - local techPrototypes = prototypes.get_technology_filtered({}) + local techPrototypes = prototypes.technology local notFound = {} for _, tech in pairs(techPrototypes) do for _, ingredient in pairs(tech.research_unit_ingredients) do - local found = false - for name, _ in pairs(researchColor.state.ingredientColors) do - if name == ingredient.name then - found = true - end - end + local found = researchColor.state.ingredientColors[ingredient.name] and true or false if not (found or notFound[ingredient.name]) then notFound[ingredient.name] = true end @@ -76,14 +69,15 @@ end researchColor.assembleColorsForResearch = function (tech) - local colors = {} + local colors, colorCount = {}, 0 for index, ingredient in pairs(tech.research_unit_ingredients) do local ingredientColor = researchColor.state.ingredientColors[ingredient.name] if ingredientColor then - colors[#colors + 1] = ingredientColor + colorCount = colorCount + 1 + colors[colorCount] = ingredientColor end end - if #colors == 0 then + if colorCount == 0 then colors = researchColor.defaultColors end return colors