Пробую с помощью библиотеки сделать программу для отображения состояния моих реакторов. Не могу понять как перерисовывать содержимое экрана. У меня при включении программы оно отображает состояние реакторов на момент запуска программы, а потом, если выключить или включить реакторы, то на экране изменений нет. Как можно перерисовывать экран при изменении переменной color?
local com = require("component")
local GUI = require("GUI")
local g = com.gpu;
local p = com.proxy;
local mainContainer = GUI.fullScreenContainer()
local clr_main = 0x000FF
local buffer = require("doubleBuffering")
while true do
local adresses ={
[1] = com.get("872"),
[2] = com.get("9bd"),
[3] = com.get("03b"),
[4] = com.get("69a"),
[5] = com.get("a27"),
[6] = com.get("8ef"),
[7] = com.get("844"),
[8] = com.get("4ad"),
[9] = com.get("dbb"),
[10] = com.get("550"),
[11] = com.get("43f"),
[12] = com.get("ba6"),
[13] = com.get("d7b"),
[14] = com.get("bcf"),
[15] = com.get("a93"),
[16] = com.get("f92"),
[17] = com.get("2db"),
[18] = com.get("6cd")
}
mainContainer:addChild(GUI.panel(1, 1, mainContainer.width, mainContainer.height, 0x2D2D2D, 0.4))local layout = mainContainer:addChild(GUI.layout(1, 1, mainContainer.width, mainContainer.height, 7, 10))
--
local function GetComponentsReactors(adressesComponents)
local proxys = {}
for i = 1, #adressesComponents do
proxys[i] = p(adressesComponents[i])
end
return proxys
end
local reactors = GetComponentsReactors(adresses)
for i = 1, #reactors do
if reactors[i].producesEnergy() then
color = true
end
end
local color = color and 0x008000 or 0xFF0000
--Разметка
layout:setCellPosition(1, 1, layout:addChild(GUI.text(1, 1, clr_main, "№")))
layout:setCellPosition(2, 1, layout:addChild(GUI.text(1, 1, clr_main, "Блок №1")))
layout:setCellPosition(3, 1, layout:addChild(GUI.text(1, 1, clr_main, "Блок №2")))
layout:setCellPosition(4, 1, layout:addChild(GUI.text(1, 1, clr_main, "Блок №3")))
layout:setCellPosition(5, 1, layout:addChild(GUI.text(1, 1, clr_main, "Блок №4")))
layout:setCellPosition(6, 1, layout:addChild(GUI.text(1, 1, clr_main, "Блок №5")))
layout:setCellPosition(7, 1, layout:addChild(GUI.text(1, 1, clr_main, "Блок №6")))
--Group #1
layout:setCellPosition(2, 2, layout:addChild(GUI.text(1, 1, color, "Реактор 1")))
layout:setCellPosition(2, 3, layout:addChild(GUI.text(1, 1, color, "Реактор 2")))
layout:setCellPosition(2, 4, layout:addChild(GUI.text(1, 1, color, "Реактор 3")))
layout:setCellPosition(2, 5, layout:addChild(GUI.text(1, 1, color, "Реактор 4")))
layout:setCellPosition(2, 6, layout:addChild(GUI.text(1, 1, color, "Реактор 5")))
layout:setCellPosition(2, 7, layout:addChild(GUI.text(1, 1, color, "Реактор 6")))
layout:setCellPosition(2, 8, layout:addChild(GUI.text(1, 1, color, "Реактор 7")))
layout:setCellPosition(2, 9, layout:addChild(GUI.text(1, 1, color, "Реактор 8")))
layout:setCellPosition(2, 10, layout:addChild(GUI.text(1, 1, color, "Реактор 9")))
--Group #2
layout:setCellPosition(3, 2, layout:addChild(GUI.text(1, 1, color, "Реактор 1")))
layout:setCellPosition(3, 3, layout:addChild(GUI.text(1, 1, color, "Реактор 2")))
layout:setCellPosition(3, 4, layout:addChild(GUI.text(1, 1, color, "Реактор 3")))
layout:setCellPosition(3, 5, layout:addChild(GUI.text(1, 1, color, "Реактор 4")))
layout:setCellPosition(3, 6, layout:addChild(GUI.text(1, 1, color, "Реактор 5")))
layout:setCellPosition(3, 7, layout:addChild(GUI.text(1, 1, color, "Реактор 6")))
layout:setCellPosition(3, 8, layout:addChild(GUI.text(1, 1, color, "Реактор 7")))
layout:setCellPosition(3, 9, layout:addChild(GUI.text(1, 1, color, "Реактор 8")))
layout:setCellPosition(3, 10, layout:addChild(GUI.text(1, 1, color, "Реактор 9")))
------------------------------------------------------------------------------
mainContainer:drawOnScreen(true)
mainContainer:startEventHandling()
end