make states numbers instead of booleans

This commit is contained in:
Redo0
2021-05-29 13:13:26 -05:00
parent ebc9a7f108
commit 8bb4ff4421
6 changed files with 31 additions and 45 deletions

View File

@@ -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)