View difference between Paste ID: BimEjtnM and u3y8nM3m
SHOW: | | - or go back to the newest paste.
1-
local Reactor1 = peripheral.wrap( "BiggerReactors_Reactor_3" )
1+
local Reactor = peripheral.wrap( "back" )
2-
local Reactor2 = peripheral.wrap( "BiggerReactors_Reactor_4" )
2+
3
local mon = peripheral.wrap( "left" )
4-
local mon = peripheral.wrap( "right" )
4+
5
6
local Manu, Auto = 1, 0
7
8
xOn1, yOn1, xOn2, yOn2 = 3, 8, 9, 10
9
xOff1, yOff1, xOff2, yOff2 = 11, 8, 17, 10
10
11
function newLine(nbr)
12
    xPos, yPos = mon.getCursorPos()
13
    mon.setCursorPos( 1,( yPos + nbr ) )
14
end
15
16
function round(val, decimal)
17
  if (decimal) then
18
    return math.floor( (val * 10^decimal) + 0.5) / (10^decimal)
19
  else
20
    return math.floor(val+0.5)
21
  end
22
end
23
24
function drawOn()
25
	local previousTerm = term.current()
26
	term.redirect( mon )
27
		term.setBackgroundColour( colors.black )
28
29
		local xOn1, yOn1, xOn2, yOn2 = 2, 8, 25, 10
30
		local xOff1, yOff1, xOff2, yOff2 = 27, 8, 52, 10
31
32
		local x1_txt = 12
33
		local x2_txt = 38
34
35
		paintutils.drawFilledBox( xOn1, yOn1, xOn2, yOn2, colors.lime )
36
		term.setCursorPos( x1_txt, 9 )
37
		term.write( "START" )
38
39
		paintutils.drawFilledBox( xOff1, yOff1, xOff2, yOff2, colors.red )
40
		term.setCursorPos( x2_txt, 9 )
41
		term.write( "STOP" )
42
43
		term.setBackgroundColour( colors.black )
44
	term.redirect( previousTerm )
45
end
46
47
function drawOff()
48
	local previousTerm = term.current()
49
	term.redirect( mon )
50
		term.setBackgroundColour( colors.black )
51
52
		local xOn1, yOn1, xOn2, yOn2 = 2, 8, 25, 10
53
		local xOff1, yOff1, xOff2, yOff2 = 27, 8, 52, 10
54
55
		local x1_txt = 12
56
		local x2_txt = 38
57
58
		paintutils.drawFilledBox( xOn1, yOn1, xOn2, yOn2, colors.red )
59
		term.setCursorPos( x1_txt, 9 )
60
		term.write( "START" )
61
62
		paintutils.drawFilledBox( xOff1, yOff1, xOff2, yOff2, colors.lime )
63
		term.setCursorPos( x2_txt, 9 )
64
		term.write( "STOP" )
65
66
		term.setBackgroundColour( colors.black )
67
	term.redirect( previousTerm )
68
end
69
70
function drawMenu()
71
	local previousTerm = term.current()
72
	term.redirect( mon )
73
		term.setBackgroundColour( colors.black )
74
75
		paintutils.drawFilledBox( 2, 2, 13, 4, colors.lime )
76
		term.setCursorPos( 3, 3 )
77
		term.write( "Reacteur 1" )
78
79
		paintutils.drawFilledBox( 15, 2, 26, 4, colors.red )
80
		term.setCursorPos( 16, 3 )
81
		term.write( "Reacteur 2" )
82
83
		paintutils.drawFilledBox( 28, 2, 39, 4, colors.red )
84
		term.setCursorPos( 29, 3 )
85
		term.write( "Reacteur 3" )
86
87
		paintutils.drawFilledBox( 41, 2, 52, 4, colors.red )
88
		term.setCursorPos( 42, 3 )
89
		term.write( "Reacteur 4" )
90
91
		paintutils.drawFilledBox( 1, 6, 54, 6, colors.gray )
