-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbios.lua
More file actions
109 lines (95 loc) · 2.59 KB
/
bios.lua
File metadata and controls
109 lines (95 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
-------------------------------------------------------------------------------
-- bios
require("lib")
bios = {}
local bios_mt = new_class(bios)
function bios:new(control)
return setmetatable( { control = control }, bios_mt)
end
function bios:clear()
self.control.enabled = true
self.control.parameters = { parameters = {} }
end
function bios:inr(signal) -- in red
local red = self.control.get_circuit_network(defines.wire_type.red)
local result = 0
if red then
result = red.get_signal(signal) or 0
end
return result
end
function bios:ing(signal) -- in green
local green = self.control.get_circuit_network(defines.wire_type.green)
local result = 0
if green then
result = green.get_signal(signal) or 0
end
return result
end
function bios:inrg(signal) -- in r+g
return self:INR(signal) + self:ING(signal)
end
function bios:ins(include_red, include_green) -- in snapshot r+g
local network = {}
if include_red == nil or include_red then
local red = self.control.get_circuit_network(defines.wire_type.red)
if red ~= nil and red.signals ~= nil then
for k, v in pairs(red.signals) do
network[v.signal.name] = v
end
end
end
if include_green == nil or include_green then
local green = self.control.get_circuit_network(defines.wire_type.green)
if green ~= nil and green.signals ~= nil then
for k, v in pairs(green.signals) do
network[v.signal.name] = v
end
end
end
return network
end
function bios:gets() -- get out snapshot
local result = {}
for k, v in pairs(self.control.parameters.parameters) do
if v.signal.name then
result[v.signal.name] = v
end
end
return result
end
function bios:getval(signal)
for _, v in pairs(self.control.parameters.parameters) do
if v.signal == nil or v.signal.name == nil then
return 0
elseif v.signal.name == signal then
return v.count
end
end
end
function bios:outs(signals) -- set out snapshot
local parameters = {}
local index = 1
for n, s in pairs(signals) do
table.insert(parameters, {index = index, signal = {name = s.signal.name, type = s.signal.type}, count = s.count or 1})
index = index + 1
end
self.control.parameters = { parameters = parameters }
self.control.enabled = true
end
function bios:out(signal)
local parameters = self.control.parameters
for _, v in pairs(parameters.parameters) do
if v.signal == nil or v.signal.name == nil then
v.signal = signal.signal
v.count = signal.count
break
elseif v.signal.name == signal.signal.name then
v.count = signal.count or 1
break
end
end
self.control.parameters = parameters
self.control.enabled = true
end
return bios