···9494 },
9595 "handlers": [
9696 {
9797- "code": "--[[\n\treceivers channels for each type of machine\n]]\n\nlocal version = \"RC 2.0.0 - update 2\"\n\nsystem.print(\"==================================================\")\nlocal print_version_str = \"\"\nlocal print_version_number = math.ceil((50-#version-2)/2)\nfor i=1, print_version_number, 1 do print_version_str = print_version_str .. '=' end\nprint_version_str = print_version_str .. \" \" .. version .. \" \"\nfor i=1, print_version_number, 1 do print_version_str = print_version_str .. '=' end\nsystem.print(print_version_str)\nsystem.print(\"==================================================\")\n\nchannel_for_refiner = \"receiver_refiner\" --export: receiver channel to send orders to refiners\nchannel_for_assembly = \"receiver_assembly\" --export: receiver channel to send orders to assembly lines\nchannel_for_smelter = \"receiver_smelters\" --export: receiver channel to send orders to smelters\nchannel_for_chemical = \"receiver_chemical\" --export: receiver channel to send orders to chemical indutries\nchannel_for_electronics = \"receiver_electronics\" --export: receiver channel to send orders to electronic industries\nchannel_for_glass = \"receiver_glass\" --export: receiver channel to send orders to glass furnace\nchannel_for_honeycomb = \"receiver_honeycomb_recycler\" --export: receiver channel to send orders to honeycomb refiniries\nchannel_for_recycler = \"receiver_honeycomb_recycler\" --export: receiver channel to send orders to recylers\nchannel_for_metalwork = \"receiver_metalworks\" --export: receiver channel to send orders to metalworks\nchannel_for_3d_printer = \"receiver_3dprinters\" --export: receiver channel to send orders to 3d printers\nchannel_for_transfer = \"receiver_transfert\" --export: receiver channel to send orders to tranfer units\n\ncontainer_proficiency_lvl = 0 ---export: Talent level for Container Proficiency\ncontainer_fill_red_level = 10 ---export: The percent fill below gauge will be red\ncontainer_fill_yellow_level = 50 ---export: The percent fill below gauge will be yellow\n\nenableRefinerMonitoring = true --export: enable or disable the Refiners monitoring\nenableAssemblyMonitoring = true --export: enable or disable the Assembly lines monitoring\nenableSmelterMonitoring = true --export: enable or disable the Smelters monitoring\nenableChemicalMonitoring = true --export: enable or disable the Chemical industries monitoring\nenableElectronicsMonitoring = true --export: enable or disable the Electronics Industries monitoring\nenableGlassMonitoring = true --export: enable or disable the Glass Furnace monitoring\nenableHoneycombMonitoring = true --export: enable or disable the Honeycomb Refineries monitoring\nenableRecyclerMonitoring = true --export: enable or disable the Recyclers monitoring\nenableMetalworkMonitoring = true --export: enable or disable the Metalworks monitoring\nenable3DPrinterMonitoring = true --export: enable or disable the 3D Printers monitoring\nenableTransferMonitoring = true --export: enable or disable the transfer units monitoring\nenableContainerMonitoring = false ---export: enable or disable the containers and hubs monitoring\nenableRemoteControl = true --export: enable the HUD to control machines (start/stop/batch/maintain)\ncontainerMonitoringPrefix = \"MONIT_\" ---export: the prefix used to enable container monitoring\nelementsByPage = 20 --export: maximum amount of elements displayed on a single page\ndateFormat = \"en\" --export: the country code to format the date\nmaxAmountOfElementsLoadedBySecond = 2000 --export: if cpu load errors at start, lower that value\nmaxAmountOfRecipeLoadedBySecond = 10 --export: if cpu load errors on page load, lower that value\n\n--[[\n\tDO NOT CHANGE THE FOLLOWING\n]]\n\nchannels = {}\nchannels['refiner'] = channel_for_refiner\nchannels['assembly line'] = channel_for_assembly\nchannels['smelter'] = channel_for_smelter\nchannels['chemical industry'] = channel_for_chemical\nchannels['electronics industry'] = channel_for_electronics\nchannels['glass furnace'] = channel_for_glass\nchannels['honeycomb refinery'] = channel_for_honeycomb\nchannels['recycler'] = channel_for_recycler\nchannels['metalwork industry'] = channel_for_metalwork\nchannels['3d printer'] = channel_for_3d_printer\nchannels['transfer unit'] = channel_for_transfer\n\ndatabanks = {}\ncore = nil\nemitter = nil\nfor slot_name, slot in pairs(unit) do\n if\n type(slot) == \"table\"\n and type(slot.export) == \"table\"\n and slot.getElementClass\n then\n if slot.getElementClass():lower() == 'databankunit' then\n table.insert(databanks, slot)\n end\n if slot.getElementClass():lower():find(\"coreunit\") then\n core = slot\n end\n if slot.getElementClass():lower() == 'emitterunit' then\n emitter = slot\n end\n end\nend\n\nif emitter == nil then \n enableRemoteControl = false\n system.print(\"Connect an Emitter to enable machine control from industry\")\nend\nif #databanks == 0 then \n enableRemoteControl = false\n system.print(\"No Databank linked\")\nend\nStorage = bankhub:new(databanks)\n\nelementsId = {}\nelements = {}\nelementsTypes = {}\nmachines_count = {}\nmachines_count.total = 0\ncoreOffset = 16\ninitIndex = 1\nlistIndex = 1\nelementsIdList = {}\nif core ~= nil and Storage then\n\telementsIdList = core.getElementIdList()\n unit.setTimer(\"init\",1)\nend\n\nelementsTypes = removeDuplicatesInTable(elementsTypes)\n\nsystem.showScreen(1)\nchannel_index = 1\nselected_index = 1\nselected_machine_index = 1\nhud_displayed = true\npage = 1\nmaxPage = 1\nselectedElementsId = {}\nCtrl_pressed = false\ncraft_quantity = \"\"\ncraft_quantity_digits = {\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"}\nrefresh_id_list = {}\ncraft_selected_digit = 1\ncommand_1 = \"\"\ncommand_2 = \"\"\ncommand_3 = \"\"\nmarkers = {}\nrefreshActivated = true\nhud_help_command = \"\"\nunit.setTimer(\"helperRefresh\",1)\nminOnPage = 0\nmaxOnPage = 0\nrecipeToLoad = {}\nloadedRecipes = {}\n\nunit.setTimer(\"recipeUpdate\", 1)",
9797+ "code": "--[[\n\treceivers channels for each type of machine\n]]\n\nlocal version = \"RC 2.0.0 - update 3\"\n\nsystem.print(\"==================================================\")\nlocal print_version_str = \"\"\nlocal print_version_number = math.ceil((50-#version-2)/2)\nfor i=1, print_version_number, 1 do print_version_str = print_version_str .. '=' end\nprint_version_str = print_version_str .. \" \" .. version .. \" \"\nfor i=1, print_version_number, 1 do print_version_str = print_version_str .. '=' end\nsystem.print(print_version_str)\nsystem.print(\"==================================================\")\n\nchannel_for_refiner = \"receiver_refiner\" --export: receiver channel to send orders to refiners\nchannel_for_assembly = \"receiver_assembly\" --export: receiver channel to send orders to assembly lines\nchannel_for_smelter = \"receiver_smelters\" --export: receiver channel to send orders to smelters\nchannel_for_chemical = \"receiver_chemical\" --export: receiver channel to send orders to chemical indutries\nchannel_for_electronics = \"receiver_electronics\" --export: receiver channel to send orders to electronic industries\nchannel_for_glass = \"receiver_glass\" --export: receiver channel to send orders to glass furnace\nchannel_for_honeycomb = \"receiver_honeycomb_recycler\" --export: receiver channel to send orders to honeycomb refiniries\nchannel_for_recycler = \"receiver_honeycomb_recycler\" --export: receiver channel to send orders to recylers\nchannel_for_metalwork = \"receiver_metalworks\" --export: receiver channel to send orders to metalworks\nchannel_for_3d_printer = \"receiver_3dprinters\" --export: receiver channel to send orders to 3d printers\nchannel_for_transfer = \"receiver_transfert\" --export: receiver channel to send orders to tranfer units\n\ncontainer_proficiency_lvl = 0 ---export: Talent level for Container Proficiency\ncontainer_fill_red_level = 10 ---export: The percent fill below gauge will be red\ncontainer_fill_yellow_level = 50 ---export: The percent fill below gauge will be yellow\n\nenableRefinerMonitoring = true --export: enable or disable the Refiners monitoring\nenableAssemblyMonitoring = true --export: enable or disable the Assembly lines monitoring\nenableSmelterMonitoring = true --export: enable or disable the Smelters monitoring\nenableChemicalMonitoring = true --export: enable or disable the Chemical industries monitoring\nenableElectronicsMonitoring = true --export: enable or disable the Electronics Industries monitoring\nenableGlassMonitoring = true --export: enable or disable the Glass Furnace monitoring\nenableHoneycombMonitoring = true --export: enable or disable the Honeycomb Refineries monitoring\nenableRecyclerMonitoring = true --export: enable or disable the Recyclers monitoring\nenableMetalworkMonitoring = true --export: enable or disable the Metalworks monitoring\nenable3DPrinterMonitoring = true --export: enable or disable the 3D Printers monitoring\nenableTransferMonitoring = true --export: enable or disable the transfer units monitoring\nenableContainerMonitoring = false ---export: enable or disable the containers and hubs monitoring\nenableRemoteControl = true --export: enable the HUD to control machines (start/stop/batch/maintain)\ncontainerMonitoringPrefix = \"MONIT_\" ---export: the prefix used to enable container monitoring\nelementsByPage = 20 --export: maximum amount of elements displayed on a single page\ndateFormat = \"en\" --export: the country code to format the date\nmaxAmountOfElementsLoadedBySecond = 2000 --export: if cpu load errors at start, lower that value\nmaxAmountOfRecipeLoadedBySecond = 10 --export: if cpu load errors on page load, lower that value\n\n--[[\n\tDO NOT CHANGE THE FOLLOWING\n]]\n\nchannels = {}\nchannels['refiner'] = channel_for_refiner\nchannels['assembly line'] = channel_for_assembly\nchannels['smelter'] = channel_for_smelter\nchannels['chemical industry'] = channel_for_chemical\nchannels['electronics industry'] = channel_for_electronics\nchannels['glass furnace'] = channel_for_glass\nchannels['honeycomb refinery'] = channel_for_honeycomb\nchannels['recycler'] = channel_for_recycler\nchannels['metalwork industry'] = channel_for_metalwork\nchannels['3d printer'] = channel_for_3d_printer\nchannels['transfer unit'] = channel_for_transfer\n\ndatabanks = {}\ncore = nil\nemitter = nil\nfor slot_name, slot in pairs(unit) do\n if\n type(slot) == \"table\"\n and type(slot.export) == \"table\"\n and slot.getElementClass\n then\n if slot.getElementClass():lower() == 'databankunit' then\n table.insert(databanks, slot)\n end\n if slot.getElementClass():lower():find(\"coreunit\") then\n core = slot\n end\n if slot.getElementClass():lower() == 'emitterunit' then\n emitter = slot\n end\n end\nend\n\nif emitter == nil then \n enableRemoteControl = false\n system.print(\"Connect an Emitter to enable machine control from industry\")\nend\nif #databanks == 0 then \n enableRemoteControl = false\n system.print(\"No Databank linked\")\nend\nStorage = bankhub:new(databanks)\n\nelementsId = {}\nelements = {}\nelementsTypes = {}\nmachines_count = {}\nmachines_count.total = 0\ncoreOffset = 16\ninitIndex = 1\nlistIndex = 1\nelementsIdList = {}\nif core ~= nil and Storage then\n\telementsIdList = core.getElementIdList()\n unit.setTimer(\"init\",1)\nend\n\nelementsTypes = removeDuplicatesInTable(elementsTypes)\n\nsystem.showScreen(1)\nchannel_index = 1\nselected_index = 1\nselected_machine_index = 1\nhud_displayed = true\npage = 1\nmaxPage = 1\nselectedElementsId = {}\nCtrl_pressed = false\ncraft_quantity = \"\"\ncraft_quantity_digits = {\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"}\nrefresh_id_list = {}\ncraft_selected_digit = 1\ncommand_1 = \"\"\ncommand_2 = \"\"\ncommand_3 = \"\"\nmarkers = {}\nrefreshActivated = true\nhud_help_command = \"\"\nunit.setTimer(\"helperRefresh\",1)\nminOnPage = 0\nmaxOnPage = 0\nrecipeToLoad = {}\nloadedRecipes = {}\n\nunit.setTimer(\"recipeUpdate\", 1)",
9898 "filter": {
9999 "args": [],
100100 "signature": "start()",
···138138 "key": "3"
139139 },
140140 {
141141- "code": "local maxForLoop = listIndex + maxAmountOfElementsLoadedBySecond\nif maxForLoop > #elementsId then maxForLoop = #elementsId end\n\nselectedElementsId = {}\nelementsTypes = {}\nfor i = listIndex, maxForLoop, 1 do\n listIndex = i\n local id = elementsId[i]\n elementType = core.getElementTypeById(id)\n local elementName = core.getElementNameById(id):lower()\n if\n (elementType:lower():find(\"container\")\n and elementName:find(containerMonitoringPrefix:lower()))\n or (not elementType:lower():find(\"container\"))\n then\n local formatedName = removeQualityInName(elementType)\n table.insert(elementsTypes, formatedName)\n end\n if selected_type == removeQualityInName(elementType) then\n if\n (elementType:lower():find(\"container\") and elementName:find(containerMonitoringPrefix:lower()))\n or (not elementType:lower():find(\"container\"))\n then\n table.insert(selectedElementsId, id)\n end\n end\nend\nelementsTypes = removeDuplicatesInTable(elementsTypes)\ntable.sort(elementsTypes, function(a,b) return a:lower() < b:lower() end)\nmaxPage = math.ceil(#selectedElementsId / elementsByPage)\nif listIndex >= #elementsId then listIndex = 1 end",
141141+ "code": "local maxForLoop = listIndex + maxAmountOfElementsLoadedBySecond\nif maxForLoop > #elementsId then maxForLoop = #elementsId end\n\nfor i = listIndex, maxForLoop, 1 do\n listIndex = i\n local id = elementsId[i]\n elementType = core.getElementTypeById(id)\n local elementName = core.getElementNameById(id):lower()\n if\n (elementType:lower():find(\"container\")\n and elementName:find(containerMonitoringPrefix:lower()))\n or (not elementType:lower():find(\"container\"))\n then\n local formatedName = removeQualityInName(elementType)\n table.insert(elementsTypes, formatedName)\n end\n if selected_type == removeQualityInName(elementType) then\n if\n (elementType:lower():find(\"container\") and elementName:find(containerMonitoringPrefix:lower()))\n or (not elementType:lower():find(\"container\"))\n then\n table.insert(selectedElementsId, id)\n end\n end\nend\nelementsTypes = removeDuplicatesInTable(elementsTypes)\nselectedElementsId = removeDuplicatesInTable(selectedElementsId)\ntable.sort(elementsTypes, function(a,b) return a:lower() < b:lower() end)\nmaxPage = math.ceil(#selectedElementsId / elementsByPage)\nif listIndex >= #elementsId then listIndex = 1 end",
142142 "filter": {
143143 "args": [
144144 {
+1-1
Master program/source/unit/start.lua
···22 receivers channels for each type of machine
33]]
4455-local version = "RC 2.0.0 - update 2"
55+local version = "RC 2.0.0 - update 3"
6677system.print("==================================================")
88local print_version_str = ""
+1-2
Master program/source/unit/tick_buildLists.lua
···11local maxForLoop = listIndex + maxAmountOfElementsLoadedBySecond
22if maxForLoop > #elementsId then maxForLoop = #elementsId end
3344-selectedElementsId = {}
55-elementsTypes = {}
64for i = listIndex, maxForLoop, 1 do
75 listIndex = i
86 local id = elementsId[i]
···2624 end
2725end
2826elementsTypes = removeDuplicatesInTable(elementsTypes)
2727+selectedElementsId = removeDuplicatesInTable(selectedElementsId)
2928table.sort(elementsTypes, function(a,b) return a:lower() < b:lower() end)
3029maxPage = math.ceil(#selectedElementsId / elementsByPage)
3130if listIndex >= #elementsId then listIndex = 1 end