92
		paintutils.drawFilledBox( 54, 1, 54, 38, colors.gray )
93
94
		paintutils.drawFilledBox( 56, 2, 99, 4, colors.blue )
95
		term.setCursorPos( 75, 3 )
96
		term.write( "Général" )
97
98
		paintutils.drawFilledBox( 56, 6, 76, 8, colors.cyan )
99
		term.setCursorPos( 64, 7 )
100
		term.write( "Auto" )
101
102
		paintutils.drawFilledBox( 79, 6, 99, 8, colors.cyan )
103
		term.setCursorPos( 87, 7 )
104
		term.write( "Manu" )
105
106
		term.setBackgroundColour( colors.black )
107
	term.redirect( previousTerm )
108
end
109
110
function drawRed()
111
	local X1 = {2, 15, 28, 41, 42}
112
	local X2 = {13, 26, 39, 42}
113
	local T = {3, 16, 29, 42}
114
	for i=1, 4, 1
115
	do
116
		local previousTerm = term.current()
117
		term.redirect( mon )
118
			term.setBackgroundColour( colors.black )
119
			paintutils.drawFilledBox( X1[i], 2, X2[i], 4, colors.red )
120
			term.setCursorPos( T[i], 3 )
121
			term.write( "Reacteur "..i )
122
			term.setBackgroundColour( colors.black )
123
		term.redirect( previousTerm )
124
	end
125
end
126
127
function drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
128
	local previousTerm = term.current()
129
	term.redirect( mon )
130
		term.setBackgroundColour( colors.black )
131
		paintutils.drawFilledBox( x1, y1, x2, y2, couleur )
132
		term.setCursorPos( txt_x, txt_y )
133
		term.write( txt )
134
		term.setBackgroundColour( colors.black )
135
	term.redirect( previousTerm )
136
end
137
138
function drawActiveReac(idReac, txt)
139
	drawRed()
140
	if idReac == Reactor1 then
141
		
142
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 2, 13, 2, 4, 3, 3, "Reacteur 1", colors.lime
143
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
144
145
	elseif idReac == Reactor2 then
146
		
147
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 15, 26,2, 4, 16, 3, "Reacteur 2", colors.lime
148
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
149
150
	elseif idReac == Reactor3 then
151
		
152
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 28, 39, 2, 4, 29, 3, "Reacteur 3", colors.lime
153
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
154
155
	elseif idReac == Reactor4 then
156
		
157
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 41, 52, 2, 4, 42, 3, "Reacteur 4", colors.lime
158
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
159
	end
160
end
161
162
function drawMode()
163
	if Auto == 1 and Manu == 0 then
164
165
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 56, 76, 6, 8, 64, 7, "Auto", colors.lightBlue
166
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
167
		
168
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 79, 99, 6, 8, 87, 7, "Manu", colors.cyan
169
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
170
171
	elseif Auto == 0 and Manu == 1 then
172
173
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 56, 76, 6, 8, 64, 7, "Auto", colors.cyan
174
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
175
		
176
		local x1, x2, y1, y2, txt_x, txt_y, txt, couleur = 79, 99, 6, 8, 87, 7, "Manu", colors.lightBlue
177
		drawColor(x1, x2, y1, y2, txt_x, txt_y, txt, couleur)
178
	end
179
end
180
181
function infosGenerales()
182
	local prod1 = Reactor1.battery().producedLastTick()
183
	local prod2 = Reactor2.battery().producedLastTick()
184
	local total = prod1 + prod2
185
186
	local battery1 = Reactor1.battery().stored()
187
	local capa1 = Reactor1.battery().capacity()
188
189
	local battery2 = Reactor2.battery().stored()
190
	local capa2 = Reactor2.battery().capacity()
191
192
	local chargeBatt = round( ( (battery1 + battery2) / (capa1 + capa2) )* 100, 2)
193
194
	local conso = round( Reactor1.fuelTank().burnedLastTick() + Reactor2.fuelTank().burnedLastTick(), 2)
