From 17d07ac228a95d3ca6fb0c7158a613b72accc53e Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 05:07:20 +0900 Subject: [PATCH 01/14] addon module inserter gui --- config/_file_loader.lua | 2 +- config/expcore/roles.lua | 3 +- config/module.lua | 20 +++ modules/gui/module.lua | 267 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 290 insertions(+), 2 deletions(-) create mode 100644 config/module.lua create mode 100644 modules/gui/module.lua diff --git a/config/_file_loader.lua b/config/_file_loader.lua index 32ce6fac..16ec66d8 100644 --- a/config/_file_loader.lua +++ b/config/_file_loader.lua @@ -91,7 +91,7 @@ return { 'modules.gui.server-ups', 'modules.gui.vlayer', 'modules.gui.research', - + 'modules.gui.module', 'modules.graftorio.require', -- graftorio --- Config Files diff --git a/config/expcore/roles.lua b/config/expcore/roles.lua index cc942655..3c8efabf 100644 --- a/config/expcore/roles.lua +++ b/config/expcore/roles.lua @@ -282,7 +282,8 @@ local default = Roles.new_role('Guest','') 'gui/warp-list', 'gui/readme', 'gui/vlayer', - 'gui/research' + 'gui/research', + 'gui/module' } --- Jail role diff --git a/config/module.lua b/config/module.lua new file mode 100644 index 00000000..953b1b3d --- /dev/null +++ b/config/module.lua @@ -0,0 +1,20 @@ +return { + -- type of machine to handle together + module_row = 4, + module_slot_max = 4, + machine_prod_disallow = { + ['beacon'] = true + }, + machine = { + ['electric-mining-drill'] = 'effectivity-module', + ['assembling-machine-2'] = 'productivity-module', + ['assembling-machine-3'] = 'productivity-module-3', + ['electric-furnace'] = 'productivity-module-3', + ['beacon'] = 'speed-module-3', + ['oil-refinery'] = 'productivity-module-3', + ['chemical-plant'] = 'productivity-module-3', + ['centrifuge'] = 'productivity-module-3', + ['lab'] = 'productivity-module-3', + ['rocket-silo'] = 'productivity-module-3' + } +} \ No newline at end of file diff --git a/modules/gui/module.lua b/modules/gui/module.lua new file mode 100644 index 00000000..f6f05b8c --- /dev/null +++ b/modules/gui/module.lua @@ -0,0 +1,267 @@ +---- module inserter +-- @addon module + +local Gui = require 'expcore.gui' --- @dep expcore.gui +local Event = require 'utils.event' --- @dep utils.event +local Roles = require 'expcore.roles' --- @dep expcore.roles +local config = require 'config.module' --- @dep config.module +local Selection = require 'modules.control.selection' --- @dep modules.control.selection +local SelectionModuleArea = 'ModuleArea' + +--[[ +for some reason this dont work + +local module_allowed = {} + +for _, r in pairs(game.item_prototypes['productivity-module'].limitations) do + module_allowed[r] = true +end +]] + +--- align an aabb to the grid by expanding it +local function aabb_align_expand(aabb) + return { + left_top = {x = math.floor(aabb.left_top.x), y = math.floor(aabb.left_top.y)}, + right_bottom = {x = math.ceil(aabb.right_bottom.x), y = math.ceil(aabb.right_bottom.y)} + } +end + +local module_container + +local machine_name = {} + +for k, _ in pairs(config.machine) do + table.insert(machine_name, k) +end + +local module_allowed = { + ['advanced-circuit'] = true, + ['automation-science-pack'] = true, + ['battery'] = true, + ['chemical-science-pack'] = true, + ['copper-cable'] = true, + ['copper-plate'] = true, + ['electric-engine-unit'] = true, + ['electronic-circuit'] = true, + ['empty-barrel'] = true, + ['engine-unit'] = true, + ['explosives'] = true, + ['flying-robot-frame'] = true, + ['iron-gear-wheel'] = true, + ['iron-plate'] = true, + ['iron-stick'] = true, + ['logistic-science-pack'] = true, + ['low-density-structure'] = true, + ['lubricant'] = true, + ['military-science-pack'] = true, + ['nuclear-fuel'] = true, + ['plastic-bar'] = true, + ['processing-unit'] = true, + ['production-science-pack'] = true, + ['rocket-control-unit'] = true, + ['rocket-fuel'] = true, + ['rocket-part'] = true, + ['steel-plate'] = true, + ['stone-brick'] = true, + ['sulfur'] = true, + ['sulfuric-acid'] = true, + ['uranium-fuel-cell'] = true, + ['utility-science-pack'] = true, + ['basic-oil-processing'] = true, + ['advanced-oil-processing'] = true, + ['coal-liquefaction'] = true, + ['heavy-oil-cracking'] = true, + ['light-oil-cracking'] = true, + ['solid-fuel-from-light-oil'] = true, + ['solid-fuel-from-petroleum-gas'] = true, + ['solid-fuel-from-heavy-oil'] = true, + ['uranium-processing'] = true, + ['nuclear-fuel-reprocessing'] = true, + ['kovarex-enrichment-process'] = true +} + +local elem_filter = { + name = {{ + filter = 'name', + name = machine_name + }}, + normal = {{ + filter = 'type', + type = 'module' + }}, + prod = {{ + filter = 'type', + type = 'module' + }, { + filter = 'name', + name = 'productivity', + invert = true + }} +} + +local function clear_module(player, area, machine) + for _, entity in pairs(player.surface.find_entities_filtered{area=area, name=machine, force=player.force}) do + for _, r in pairs(player.surface.find_entities_filtered{position=entity.position, name='item-request-proxy', force=player.force}) do + if r ~= nil then + r.destroy{raise_destroy=true} + end + end + + local m_current_module = entity.get_module_inventory() + + if m_current_module ~= nil then + local m_current_module_content = m_current_module.get_contents() + + if m_current_module_content ~= nil then + for k, m in pairs(m_current_module_content) do + player.surface.spill_item_stack(entity.bounding_box.left_top, {name=k, count=m}, true, player.force, false) + end + end + + m_current_module.clear() + end + end +end + +local function apply_module(player, area, machine, module) + for _, entity in pairs(player.surface.find_entities_filtered{area=area, name=machine, force=player.force}) do + local m_current_recipe = entity.get_recipe() + + -- insert + if m_current_recipe ~= nil then + if module_allowed[m_current_recipe.name] ~= nil then + if module_allowed[m_current_recipe.name] then + entity.surface.create_entity{name='item-request-proxy', target=entity, position=entity.position, force=entity.force, modules=module} + end + end + else + entity.surface.create_entity{name='item-request-proxy', target=entity, position=entity.position, force=entity.force, modules=module} + end + end +end + +--- when an area is selected to add protection to the area +Selection.on_selection(SelectionModuleArea, function(event) + local area = aabb_align_expand(event.area) + local player = game.get_player(event.player_index) + + if player == nil then + return + end + + local frame = Gui.get_left_element(player, module_container) + + for i=1, config.module_row do + local m_machine = frame.container.scroll.table['module_mm_' .. i .. '_0'].elem_value + + if m_machine ~= nil then + local m_module = {} + + for j=1, config.module_slot_max do + local mmo = frame.container.scroll.table['module_mm_' .. i .. '_' .. j].elem_value + + if mmo ~= nil then + if m_module[mmo] == nil then + m_module[mmo] = 1 + else + m_module[mmo] = m_module[mmo] + 1 + end + end + end + + if m_module ~= nil then + clear_module(player, area, m_machine) + apply_module(player, area, m_machine, m_module) + end + end + end +end) + +local function row_set(player, element) + local name = element.name:sub(1, -1 - math.floor(math.log(config.module_slot_max))) + + if element.elem_value ~= nil then + local frame = Gui.get_left_element(player, module_container) + + for i=1, config.module_slot_max do + if i <= game.entity_prototypes[element.elem_value].module_inventory_size then + frame.container.scroll.table[name .. i].enabled = true + frame.container.scroll.table[name .. i].elem_value = config.machine[element.elem_value] + else + frame.container.scroll.table[name .. i].enabled = false + frame.container.scroll.table[name .. i].elem_value = nil + end + frame.container.scroll.table[name .. i].elem_filters = elem_filter.normal + end + else + local frame = Gui.get_left_element(player, module_container) + local mf = elem_filter.normal + + if config.machine_prod_disallow[element.elem_value] ~= nil then + if config.machine_prod_disallow[element.elem_value] then + mf = elem_filter.prod + end + end + + for i=1, config.module_slot_max do + frame.container.scroll.table[name .. i].enabled = true + frame.container.scroll.table[name .. i].elem_filters = mf + frame.container.scroll.table[name .. i].elem_value = nil + end + end +end + +Event.add(defines.events.on_gui_elem_changed, function(event) + row_set(game.players[event.player_index], event.element) +end) + +local button_apply = +Gui.element{ + name = 'module_b', + type = 'button', + caption = 'Apply', + style = 'button' +}:on_click(function(player) + if Selection.is_selecting(player, SelectionModuleArea) then + Selection.stop(player) + else + Selection.start(player, SelectionModuleArea) + end +end) + +module_container = +Gui.element(function(event_trigger, parent) + local container = Gui.container(parent, event_trigger, (config.module_slot_max + 2) * 36) + Gui.header(container, 'Module Inserter', '', true) + + local scroll_table = Gui.scroll_table(container, (config.module_slot_max + 2) * 36, config.module_slot_max + 1) + + for i=1, config.module_row do + scroll_table.add{ + name = 'module_mm_' .. i .. '_0', + type = 'choose-elem-button', + elem_type = 'entity', + elem_filters = elem_filter.name, + style = 'slot_button' + } + + for j=1, config.module_slot_max do + scroll_table.add{ + name = 'module_mm_' .. i .. '_' .. j, + type = 'choose-elem-button', + elem_type = 'item', + elem_filters = elem_filter.normal, + style = 'slot_button' + } + end + end + + button_apply(container) + + return container.parent +end) +:add_to_left_flow() + +Gui.left_toolbar_button('item/productivity-module-3', {'module.main-tooltip'}, module_container, function(player) + return Roles.player_allowed(player, 'gui/module') +end) From 0df9aacd1abd6e17b0421d8e7a2d60f2e2024128 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 05:25:38 +0900 Subject: [PATCH 02/14] module gui locale --- locale/en/gui.cfg | 3 +++ locale/zh-CN/gui.cfg | 3 +++ locale/zh-TW/gui.cfg | 3 +++ 3 files changed, 9 insertions(+) diff --git a/locale/en/gui.cfg b/locale/en/gui.cfg index 623fbbbd..9505fcb2 100644 --- a/locale/en/gui.cfg +++ b/locale/en/gui.cfg @@ -211,3 +211,6 @@ toggle-msg=Fast decon has been __1__ [vlayer] main-tooltip=Enable vlayer GUI + +[module] +main-tooltip=Enable Module GUI diff --git a/locale/zh-CN/gui.cfg b/locale/zh-CN/gui.cfg index dc242759..e7b00aaf 100644 --- a/locale/zh-CN/gui.cfg +++ b/locale/zh-CN/gui.cfg @@ -211,3 +211,6 @@ toggle-msg=樹木快速拆除已 __1__ [vlayer] main-tooltip=Enable vlayer GUI + +[module] +main-tooltip=Enable Module GUI diff --git a/locale/zh-TW/gui.cfg b/locale/zh-TW/gui.cfg index dc242759..e7b00aaf 100644 --- a/locale/zh-TW/gui.cfg +++ b/locale/zh-TW/gui.cfg @@ -211,3 +211,6 @@ toggle-msg=樹木快速拆除已 __1__ [vlayer] main-tooltip=Enable vlayer GUI + +[module] +main-tooltip=Enable Module GUI From 3616efd4f0457df22794bcc437ad553df3aa0f8f Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 15:28:38 +0900 Subject: [PATCH 03/14] fix --- config/module.lua | 2 +- modules/gui/module.lua | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/config/module.lua b/config/module.lua index 953b1b3d..10857f16 100644 --- a/config/module.lua +++ b/config/module.lua @@ -1,6 +1,6 @@ return { -- type of machine to handle together - module_row = 4, + default_module_row = 4, module_slot_max = 4, machine_prod_disallow = { ['beacon'] = true diff --git a/modules/gui/module.lua b/modules/gui/module.lua index f6f05b8c..e09e835d 100644 --- a/modules/gui/module.lua +++ b/modules/gui/module.lua @@ -151,7 +151,7 @@ Selection.on_selection(SelectionModuleArea, function(event) local frame = Gui.get_left_element(player, module_container) - for i=1, config.module_row do + for i=1, config.default_module_row do local m_machine = frame.container.scroll.table['module_mm_' .. i .. '_0'].elem_value if m_machine ~= nil then @@ -211,10 +211,6 @@ local function row_set(player, element) end end -Event.add(defines.events.on_gui_elem_changed, function(event) - row_set(game.players[event.player_index], event.element) -end) - local button_apply = Gui.element{ name = 'module_b', @@ -236,7 +232,7 @@ Gui.element(function(event_trigger, parent) local scroll_table = Gui.scroll_table(container, (config.module_slot_max + 2) * 36, config.module_slot_max + 1) - for i=1, config.module_row do + for i=1, config.default_module_row do scroll_table.add{ name = 'module_mm_' .. i .. '_0', type = 'choose-elem-button', @@ -244,7 +240,10 @@ Gui.element(function(event_trigger, parent) elem_filters = elem_filter.name, style = 'slot_button' } - + --[[:on_elem_changed(function(player, element) + row_set(player, element) + end) + ]] for j=1, config.module_slot_max do scroll_table.add{ name = 'module_mm_' .. i .. '_' .. j, From 1afac80c0d8f87098ca727daa1590f8fc5e28d8f Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 21:23:23 +0900 Subject: [PATCH 04/14] 2nd cmd of personal logistics. also for spidertron --- modules/data/personal-logistic.lua | 63 ++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/modules/data/personal-logistic.lua b/modules/data/personal-logistic.lua index 2ea28e95..a1159e69 100644 --- a/modules/data/personal-logistic.lua +++ b/modules/data/personal-logistic.lua @@ -1,30 +1,40 @@ local Commands = require 'expcore.commands' --- @dep expcore.commands local config = require 'config.personal_logistic' --- @dep config.personal-logistic ---[[ -Command 2: -add filter based of inventory +local function pl(type, target, amount) + local c + local s -Command 3: -add filter of those not in inventory: all 0 -game.item_prototypes + if type == 'p' then + c = target.clear_personal_logistic_slot + s = target.set_personal_logistic_slot -Command 4: -Spidertron request -]] + elseif type == 's' then + c = target.clear_vehicle_logistic_slot + s = target.set_vehicle_logistic_slot -local function pl(player, amount) - local c = player.clear_personal_logistic_slot + elseif type == 'c' then + c = target.clear_personal_logistic_slot + s = target.set_personal_logistic_slot - for k, v in pairs(config.request) do + for k, v in pairs(config.request) do + c(config.start + v.key) + s(config.start + v.key, {name=k, min=0, max=0}) + end + + return + else + return + end + + for _, v in pairs(config.request) do c(config.start + v.key) end if (amount == 0) then return else - local stats = player.force.item_production_statistics - local s = player.set_personal_logistic_slot + local stats = target.force.item_production_statistics for k, v in pairs(config.request) do local v_min = math.ceil(v.min * amount) @@ -63,12 +73,33 @@ local function pl(player, amount) end end -Commands.new_command('personal-logistic', 'Set Personal Logistic (0 to cancel all)') +Commands.new_command('personal-logistic', 'Set Personal Logistic (0 to cancel all) (Select spidertron to edit spidertron)') :add_param('amount', 'integer-range', 0, 10) :add_alias('pl') :register(function(player, amount) if player.force.technologies['logistic-robotics'].researched then - pl(player, amount / 10) + if player.selected ~= nil then + if player.selected.name ~= nil then + if player.selected.name == 'spidertron' then + pl('s', player.selected, amount / 10) + return Commands.success + end + end + else + pl('p', player, amount / 10) + return Commands.success + end + else + player.print('Player logistic not researched') + end +end) + + +Commands.new_command('personal-logistic-empty', 'Set Personal Logistic to All 0') +:add_alias('ple') +:register(function(player, amount) + if player.force.technologies['logistic-robotics'].researched then + pl('c', player, 0) return Commands.success else player.print('Player logistic not researched') From 6d85a2bf6710882268f8d4e172464103d750e052 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 21:24:58 +0900 Subject: [PATCH 05/14] role --- config/expcore/roles.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/config/expcore/roles.lua b/config/expcore/roles.lua index 2c320fc5..00f849f9 100644 --- a/config/expcore/roles.lua +++ b/config/expcore/roles.lua @@ -229,6 +229,7 @@ Roles.new_role('Member','Mem') 'command/save-quickbar', 'gui/vlayer-edit', 'command/personal-logistic', + 'command/personal-logistic-empty', 'command/auto-research', 'command/manual-train', 'command/lawnmower' From d170c9eee8946d327e1ed8dcd58e389dbb8618e7 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 23:07:12 +0900 Subject: [PATCH 06/14] remove parameter of ple --- modules/data/personal-logistic.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/data/personal-logistic.lua b/modules/data/personal-logistic.lua index a1159e69..f3825109 100644 --- a/modules/data/personal-logistic.lua +++ b/modules/data/personal-logistic.lua @@ -97,7 +97,7 @@ end) Commands.new_command('personal-logistic-empty', 'Set Personal Logistic to All 0') :add_alias('ple') -:register(function(player, amount) +:register(function(player) if player.force.technologies['logistic-robotics'].researched then pl('c', player, 0) return Commands.success From 2e06198dcfe6497230e9f8c91e95b828d7b7daca Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sat, 23 Sep 2023 23:07:35 +0900 Subject: [PATCH 07/14] . --- modules/data/personal-logistic.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/data/personal-logistic.lua b/modules/data/personal-logistic.lua index f3825109..e1b89711 100644 --- a/modules/data/personal-logistic.lua +++ b/modules/data/personal-logistic.lua @@ -94,7 +94,6 @@ Commands.new_command('personal-logistic', 'Set Personal Logistic (0 to cancel al end end) - Commands.new_command('personal-logistic-empty', 'Set Personal Logistic to All 0') :add_alias('ple') :register(function(player) From 75b3618be36de4a4bd334c6496e29c763ebb8aec Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sun, 24 Sep 2023 02:46:50 +0900 Subject: [PATCH 08/14] fix --- config/expcore/roles.lua | 1 - modules/data/personal-logistic.lua | 29 +++-------------------------- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/config/expcore/roles.lua b/config/expcore/roles.lua index 00f849f9..2c320fc5 100644 --- a/config/expcore/roles.lua +++ b/config/expcore/roles.lua @@ -229,7 +229,6 @@ Roles.new_role('Member','Mem') 'command/save-quickbar', 'gui/vlayer-edit', 'command/personal-logistic', - 'command/personal-logistic-empty', 'command/auto-research', 'command/manual-train', 'command/lawnmower' diff --git a/modules/data/personal-logistic.lua b/modules/data/personal-logistic.lua index e1b89711..cfe95314 100644 --- a/modules/data/personal-logistic.lua +++ b/modules/data/personal-logistic.lua @@ -13,16 +13,6 @@ local function pl(type, target, amount) c = target.clear_vehicle_logistic_slot s = target.set_vehicle_logistic_slot - elseif type == 'c' then - c = target.clear_personal_logistic_slot - s = target.set_personal_logistic_slot - - for k, v in pairs(config.request) do - c(config.start + v.key) - s(config.start + v.key, {name=k, min=0, max=0}) - end - - return else return end @@ -79,11 +69,9 @@ Commands.new_command('personal-logistic', 'Set Personal Logistic (0 to cancel al :register(function(player, amount) if player.force.technologies['logistic-robotics'].researched then if player.selected ~= nil then - if player.selected.name ~= nil then - if player.selected.name == 'spidertron' then - pl('s', player.selected, amount / 10) - return Commands.success - end + if player.selected.name == 'spidertron' then + pl('s', player.selected, amount / 10) + return Commands.success end else pl('p', player, amount / 10) @@ -93,14 +81,3 @@ Commands.new_command('personal-logistic', 'Set Personal Logistic (0 to cancel al player.print('Player logistic not researched') end end) - -Commands.new_command('personal-logistic-empty', 'Set Personal Logistic to All 0') -:add_alias('ple') -:register(function(player) - if player.force.technologies['logistic-robotics'].researched then - pl('c', player, 0) - return Commands.success - else - player.print('Player logistic not researched') - end -end) From 6e9a64e88aac8f86cd274ee535c885101403f19c Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sun, 24 Sep 2023 05:20:13 +0900 Subject: [PATCH 09/14] gui event --- config/module.lua | 2 +- modules/gui/module.lua | 61 +++++++++++++++++++++--------------------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/config/module.lua b/config/module.lua index 10857f16..cb776990 100644 --- a/config/module.lua +++ b/config/module.lua @@ -1,6 +1,6 @@ return { -- type of machine to handle together - default_module_row = 4, + default_module_row_count = 4, module_slot_max = 4, machine_prod_disallow = { ['beacon'] = true diff --git a/modules/gui/module.lua b/modules/gui/module.lua index e09e835d..2ec7c47d 100644 --- a/modules/gui/module.lua +++ b/modules/gui/module.lua @@ -8,16 +8,6 @@ local config = require 'config.module' --- @dep config.module local Selection = require 'modules.control.selection' --- @dep modules.control.selection local SelectionModuleArea = 'ModuleArea' ---[[ -for some reason this dont work - -local module_allowed = {} - -for _, r in pairs(game.item_prototypes['productivity-module'].limitations) do - module_allowed[r] = true -end -]] - --- align an aabb to the grid by expanding it local function aabb_align_expand(aabb) return { @@ -34,6 +24,14 @@ for k, _ in pairs(config.machine) do table.insert(machine_name, k) end +--[[ +local module_allowed = {} + +for _, r in pairs(game.item_prototypes['productivity-module'].limitations) do + module_allowed[r] = true +end +]] + local module_allowed = { ['advanced-circuit'] = true, ['automation-science-pack'] = true, @@ -151,7 +149,7 @@ Selection.on_selection(SelectionModuleArea, function(event) local frame = Gui.get_left_element(player, module_container) - for i=1, config.default_module_row do + for i=1, config.default_module_row_count do local m_machine = frame.container.scroll.table['module_mm_' .. i .. '_0'].elem_value if m_machine ~= nil then @@ -178,23 +176,20 @@ Selection.on_selection(SelectionModuleArea, function(event) end) local function row_set(player, element) - local name = element.name:sub(1, -1 - math.floor(math.log(config.module_slot_max))) - - if element.elem_value ~= nil then - local frame = Gui.get_left_element(player, module_container) + local frame = Gui.get_left_element(player, module_container) + if frame.container.scroll.table[element .. '0'].elem_value ~= nil then for i=1, config.module_slot_max do - if i <= game.entity_prototypes[element.elem_value].module_inventory_size then - frame.container.scroll.table[name .. i].enabled = true - frame.container.scroll.table[name .. i].elem_value = config.machine[element.elem_value] + if i <= game.entity_prototypes[frame.container.scroll.table[element .. '0'].elem_value].module_inventory_size then + frame.container.scroll.table[element .. i].enabled = true + frame.container.scroll.table[element .. i].elem_value = config.machine[frame.container.scroll.table[element .. '0'].elem_value] else - frame.container.scroll.table[name .. i].enabled = false - frame.container.scroll.table[name .. i].elem_value = nil + frame.container.scroll.table[element .. i].enabled = false + frame.container.scroll.table[element .. i].elem_value = nil end - frame.container.scroll.table[name .. i].elem_filters = elem_filter.normal + frame.container.scroll.table[element .. i].elem_filters = elem_filter.normal end else - local frame = Gui.get_left_element(player, module_container) local mf = elem_filter.normal if config.machine_prod_disallow[element.elem_value] ~= nil then @@ -204,9 +199,9 @@ local function row_set(player, element) end for i=1, config.module_slot_max do - frame.container.scroll.table[name .. i].enabled = true - frame.container.scroll.table[name .. i].elem_filters = mf - frame.container.scroll.table[name .. i].elem_value = nil + frame.container.scroll.table[element .. i].enabled = true + frame.container.scroll.table[element .. i].elem_filters = mf + frame.container.scroll.table[element .. i].elem_value = nil end end end @@ -232,7 +227,7 @@ Gui.element(function(event_trigger, parent) local scroll_table = Gui.scroll_table(container, (config.module_slot_max + 2) * 36, config.module_slot_max + 1) - for i=1, config.default_module_row do + for i=1, config.default_module_row_count do scroll_table.add{ name = 'module_mm_' .. i .. '_0', type = 'choose-elem-button', @@ -240,10 +235,7 @@ Gui.element(function(event_trigger, parent) elem_filters = elem_filter.name, style = 'slot_button' } - --[[:on_elem_changed(function(player, element) - row_set(player, element) - end) - ]] + for j=1, config.module_slot_max do scroll_table.add{ name = 'module_mm_' .. i .. '_' .. j, @@ -264,3 +256,12 @@ end) Gui.left_toolbar_button('item/productivity-module-3', {'module.main-tooltip'}, module_container, function(player) return Roles.player_allowed(player, 'gui/module') end) + + +Event.add(defines.events.on_gui_elem_changed, function(event) + if event.element.name:sub(1, 10) == 'module_mm_' then + if event.element.name:sub(-1) == '0' then + row_set(game.players[event.player_index], 'module_mm_' .. event.element.name:sub(-3):sub(1, 1) .. '_') + end + end +end) From 2381c664b8fda2442f248e543166f089062a3bd0 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Sun, 24 Sep 2023 18:15:48 +0900 Subject: [PATCH 10/14] remove extra line --- modules/gui/module.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/gui/module.lua b/modules/gui/module.lua index 2ec7c47d..760ea015 100644 --- a/modules/gui/module.lua +++ b/modules/gui/module.lua @@ -257,7 +257,6 @@ Gui.left_toolbar_button('item/productivity-module-3', {'module.main-tooltip'}, m return Roles.player_allowed(player, 'gui/module') end) - Event.add(defines.events.on_gui_elem_changed, function(event) if event.element.name:sub(1, 10) == 'module_mm_' then if event.element.name:sub(-1) == '0' then From 40d409dabd437b5737ed72aa8185b7ec990b35b1 Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Mon, 25 Sep 2023 14:21:44 +0900 Subject: [PATCH 11/14] ignore alt mode of decon event in log --- modules/addons/deconlog.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/addons/deconlog.lua b/modules/addons/deconlog.lua index b44d5416..77496689 100644 --- a/modules/addons/deconlog.lua +++ b/modules/addons/deconlog.lua @@ -39,6 +39,10 @@ end) if config.decon_area then Event.add(defines.events.on_player_deconstructed_area, function (e) + if e.alt then + return + end + local player = game.get_player(e.player_index) if Roles.player_has_flag(player, "deconlog-bypass") then return From 90e629951089ea7483056c64cf880fe9a3ccccbd Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Mon, 25 Sep 2023 14:24:44 +0900 Subject: [PATCH 12/14] 2dp in gps display of message in decon log --- modules/addons/deconlog.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/addons/deconlog.lua b/modules/addons/deconlog.lua index 77496689..5d147921 100644 --- a/modules/addons/deconlog.lua +++ b/modules/addons/deconlog.lua @@ -21,7 +21,7 @@ local function pos_to_string(pos) end local function pos_to_gps_string(pos) - return '[gps=' .. tostring(pos.x) .. ',' .. tostring(pos.y) .. ']' + return '[gps=' .. string.format('%.1f', pos.x) .. ',' .. string.format('%.1f', pos.y) .. ']' end --- Print a message to all players who match the value of admin From b0827c7d3029c70875ab8ef8b69ef290f6a8c4bf Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Mon, 25 Sep 2023 21:20:19 +0900 Subject: [PATCH 13/14] format number of amount display --- modules/addons/deconlog.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/addons/deconlog.lua b/modules/addons/deconlog.lua index 5d147921..fda7371b 100644 --- a/modules/addons/deconlog.lua +++ b/modules/addons/deconlog.lua @@ -4,6 +4,7 @@ local Event = require 'utils.event' --- @dep utils.event local Roles = require 'expcore.roles' --- @dep expcore.roles local format_time = _C.format_time +local format_time = _C.format_time --- @dep expcore.common local config = require 'config.deconlog' --- @dep config.deconlog local filepath = "log/decon.log" @@ -51,7 +52,7 @@ if config.decon_area then local items = e.surface.find_entities_filtered{area=e.area, force=player.force} if #items > 250 then - print_to_players(true, player.name .. ' tried to deconstruct the area ' .. pos_to_gps_string(e.area.left_top) .. ' to ' .. pos_to_gps_string(e.area.right_bottom) .. ' that have ' .. #items .. ' items, but were not allowed.') + print_to_players(true, player.name .. ' tried to deconstruct the area ' .. pos_to_gps_string(e.area.left_top) .. ' to ' .. pos_to_gps_string(e.area.right_bottom) .. ' that have ' .. format_number(#items) .. ' items, but were not allowed.') end add_log(get_secs() .. "," .. player.name .. ",decon_area," .. pos_to_string(e.area.left_top) .. "," .. pos_to_string(e.area.right_bottom)) From c6b153b5ebd3202d47cee18dd6bc8fbfcf52166f Mon Sep 17 00:00:00 2001 From: PHIDIAS Date: Mon, 25 Sep 2023 23:20:41 +0900 Subject: [PATCH 14/14] fix --- modules/addons/deconlog.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/addons/deconlog.lua b/modules/addons/deconlog.lua index fda7371b..58f415f9 100644 --- a/modules/addons/deconlog.lua +++ b/modules/addons/deconlog.lua @@ -3,8 +3,8 @@ local Event = require 'utils.event' --- @dep utils.event local Roles = require 'expcore.roles' --- @dep expcore.roles -local format_time = _C.format_time local format_time = _C.format_time --- @dep expcore.common +local format_number = require('util').format_number --- @dep util local config = require 'config.deconlog' --- @dep config.deconlog local filepath = "log/decon.log"