fix more oop and bugs
This commit is contained in:
parent
db7e2d06ad
commit
6c997a36fa
@ -85,7 +85,7 @@ function Group.addport(self, port)
|
||||
elseif port.type == PortTypes.input then
|
||||
self.in_ports[port] = port
|
||||
self.nin_ports = self.nin_ports + 1
|
||||
port:setinputstate(self.state)
|
||||
Port.setinputstate(port, self.state)
|
||||
end
|
||||
end
|
||||
|
||||
@ -138,11 +138,11 @@ function Group.setstate(self, state)
|
||||
if state ~= self.state then
|
||||
self.state = state
|
||||
self.updatetick = sim.currenttick
|
||||
|
||||
|
||||
for k, port in pairs(self.in_ports) do
|
||||
Port.setinputstate(port, state)
|
||||
end
|
||||
|
||||
|
||||
Simulation.queuegroupfx(sim, self)
|
||||
end
|
||||
end
|
||||
|
@ -290,7 +290,9 @@ while 1 do
|
||||
for a = i+3, i+3+argc-1 do
|
||||
argv[#argv+1] = collapseescape(data[a])
|
||||
end
|
||||
Simulation.queuegateinput(sim, gate, argv)
|
||||
if gate then
|
||||
Simulation.queuegateinput(sim, gate, argv)
|
||||
end
|
||||
|
||||
i = i+2+argc
|
||||
elseif data[i] == "SAVE" then
|
||||
|
18
sim/port.lua
18
sim/port.lua
@ -32,18 +32,18 @@ function Port.new(self, type, direction, position, causeupdate)
|
||||
return o
|
||||
end
|
||||
|
||||
function Port.setstate(self, state)
|
||||
if state ~= self.state then
|
||||
self.state = state
|
||||
Simulation.queuegroup(sim, self.group)
|
||||
function Port.setstate(port, state)
|
||||
if state ~= port.state then
|
||||
port.state = state
|
||||
Simulation.queuegroup(sim, port.group)
|
||||
end
|
||||
end
|
||||
|
||||
function Port.setinputstate(self, state)
|
||||
if state ~= self.state then
|
||||
self.state = state
|
||||
if self.causeupdate then
|
||||
Simulation.queuegate(sim, self.gate)
|
||||
function Port.setinputstate(port, state)
|
||||
if state ~= port.state then
|
||||
port.state = state
|
||||
if port.causeupdate then
|
||||
Simulation.queuegate(sim, port.gate)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -271,31 +271,31 @@ function Simulation.tick(self)
|
||||
Group.setstate(group, newstate)
|
||||
end
|
||||
self.groupqueue = {}
|
||||
|
||||
|
||||
for k, gate in pairs(self.initqueue) do
|
||||
gate.definition.init(gate)
|
||||
end
|
||||
self.initqueue = {}
|
||||
|
||||
|
||||
for gate, inputs in pairs(self.inputqueue) do
|
||||
for inputidx, argv in ipairs(inputs) do
|
||||
gate.definition.input(gate, argv)
|
||||
end
|
||||
end
|
||||
self.inputqueue = {}
|
||||
|
||||
|
||||
if self.tickqueue[self.currenttick] ~= nil then
|
||||
for i, gate in ipairs(self.tickqueue[self.currenttick]) do
|
||||
Simulation.queuegate(self, gate)
|
||||
end
|
||||
self.tickqueue[self.currenttick] = nil
|
||||
end
|
||||
|
||||
|
||||
for k, gate in pairs(self.gatequeue) do
|
||||
gate.definition.logic(gate)
|
||||
end
|
||||
self.gatequeue = {}
|
||||
|
||||
|
||||
self.currenttick = self.currenttick + 1
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user