195
196
	mon.setCursorPos( 56, 10 )
197
	mon.write ( "Production Réacteur n°1 : " .. prod1 .. " RF/t      " )
198
	mon.setCursorPos( 56, 12 )
199
	mon.write ( "Production Réacteur n°2 : " .. prod2 .. " RF/t    " )
200
	mon.setCursorPos( 56, 14 )
201
	mon.write ( "Production totale : " .. total .. " RF/t         " )
202
	mon.setCursorPos( 56, 16 )
203
	mon.write ( "Batterie totale : " .. chargeBatt .. " %         " )
204
	mon.setCursorPos( 56, 18 )
205
	mon.write ("Consommation totale : " .. conso .. " mb/t             ")
206
end
207
208
function Infos_Reac(idReac)
209
210
	viewedReac = idReac
211
	if viewedReac.active() then
212
    	status = "On"
213
    	drawOn()
214
	else
215
    	status = "Off"
216
    	drawOff()
217
	end
218
219
	local prod = viewedReac.battery().producedLastTick()
220
	local temp = round(viewedReac.fuelTemperature(), 2)
221
	local battery = viewedReac.battery().stored()
222
	local capa = viewedReac.battery().capacity()
223
	local chargeBatt = round(battery / capa * 100, 2)
224
	local conso = round(viewedReac.fuelTank().burnedLastTick(), 2)
225
226
	mon.setCursorPos( 1, 12 )
227
	mon.write ("Production : " .. prod .. " RF/t             ")
228
	newLine(2)
229
	mon.write ("Température : " .. temp .. " °K             ")
230
	newLine(2)
231
	mon.write ("Batterie : " .. battery .. " RF ( "..chargeBatt.." % )             ")
232
	newLine(2)
233
	mon.write ("Consommation : " .. conso .. " mb/t             ")
234
end
235
236
function infos()
237
	
238
	infosGenerales()
239
	Infos_Reac(viewedReac)
240
	sleep( 0.1 )
241
end
242
243
function modeAuto(idReac)
244
245
	local battery = idReac.battery().stored()
246
	local capa = idReac.battery().capacity()
247
	local chargeBatt = round(battery / capa * 100, 2)
248
	if Auto == 1 and Manu == 0 then
249
		if chargeBatt >= 99 then
250
			idReac.setActive(false)
251
		elseif chargeBatt <= 15 then
252
			idReac.setActive(true)
253
		end
254
	end
255
end
256
257
function testClic()
258
259
	local event, side, cx, cy = os.pullEvent()
260
261
	if event == "monitor_touch" then
262
263
		if cy >= 2 and cy <= 4 then
264
			if cx >= 2 and cx <= 13 then
265
				drawActiveReac(Reactor1)
266
				Infos_Reac(Reactor1)
267
268
			elseif cx >= 15 and cx <= 26 then
269
				drawActiveReac(Reactor2)
270
				Infos_Reac(Reactor2)
271
			end
272
273
		elseif cy >= 8 and cy <= 10 then
274
			if cx >= 2 and cx <= 25 then
275
				drawOn()
276
				viewedReac.setActive(true)
277
278
			elseif cx >= 27 and cx <= 52 then
279
				drawOff()
280
				viewedReac.setActive(false)
281
			end
282
283
		elseif cy >= 6 and cy <= 8 then
284
			if cx >= 56 and cx <= 76 then
285
				Manu = 0
286
				Auto = 1
287
				drawMode()
288
289
			elseif cx >= 79 and cx <= 99 then
290
				Manu = 1
291
				Auto = 0
292
				drawMode()
293
			end
294
		end
295
	end
296
end
297
298
mon.setTextColor(colors.white)
299
mon.setBackgroundColor(colors.black)
300
301
mon.clear()
302
drawMenu()
303
viewedReac = Reactor1
304
305
while true do
306
307
	parallel.waitForAny( infos, testClic )
308
309
end