View difference between Paste ID: EG29K9Rh and Fe4kiZsf
SHOW: | | - or go back to the newest paste.
1
local mon = peripheral.wrap("top")
2
local selected = 0
3-
local names = {"Anti","FS","Xun","Ninjuni"}
3+
local names = {"Anti","Gau","Xun","Ninjuni"}
4-
local cableSide = "bottom"
4+
local cableSide = "back"
5
6
local XunSwitchIn = colors.pink
7
local XunToggleOut = colors.red
8
local FSMainSwitchOut = colors.black
9
10
local FSMainSwitchState = false
11
12
function SetColor(row)
13
	if ( selected == row ) then
14
		mon.setTextColor(colors.black)
15
		mon.setBackgroundColor(colors.white)
16
	else
17
		mon.setTextColor(colors.white)
18
		mon.setBackgroundColor(colors.black)
19
	end
20
end
21
22
function CheckSwitch(color)
23
	local state = rs.getBundledInput(cableSide)
24
	return colors.test(state,color)
25
end
26
27
function getSelected()
28-
	if ( FSMainSwitchState ) then return 2 end
28+
	if ( FSMainSwitchState == false ) then return 2 end
29
	if ( CheckSwitch(XunSwitchIn) ) then return 3 end
30
	return 4
31
end
32
33
function FindSelected()
34
	selected = getSelected()
35
end
36
37
function DrawScreen()
38
	if ( selected == 0 ) then FindSelected() end
39
	mon.clear()
40
	for row = 1,#names do
41
		mon.setCursorPos(1,row)
42
		SetColor(row)
43
		mon.write(names[row])
44
	end
45
	SetColor(-1)
46
end
47
48
function pulse(color)
49
	local oldColor = rs.getBundledOutput(cableSide)
50
	local newColor = colors.combine(color,oldColor)
51
	rs.setBundledOutput(cableSide,newColor)
52
	os.sleep(0.2)
53
	rs.setBundledOutput(cableSide,oldColor)
54
55
end
56
57
function SetTrack(FSnew,XunNew)
58
	FSMainSwitchState = FSnew
59
	
60
	if ( XunNew ~= CheckSwitch(XunSwitchIn) ) then pulse(XunToggleOut) end
61
	
62
	if ( FSMainSwitchState ) then rs.setBundledOutput(cableSide,FSMainSwitchOut)
63
	else rs.setBundledOutput(cableSide,0) end
64
65
end
66
67
function NewTrack(row)
68
	if ( row > #names ) then return end
69
	if ( row == selected ) then return end
70
	
71
	if ( row == 1 or row == 4 ) then
72
		SetTrack(true,false)
73
	end
74
	if ( row == 2 ) then
75
		SetTrack(false,false)
76
	end
77
	if ( row == 3 ) then
78-
		SetTrack(false,true)
78+
		SetTrack(true,true)
79
	end
80
	selected = row
81
	DrawScreen()
82
end
83
84
85
print("Railcontroler. Right click on monitor name to select track")
86
DrawScreen()
87
while true do
88
	event,p1,p2,p3 = os.pullEvent()
89
	if ( event == "monitor_touch" ) then NewTrack(p3) end
90
	if ( event == "redstone" ) then 
91
		FindSelected()
92
		DrawScreen()
93
	end
94
	
95
end