View difference between Paste ID: GNWF7KGZ and 2b4fXeE7
SHOW: | | - or go back to the newest paste.
1-
local com = require("component")
1+
local com = require("component")
2-
local term = require("term")
2+
local term = require("term")
3-
local event = require("event")
3+
local event = require("event")
4-
local gpu = com.gpu
4+
local gpu = com.gpu
5-
 
5+
 
6-
local proxyReactors
6+
local proxyReactors
7-
 
7+
 
8-
local ResX, ResY = gpu.getResolution()
8+
local ResX, ResY = gpu.getResolution()
9-
local color = {
9+
local color = {
10-
 ["StartForeground"] = gpu.getForeground(), -- цвета для завершения проги
10+
 ["StartForeground"] = gpu.getForeground(), -- цвета для завершения проги
11-
 ["StartBackground"] = gpu.getBackground(), -- цвета для завершения проги
11+
 ["StartBackground"] = gpu.getBackground(), -- цвета для завершения проги
12-
 ["background"] = 0x161a1e, -- цвет фона
12+
 ["background"] = 0x161a1e, -- цвет фона
13-
 ["UpBar"] = 0x2a323b,      -- цвет фона вверхней полосы (бар)
13+
 ["UpBar"] = 0x2a323b,      -- цвет фона вверхней полосы (бар)
14-
 ["foreground"] = 0xf5f5f5, -- цвет текста
14+
 ["foreground"] = 0xf5f5f5, -- цвет текста
15-
 ["reactorON"] = 0x00DD00,  -- цвет текста состояния реактора.
15+
 ["reactorON"] = 0x00DD00,  -- цвет текста состояния реактора.
16-
 ["reactorOFF"] = 0xFF0000, -- цвет текста состояния реактора.
16+
 ["reactorOFF"] = 0xFF0000, -- цвет текста состояния реактора.
17-
 ["reactorNIL"] = 0x5c5c5c, -- цвет состояния, если реактор не найден
17+
 ["reactorNIL"] = 0x5c5c5c, -- цвет состояния, если реактор не найден
18-
 ["lastColor"] = 0x000000,  -- штука для хоть какойнить оптимизации
18+
 ["lastColor"] = 0x000000,  -- штука для хоть какойнить оптимизации
19-
 ["warningHeat"] = 0xffba00,
19+
 ["warningHeat"] = 0xffba00,
20-
 ["normalHeat"] = 0x66cc00,
20+
 ["normalHeat"] = 0x66cc00,
21-
 ["backgroundReactorIcon"] = { -- таакс... а это цвета для выделения блоков. что бы не сливались
21+
 ["backgroundReactorIcon"] = { -- таакс... а это цвета для выделения блоков. что бы не сливались
22-
  ["background_1"] = 0x777777,
22+
  ["background_1"] = 0x777777,
23-
  ["background_2"] = 0x878787,
23+
  ["background_2"] = 0x878787,
24-
  ["background_nil_1"] = 0x393939,
24+
  ["background_nil_1"] = 0x393939,
25-
  ["background_nil_2"] = 0x262626
25+
  ["background_nil_2"] = 0x262626
26-
 },
26+
 },
27-
 ["ByColors"] = {0xffffff,0x66ff00,0xe0e0e0,0x0060ff,0xc2c2c2,0xff0000,0x999999}
27+
 ["ByColors"] = {0xffffff,0x66ff00,0xe0e0e0,0x0060ff,0xc2c2c2,0xff0000,0x999999}
28-
}
28+
}
29-
local addresses = { 
29+
local addresses = { 
30-
 --1      2      3      4      5      6      7      8      9         реактор
30+
 --1      2      3      4      5      6      7      8      9         реактор
31-
"7a1f8910-06a8-43a0-ba8c-6b27db6a6295", "6805d282-0578-4a82-9d62-f2c243e7348d", "db0b7d44-f548-4c18-a1bb-ddf15f33b026", "b588b706-b5d6-4abd-993d-9f9038861de1", "533ae447-2575-499e-a816-a0dc852aa255", "d20a9f91-7d30-4ae6-936b-f88d4b296aa9", "263f47df-289e-42bb-9333-d1483258315d", "39a94a0d-a159-4c6a-b2be-d7fa79002aaa", "686c16e2-35c1-4b99-a385-d9c5a65fe986", "75c6a04b-c8b1-42ae-ae4b-233c8e9cab5d", "f421709b-6a23-4fd5-8a9c-05a2e047c83a", "495822c7-5570-4b85-bc1c-af4dc5e9a473", "15cc5994-d357-4bd0-819b-3c0fede6d05d", "d5148f85-7920-43d3-a773-0997f12d2784", "712263df-ce76-46b1-804e-44a2364df712", "c2d9dc27-c1a7-4f84-856b-658fcbf70e7f", "74f86322-a4f6-4e63-937d-0210dd08f951", "df94b33e-d85a-4d4d-bf32-e86dec7bbbfe", "c81d3234-956d-4fc4-bb99-5fcd757f918e", "410cdc0c-6864-4619-8a62-a4a9930e3f3d", "5fcb98a1-e9d0-437e-97a0-5dcc9dcf4c6c", "27389320-99b7-42d1-a8da-16acf319e8d0", "bd022ad7-6d46-4b21-828b-cfb76c34e5fc", "6127ff23-8a0b-4b1c-b182-8f701663bb39", "2cf30389-494b-4721-a048-6656fe6a56ce", "fd043f5d-c561-4841-8e2a-f01bc917ed56", "a65f2b2b-9149-4409-9146-e3e66c86cd28", "6ccbb2f6-dcad-44ea-84a0-1bce69ba183b", "d298d943-b476-41a9-ad8c-75202b93e1d8", "8b4cc36a-1923-4bdf-a60a-1a10702c7581", "c3d402cb-1078-4f96-ba9f-48b7f957974d", "91c7373d-285b-4b51-9f8b-970a0bd0d7a1", "b01ef098-150b-4b00-b3b1-4dc8b76b481e", "96e570a1-36ac-41db-810f-2c6e158035bf", "b6a92b7d-4580-46cd-8177-bc4b76926061", "eecf8f06-f074-43c6-8107-d72ea137b12f", "98d44057-028d-4ce3-8774-431e5a10d11d", "80912358-f868-4dc9-8449-529991eaf8fc", "7a57a8d3-665e-4e42-a5dc-03c3395b650b", "bfd526fb-8c5b-446b-b2ae-0f636e9eda80", "a4e449ef-5db2-4cee-8e95-3a8f24533640", "6ebed09a-17bc-49f1-8446-c95e008003fb", "d53f0f90-f0e3-4987-a7d9-4e5a5ffef2b8", "d1c25ba7-38fd-4b58-b885-7739bc594108", "d3f05ca1-f84b-415f-bca5-c3ece7db3e3e", "f6e12279-9dae-4778-9600-f0c82ac3b976", "c86b5366-e612-48e0-a251-333b1e6ce758", "537a924d-0d2c-4d53-a5c6-c2b0ea3799d9", "20e02864-8aab-4965-bf03-c459657ef0a1", "1ef764ce-bfb7-42a3-97bf-1de7633a6a1e"
31+
"7a1f8910-06a8-43a0-ba8c-6b27db6a6295", "6805d282-0578-4a82-9d62-f2c243e7348d", "db0b7d44-f548-4c18-a1bb-ddf15f33b026", "b588b706-b5d6-4abd-993d-9f9038861de1", "533ae447-2575-499e-a816-a0dc852aa255", "d20a9f91-7d30-4ae6-936b-f88d4b296aa9", "263f47df-289e-42bb-9333-d1483258315d", "39a94a0d-a159-4c6a-b2be-d7fa79002aaa", "686c16e2-35c1-4b99-a385-d9c5a65fe986", "75c6a04b-c8b1-42ae-ae4b-233c8e9cab5d", "f421709b-6a23-4fd5-8a9c-05a2e047c83a", "495822c7-5570-4b85-bc1c-af4dc5e9a473", "15cc5994-d357-4bd0-819b-3c0fede6d05d", "d5148f85-7920-43d3-a773-0997f12d2784", "712263df-ce76-46b1-804e-44a2364df712", "c2d9dc27-c1a7-4f84-856b-658fcbf70e7f", "74f86322-a4f6-4e63-937d-0210dd08f951", "df94b33e-d85a-4d4d-bf32-e86dec7bbbfe", "c81d3234-956d-4fc4-bb99-5fcd757f918e", "410cdc0c-6864-4619-8a62-a4a9930e3f3d", "5fcb98a1-e9d0-437e-97a0-5dcc9dcf4c6c", "27389320-99b7-42d1-a8da-16acf319e8d0", "bd022ad7-6d46-4b21-828b-cfb76c34e5fc", "6127ff23-8a0b-4b1c-b182-8f701663bb39", "2cf30389-494b-4721-a048-6656fe6a56ce", "fd043f5d-c561-4841-8e2a-f01bc917ed56", "a65f2b2b-9149-4409-9146-e3e66c86cd28", "6ccbb2f6-dcad-44ea-84a0-1bce69ba183b", "d298d943-b476-41a9-ad8c-75202b93e1d8", "8b4cc36a-1923-4bdf-a60a-1a10702c7581", "c3d402cb-1078-4f96-ba9f-48b7f957974d", "91c7373d-285b-4b51-9f8b-970a0bd0d7a1", "b01ef098-150b-4b00-b3b1-4dc8b76b481e", "96e570a1-36ac-41db-810f-2c6e158035bf", "b6a92b7d-4580-46cd-8177-bc4b76926061", "eecf8f06-f074-43c6-8107-d72ea137b12f", "98d44057-028d-4ce3-8774-431e5a10d11d", "80912358-f868-4dc9-8449-529991eaf8fc", "7a57a8d3-665e-4e42-a5dc-03c3395b650b", "bfd526fb-8c5b-446b-b2ae-0f636e9eda80", "a4e449ef-5db2-4cee-8e95-3a8f24533640", "6ebed09a-17bc-49f1-8446-c95e008003fb", "d53f0f90-f0e3-4987-a7d9-4e5a5ffef2b8", "d1c25ba7-38fd-4b58-b885-7739bc594108", "d3f05ca1-f84b-415f-bca5-c3ece7db3e3e", "f6e12279-9dae-4778-9600-f0c82ac3b976", "c86b5366-e612-48e0-a251-333b1e6ce758", "537a924d-0d2c-4d53-a5c6-c2b0ea3799d9", "20e02864-8aab-4965-bf03-c459657ef0a1", "1ef764ce-bfb7-42a3-97bf-1de7633a6a1e"
32-
}
32+
}
33-
 
