View difference between Paste ID: zBQeUwbw and fZyCjg6r
SHOW: | | - or go back to the newest paste.
1
-- (C) 2022 FoxInvest
2
menu = {}
3
scambi = {}
4
semafori = {}
5
scambiPos = {}
6
scambiName = {}
7
scambiStatus = {}
8
semaforiPos = {}
9
semaforiName = {}
10
semaforiStatus = {}
11
12
function clearAllTables()
13
  menu = {}
14
  scambi = {}
15
  semafori = {}
16
  scambiPos = {}
17
  scambiName = {}
18
  scambiStatus = {}
19
  semaforiPos = {}
20
  semaforiName = {}
21
  semaforiStatus = {}
22
end
23
24
function setMenu(tratte)
25
  local colori = {"gray", "lightGray", "gray", "lightGray", "gray", "lightGray"}
26
  term.setCursorPos(1, 1)
27
  for i, v in pairs(tratte) do
28
    local cursorX, cursorY = term.getCursorPos()
29
    term.setBackgroundColor(colors[colori[i]])
30
    term.setTextColor(colors.white)
31
    term.write(v)
32
    table.insert(menu, cursorX .. "," .. cursorX + #v)
33
  end
34
end
35
36
function split(s, delimiter)
37
  result = {}
38-
  table.insert(semaforiStatus, "false")
38+
39
    table.insert(result, match)
40
  end
41-
function getSemaforoPositionByName(color)
41+
42
end
43-
    if (v == color) then
43+
44-
      return semaforiPos[i]
44+
45
  local scambio = {}
46
  table.insert(scambio, color)
47
  table.insert(scambio, x)
48
  table.insert(scambio, y)
49
  table.insert(scambio, type)
50
  table.insert(scambi, scambio)
51-
    if (v == color) then
51+
52-
      return scambiPos[i]
52+
53
  table.insert(scambiStatus, "false")
54
end
55
56
function semaforo(x, y, color)
57
  local semaforo = {}
58
  table.insert(semaforo, color)
59-
    if (v == color) then
59+
60-
      return scambi[i][4]
60+
61
  table.insert(semafori, semaforo)
62
  table.insert(semaforiPos, x .. "," .. y)
63
  table.insert(semaforiName, color)
64
  table.insert(semaforiStatus, "true")
65
end
66
67
function getSemaforoPosByName(color)
68
  return semaforiPos[getSemaforoNumberInArray(color)]
69
end
70
71
function getSemaforoNameByPos(x, y)
72
  for i, v in pairs(semaforiPos) do
73
    if (x .. "," .. y == v) then
74
      return semaforiName[i]
75
    end
76
  end
77
  return nil
78
end
79-
    term.setBackgroundColor(colors.blue)
79+
80
function getSemaforoStatus(color)
81
  return semaforiStatus[getSemaforoNumberInArray(color)]
82
end
83
84
function getScambioPosByName(color)
85
  return scambiPos[getSegnaleNumberInArray(color)]
86
end
87
88
function getScambioTypeByName(color)
89
  return scambi[getSegnaleNumberInArray(color)][4]
90
end
91-
      return scambiStatus[i]
91+
92
function getScambioNameByPos(x, y) 
93
  for i, v in pairs(scambiPos) do
94
    if (x .. "," .. y == v) then
95
      return scambiName[i]
96
    end
97
  end
98
  return nil
99
end
100
101
function viewScambi()
102
  for i, v in pairs(scambiName) do
103
    local dim = split(scambiPos[i], ",")
104
    local type = getScambioTypeByName(v)
105
    term.setCursorPos(tonumber(dim[1]), tonumber(dim[2]))
106
    term.setTextColor(colors.white)
107
    term.setBackgroundColor(colors.black)
108
    if isScambioDeviato(v) == "true" then
109
      term.write(type)
110-
  term.setBackgroundColor(colors.blue)
110+
111
      term.write("-")
112
    end
113
  end
114
end
115
116
function viewSemafori()
117
  for i, v in pairs(semaforiName) do
118
    local dim = split(semaforiPos[i], ",")
119
    term.setCursorPos(tonumber(dim[1]), tonumber(dim[2]))
120
    term.setTextColor(colors.white)
121
    if getSemaforoStatus(v) == "true" then
122
      term.setBackgroundColor(colors.green)
123
      term.write(" ")
124
    else 
125
      term.setBackgroundColor(colors.red)
126
      term.write(" ")
127
    end
128
  end
129
end
130
131
function isScambioDeviato(color)
132
  return scambiStatus[getSegnaleNumberInArray(color)]
133
end
134
135
function getSegnaleNumberInArray(color)
136
  for i, v in pairs(scambiName) do
137
    if v == color then
138
      return i
139
    end
140
  end
141
  return false
142
end
143
144
function getSemaforoNumberInArray(color)
145
  for i, v in pairs(semaforiName) do
146
    if v == color then
147
      return i
148
    end
149
  end
150
  return false
151
end
152
153
function setScambio(color)
154
  local pos = split(getScambioPosByName(color), ',')
155
  term.setCursorPos(tonumber(pos[1]), tonumber(pos[2]))
156
  term.setTextColor(colors.white)
157
  term.setBackgroundColor(colors.black)
158
  local number = getSegnaleNumberInArray(color)
159
  if isScambioDeviato(color) == "true" then
160
    scambiStatus[number] = "false"
161
  else
162
    scambiStatus[number] = "true"
163
  end
164
  local actNumber = 0
165
  for i, v in pairs(scambiStatus) do
166
    if v == "true" then
167
      actNumber = actNumber + colors[scambiName[i]]
168
    end
169
  end
170
  rs.setBundledOutput("bottom", actNumber)
171
end
172
173
function setSemaforo(color)
174
  local pos = split(getSemaforoPosByName(color), ',')
175
  term.setCursorPos(tonumber(pos[1]), tonumber(pos[2]))
176
  term.setTextColor(colors.white)
177
  local number = getSemaforoNumberInArray(color)
178
  if getSemaforoStatus(color) == "true" then
179
    semaforiStatus[number] = "false"
180
  else
181
    semaforiStatus[number] = "true"
182
  end
183
  local actNumber = 0
184
  for i, v in pairs(semaforiStatus) do
185
    if v == "false" then
186
      actNumber = actNumber + colors[semaforiName[i]]
187
    end
188
  end
189
  rs.setBundledOutput("right", actNumber)
190
end