make states numbers instead of booleans
This commit is contained in:
@@ -15,11 +15,9 @@ function Simulation.new(sim)
|
||||
groupqueue = {},
|
||||
groupfxqueue = {},
|
||||
gatequeue = {},
|
||||
initqueue = {},
|
||||
inputqueue = {},
|
||||
initqueue = nil,
|
||||
inputqueue = nil,
|
||||
tickqueue = {},
|
||||
inputqueue_nonempty = false,
|
||||
initqueue_nonempty = false,
|
||||
|
||||
callbacks = nil,
|
||||
|
||||
@@ -253,14 +251,13 @@ function Simulation.queuegatelater(sim, gate, delay)
|
||||
end
|
||||
|
||||
function Simulation.queuegateinput(sim, gate, argv)
|
||||
sim.inputqueue[gate] = sim.inputqueue[gate] or {}
|
||||
table.insert(sim.inputqueue[gate], argv)
|
||||
sim.inputqueue_nonempty = true
|
||||
sim.inputqueue = sim.inputqueue or {}
|
||||
sim.inputqueue[gate] = argv
|
||||
end
|
||||
|
||||
function Simulation.queuegateinit(sim, gate)
|
||||
sim.initqueue = sim.initqueue or {}
|
||||
sim.initqueue[gate] = gate
|
||||
sim.initqueue_nonempty = true
|
||||
end
|
||||
|
||||
function Simulation.queuegroup(sim, group)
|
||||
@@ -281,8 +278,8 @@ function Simulation.dequeuegate(sim, gate)
|
||||
if gate.in_queue then
|
||||
array_remove(sim.gatequeue, gate)
|
||||
end
|
||||
sim.initqueue[gate] = nil
|
||||
sim.inputqueue[gate] = nil
|
||||
if sim.inputqueue~=nil then sim.inputqueue[gate] = nil end
|
||||
if sim.initqueue ~=nil then sim.initqueue [gate] = nil end
|
||||
for tick, tickq in pairs(sim.tickqueue) do
|
||||
tickq[gate] = nil
|
||||
end
|
||||
@@ -304,22 +301,18 @@ function Simulation.tick(sim)
|
||||
end
|
||||
sim.groupqueue = {}
|
||||
|
||||
if sim.initqueue_nonempty then
|
||||
if sim.initqueue ~= nil then
|
||||
for k, gate in pairs(sim.initqueue) do
|
||||
Gate.init(gate)
|
||||
end
|
||||
sim.initqueue = {}
|
||||
sim.initqueue_nonempty = false
|
||||
sim.initqueue = nil
|
||||
end
|
||||
|
||||
if sim.inputqueue_nonempty then
|
||||
for gate, inputs in pairs(sim.inputqueue) do
|
||||
for inputidx, argv in ipairs(inputs) do
|
||||
Gate.input(gate, argv)
|
||||
end
|
||||
if sim.inputqueue ~= nil then
|
||||
for gate, argv in pairs(sim.inputqueue) do
|
||||
Gate.input(gate, argv)
|
||||
end
|
||||
sim.inputqueue = {}
|
||||
sim.inputqueue_nonempty = false
|
||||
sim.inputqueue = nil
|
||||
end
|
||||
|
||||
if sim.tickqueue[sim.current_tick] ~= nil then
|
||||
@@ -343,7 +336,7 @@ function Simulation.sendfxupdate(sim)
|
||||
if group.state ~= group.fxstate then
|
||||
group.fxstate = group.state
|
||||
|
||||
local data = bool_to_int[group.state]
|
||||
local data = group.state
|
||||
|
||||
for i, wire in pairs(group.wires) do
|
||||
data = data .. "\t" .. Wire.getobjref(wire)
|
||||
|
||||
Reference in New Issue
Block a user