33+
 
34-
local statusReactors = {}
34+
local statusReactors = {}
35-
 
35+
 
36-
local IDColorBy = 1
36+
local IDColorBy = 1
37-
 
37+
 
38-
local ExitStatus = false
38+
local ExitStatus = false
39-
 
39+
 
40-
local function DrawBy()
40+
local function DrawBy()
41-
 local by = "by oGoOgO"
41+
 local by = "by oGoOgO"
42-
 gpu.setBackground(color.UpBar)
42+
 gpu.setBackground(color.UpBar)
43-
 gpu.setForeground(color.ByColors[IDColorBy])
43+
 gpu.setForeground(color.ByColors[IDColorBy])
44-
 lastColor = color.ByColors[IDColorBy]
44+
 lastColor = color.ByColors[IDColorBy]
45-
 gpu.set(ResX-#by+1, 1, by)
45+
 gpu.set(ResX-#by+1, 1, by)
46-
 if IDColorBy+1 <= #color.ByColors then IDColorBy = IDColorBy + 1 else IDColorBy = 1 end
46+
 if IDColorBy+1 <= #color.ByColors then IDColorBy = IDColorBy + 1 else IDColorBy = 1 end
47-
end
47+
end
48-
 
48+
 
49-
local function GetComponentsReactors(addressesComponents)
49+
local function GetComponentsReactors(addressesComponents)
50-
 local proxys = {}
50+
 local proxys = {}
51-
 for i = 1, #addressesComponents do
51+
 for i = 1, #addressesComponents do
52-
  proxys[i] = com.proxy(addressesComponents[i]) or "?"
52+
  proxys[i] = com.proxy(addressesComponents[i]) or "?"
53-
 end
53+
 end
54-
 return proxys
54+
 return proxys
55-
end
55+
end
56-
 
56+
 
57-
local function GetStatusReactors(reactors)
57+
local function GetStatusReactors(reactors)
58-
 local result = {}
58+
 local result = {}
59-
 for i = 1, #reactors do
59+
 for i = 1, #reactors do
60-
  if com.get(reactors[i].address) ~= nil then 
60+
  if com.get(reactors[i].address) ~= nil then 
61-
    result[i] = {
61+
    result[i] = {
62-
     math.floor(reactors[i].getReactorEUOutput()),
62+
     math.floor(reactors[i].getReactorEUOutput()),
63-
     reactors[i].getHeat()/reactors[i].getMaxHeat()*100
63+
     reactors[i].getHeat()/reactors[i].getMaxHeat()*100
64-
    } 
64+
    } 
65-
  end
65+
  end
66-
 end
66+
 end
67-
 return result
67+
 return result
68-
end
68+
end
69-
 
69+
 
70-
local function GetColorBackgroundReactor(ID,color1,color2)
70+
local function GetColorBackgroundReactor(ID,color1,color2)
71-
 return ID%2==0 and color1 or color2
71+
 return ID%2==0 and color1 or color2
72-
end
72+
end
73-
 
73+
 
74-
local function GetColorStatusReactor(ID,color1,color2)
74+
local function GetColorStatusReactor(ID,color1,color2)
75-
 return statusReactors[ID][1]>0 and color1 or color2
75+
 return statusReactors[ID][1]>0 and color1 or color2
76-
end
76+
end
77-
 
77+
 
78-
local function ChangeForegroundColor(color)
78+
local function ChangeForegroundColor(color)
79-
 if lastColor ~= color then 
79+
 if lastColor ~= color then 
80-
  gpu.setForeground(color); lastColor = color 
80+
  gpu.setForeground(color); lastColor = color 
81-
 end
81+
 end
82-
end
82+
end
83-
 
83+
 
84-
local function DrawBarsAndOther()
84+
local function DrawBarsAndOther()
85-
 gpu.setBackground(color.background)
85+
 gpu.setBackground(color.background)
86-
 gpu.setForeground(color.foreground)
86+
 gpu.setForeground(color.foreground)
87-
 term.clear()
87+
 term.clear()
88-
 
88+
 
89-
 gpu.setBackground(color.UpBar)
89+
 gpu.setBackground(color.UpBar)
90-
 gpu.fill(1,1,160,3," ")
90+
 gpu.fill(1,1,160,3," ")
91-
 gpu.fill(5,1,1,50," ")
91+
 gpu.fill(5,1,1,50," ")
92-
 gpu.set(1,1,"X")
92+
 gpu.set(1,1,"X")
93-
 for i=1, 6 do
93+
 for i=1, 6 do
94-
  local XPos = 4+(i-1)*24+i
94+
  local XPos = 4+(i-1)*24+i
95-
  gpu.set((XPos*2+26)/2-3,2, "Блок "..i)
95+
  gpu.set((XPos*2+26)/2-3,2, "Блок "..i)
96-
  gpu.fill(30+((i-1)*25),3,1,48," ")
96+
  gpu.fill(30+((i-1)*25),3,1,48," ")
97-
 end
97+
 end
98-
end
98+
end
99-
 
99+
 
100-
local function DrawStatusReactors(STS)
100+
local function DrawStatusReactors(STS)
101-
 local IDReactor = 1
101+
 local IDReactor = 1
102-
 local IBlocks = 1
102+
 local IBlocks = 1
103-
 for address=1, #addresses do 
103+
 for address=1, #addresses do 
104-
  local EUOutput, HeatReactor = "?"
104+
  local EUOutput, HeatReactor = "?"
105-
  local StartX = 6+(IBlocks-1)*24+IBlocks
105+
  local StartX = 6+(IBlocks-1)*24+IBlocks
106-
  local StartY = 5+(IDReactor-1)*5
106+
  local StartY = 5+(IDReactor-1)*5
107-
  local EndX = 22
107+
  local EndX = 22
108-
  local EndY = 5
108+
  local EndY = 5
109-
  local positionIcon = {StartX, StartY, EndX, EndY}
109+
  local positionIcon = {StartX, StartY, EndX, EndY}
110-
  local PositionText = {
110+
  local PositionText = {
111-
   (positionIcon[1]*2+positionIcon[3])/2,
111+
   (positionIcon[1]*2+positionIcon[3])/2,
112-
   (positionIcon[2]*2+positionIcon[4])/2
112+
   (positionIcon[2]*2+positionIcon[4])/2
113-
  }
113+
  }
114-
 
114+
 
115-
  if STS[address] ~= nil then
115+
  if STS[address] ~= nil then
116-
   EUOutput =    tostring(STS[address][1]).." EU/t"
116+
   EUOutput =    tostring(STS[address][1]).." EU/t"
117-
   HeatReactor = tostring(STS[address][2]).."% Нагрев"
117+
   HeatReactor = tostring(STS[address][2]).."% Нагрев"
118-
   gpu.setBackground(GetColorBackgroundReactor(IDReactor,color.backgroundReactorIcon.background_1,color.backgroundReactorIcon.background_2))
118+
   gpu.setBackground(GetColorBackgroundReactor(IDReactor,color.backgroundReactorIcon.background_1,color.backgroundReactorIcon.background_2))
119-
   ChangeForegroundColor(GetColorStatusReactor(address,color.reactorON,color.reactorOFF))
119+
   ChangeForegroundColor(GetColorStatusReactor(address,color.reactorON,color.reactorOFF))
120-
  else
120+
  else
121-
   ChangeForegroundColor(color.reactorNIL)
121+
   ChangeForegroundColor(color.reactorNIL)
122-
   gpu.setBackground(GetColorBackgroundReactor(IDReactor,color.backgroundReactorIcon.background_nil_1,color.backgroundReactorIcon.background_nil_2))
122+
   gpu.setBackground(GetColorBackgroundReactor(IDReactor,color.backgroundReactorIcon.background_nil_1,color.backgroundReactorIcon.background_nil_2))
123-
  end
123+
  end
124-
  gpu.fill(positionIcon[1],positionIcon[2],positionIcon[3],positionIcon[4]," ")
124+
  gpu.fill(positionIcon[1],positionIcon[2],positionIcon[3],positionIcon[4]," ")
125-
  gpu.set(PositionText[1]-5,PositionText[2],"Реактор N"..IDReactor)
125+
  gpu.set(PositionText[1]-5,PositionText[2],"Реактор N"..IDReactor)
126-
  gpu.set(StartX,PositionText[2]+2,EUOutput)
126+
  gpu.set(StartX,PositionText[2]+2,EUOutput)
127-
 
127+
 
128-
  ChangeForegroundColor(STS[address][2]>=50 and color.warningHeat or color.normalHeat)
128+
  ChangeForegroundColor(STS[address][2]>=50 and color.warningHeat or color.normalHeat)
129-
  gpu.set(StartX+EndX-#HeatReactor,PositionText[2]-2,HeatReactor)
129+
  gpu.set(StartX+EndX-#HeatReactor,PositionText[2]-2,HeatReactor)
130-
  if IDReactor+1 <= 9 then IDReactor = IDReactor + 1 else IDReactor = 1; IBlocks = IBlocks + 1 end
130+
  if IDReactor+1 <= 9 then IDReactor = IDReactor + 1 else IDReactor = 1; IBlocks = IBlocks + 1 end
131-
 end
131+
 end
132-
end
132+
end
133-
 
133+
 
134-
local function HandlerTouch()
134+
local function HandlerTouch()
135-
 local _, _, x, y = event.pull(1,"touch")
135+
 local _, _, x, y = event.pull(1,"touch")
136-
 ExitStatus = x == 1 and y == 1
136+
 ExitStatus = x == 1 and y == 1
137-
end
137+
end
138-
 
138+
 
139-
local function Init()
139+
local function Init()
140-
 for i=1, #addresses do addresses[i] = com.get(addresses[i]) or "?" end
140+
 for i=1, #addresses do addresses[i] = com.get(addresses[i]) or "?" end
141-
 proxyReactors = GetComponentsReactors(addresses)
141+
 proxyReactors = GetComponentsReactors(addresses)
142-
 DrawBarsAndOther()
142+
 DrawBarsAndOther()
143-
end
143+
end
144-
 
144+
 
145-
local function Main()
145+
local function Main()
146-
 while not ExitStatus do
146+
 while not ExitStatus do
147-
  statusReactors = GetStatusReactors(proxyReactors)
147+
  statusReactors = GetStatusReactors(proxyReactors)
148-
  DrawStatusReactors(statusReactors)
148+
  DrawStatusReactors(statusReactors)
149-
  DrawBy() -- и это тоже не трогай, иначе будет плохо...
149+
  DrawBy() -- и это тоже не трогай, иначе будет плохо...
150-
  HandlerTouch()
150+
  HandlerTouch()
151-
 end
151+
 end
152-
 gpu.setBackground(color.StartBackground)
152+
 gpu.setBackground(color.StartBackground)
153-
 gpu.setForeground(color.StartForeground)
153+
 gpu.setForeground(color.StartForeground)
154-
 term.clear()
154+
 term.clear()
155-
end
155+
end
156-
 
156+
 
157-
Init()
157+
Init()
158
Main()