View difference between Paste ID: qgyxunZC and WJDznkfu
SHOW: | | - or go back to the newest paste.
1
local chat = peripheral.wrap("top")
2
local mon = peripheral.wrap("monitor_0")
3
local sg = peripheral.wrap("stargate_0")
4
local buttonTable = {}
5
local buttonName
6
7
mon.setBackgroundColor(colors.black)
8
mon.clear()
9
chat.capture("^SG")
10
11
function catchEntry()
12
    local _, message, pattern, player, uuid = os.pullEvent("chat_capture")
13
    if pattern == "^SG" then
14
        cutSG = string.gsub(message, "SG", "")
15
        chat.tell("[Stargate] Starting 'Stargate Protocol'!")
16
    end
17
end
18
19
20
21
function createButton(btnName, PosX, PosY, SizeX, SizeY, Name, Address, bkCol)
22
	buttonTable[btnName] = {}
23
	buttonTable[btnName]["rectangle"] = {}
24
	buttonTable[btnName]["PosX"] = PosX
25
	buttonTable[btnName]["PosY"] = PosY
26
	buttonTable[btnName]["SizeX"] = SizeX
27
	buttonTable[btnName]["SizeY"] = SizeY
28
	buttonTable[btnName]["Name"] = Name
29
	buttonTable[btnName]["Address"] = Address
30
	buttonTable[btnName]["bkCol"] = bkCol
31
	
32
end
33
34
local function drawButton(btnName)
35
	i = 1
36
	str = string.len(buttonTable[btnName]["Name"])
37
	for y = 1,buttonTable[btnName]["SizeY"] do
38
		for x = 1, buttonTable[btnName]["SizeX"] do
39
			--print(x..","..y.." : "..buttonTable[btnName]["PosX"]+x-1)
40
			--print(x..","..y.." : "..buttonTable[btnName]["PosY"]+y-1)
41
			mon.setBackgroundColor(buttonTable[btnName]["bkCol"])
42
			mon.setCursorPos(buttonTable[btnName]["PosX"]+x-1, buttonTable[btnName]["PosY"]+y-1)
43
			mon.write(" ")
44
			
45
			--mon.setBackgroundColor(colors.gray)
46
			buttonTable[btnName]["rectangle"][x..":"..y] = {}
47
			buttonTable[btnName]["rectangle"][x..":"..y] = buttonTable[btnName]["PosX"]+x-1 ..":"..buttonTable[btnName]["PosY"]+y-1
48
			if y == buttonTable[btnName]["SizeY"] then
49
				textPosiX = buttonTable[btnName]["SizeX"]-str
50
				textPosX = textPosiX/2
51
				if y ~= 1 and y ~= 2 then
52
        mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"]+y/(buttonTable[btnName]["SizeY"]))
53
				elseif y == 1 or y == 2 then
54
        mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"])
55
    end
56
        mon.write(buttonTable[btnName]["Name"])
57
			
58
   end
59
			i = i+1
60
		end
61
	end
62
	--print(str)
63
end
64
65
local function drawButtonPress(btnName)
66
	if btnName ~= nil then
67
		str = string.len(buttonTable[btnName]["Name"])
68
		for y = 1,buttonTable[btnName]["SizeY"] do
69
			for x = 1, buttonTable[btnName]["SizeX"] do
70
				--print(x..","..y.." : "..buttonTable[btnName]["PosX"]+x-1)
71
				--print(x..","..y.." : "..buttonTable[btnName]["PosY"]+y-1)
72
				mon.setBackgroundColor(colors.red)
73
				mon.setCursorPos(buttonTable[btnName]["PosX"]+x-1, buttonTable[btnName]["PosY"]+y-1)
74
				mon.write(" ")
75
				
76
				--mon.setBackgroundColor(colors.gray)
77
				if y == buttonTable[btnName]["SizeY"] then
78
					textPosiX = buttonTable[btnName]["SizeX"]-str
79
					textPosX = textPosiX/2
80
					if y ~= 1 and y ~= 2 then
81
         mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, math.floor(buttonTable[btnName]["PosY"]+y/buttonTable[btnName]["SizeY"]))
82
					elseif y == 1 or y == 2 then
83
         mon.setCursorPos(buttonTable[btnName]["PosX"]+textPosX, buttonTable[btnName]["PosY"])
84
     end
85
     mon.write(buttonTable[btnName]["Name"])
86
  
87
				end
88
				i = i+1
89
			end
90
		end
91
	else
92
		print("Looks like the button you requested is not available")
93
	end
94
end
95
96
local function testButtonPress(tPosX, tPosY)
97
	for k,v in pairs(buttonTable) do
98
		for a,b in pairs(buttonTable[k]["rectangle"]) do
99
			if b == tPosX..":"..tPosY then
100
				return k
101
			end
102
		end
103
	end
104
end
105
106
--createButton(registryName, Xmin, Ymin, Xmax, Ymax, displayName, stargate, color)
107
108
createButton("Nether", 1,1,10,2, "Nether", "PFER-7QN-9R", colors.orange)
109
createButton("Moon", 1,11,10,3,"Moon", "1FYB-81J-KE", colors.lightGray)
110
createButton("End", 11,1,10,2,"End", "I454-OTE-QX", colors.purple)
111
createButton("Mesa", 1,3,10,1,"Mesa", "TAGJ-YB8-GC", colors.yellow)
112
createButton("Mars", 11,11,10,3, "Mars", "PFS5-21P-6H", colors.orange)
113
114
115
createButton("disconnect", 1, 17, 39,1, "Disconnect", "", colors.gray)
116
createButton("iris", 1,18,39,1, "", "", colors.lime)
117
createButton("status", 1,19,39,1, "","",colors.lime)
118
119
120
local function autoDrawBtn()
121
	for k,v in pairs(buttonTable) do
122
		drawButton(k)
123
	end
124
end
125
126
local function monitor_touch_event()
127
	event, side, xPos, yPos = os.pullEvent("monitor_touch")
128
    if event == "monitor_touch" then
129
    	buttonName = testButtonPress(xPos, yPos)
130
    	drawButtonPress(buttonName)
131
    	print(xPos, yPos)
132
    	if buttonName == "disconnect" then
133
    		print("Disconnecting")
134
    		sg.disconnect()
135
    		sleep(1)
136
    		autoDrawBtn()
137
    	elseif buttonName ~= nil then
138
    		sg.dial(buttonTable[buttonName]["Address"])
139
    		sleep(1)
140
    		autoDrawBtn()
141
    	end
142
    end
143
end
144
145
autoDrawBtn()
146
147
while true do
148
    monitor_touch_event()
149
end