make sim use proper OOP

This commit is contained in:
Redo0
2021-05-25 14:18:13 -05:00
parent 0963ef8ca8
commit be2df1ef33
8 changed files with 74 additions and 56 deletions

View File

@@ -36,7 +36,7 @@ end
function Port.setstate(port, state)
if state ~= port.state then
port.state = state
Simulation.queuegroup(port.sim, port.group)
Simulation.queuegroup(Port.getsim(port), port.group)
end
end
@@ -44,46 +44,50 @@ function Port.setinputstate(port, state)
if state ~= port.state then
port.state = state
if port.causeupdate then
Simulation.queuegate(port.sim, port.gate)
Simulation.queuegate(Port.getsim(port), port.gate)
end
end
end
function Port.getconnectionposition(self)
local offset = PortDirections[self.direction]
return {self.position[1]+offset[1], self.position[2]+offset[2], self.position[3]+offset[3]}
function Port.getconnectionposition(port)
local offset = PortDirections[port.direction]
return {port.position[1]+offset[1], port.position[2]+offset[2], port.position[3]+offset[3]}
end
function Port.isrising(self)
if self.group == nil then
function Port.isrising(port)
if port.group == nil then
return false
end
return self.group.state and (self.group.updatetick == self.sim.currenttick)
return port.group.state and (port.group.updatetick == Port.getsim(port).currenttick)
end
function Port.isfalling(self)
if self.group == nil then
function Port.isfalling(port)
if port.group == nil then
return false
end
return self.group.state == false and (self.group.updatetick == self.sim.currenttick)
return port.group.state == false and (port.updatetick == Port.getsim(port).currenttick)
end
function Port.setgate(self, gate)
self.gate = gate
function Port.setgate(port, gate)
port.gate = gate
end
function Port.setgroup(self, group)
self.group = group
function Port.setgroup(port, group)
port.group = group
end
function Port.getgroup(self)
return self.group
function Port.getgroup(port)
return port.group
end
function Port.gettype(self)
return self.type
function Port.gettype(port)
return port.type
end
function Port.getstate(self)
return self.state
function Port.getstate(port)
return port.state
end
function Port.getsim(port)
return port.sim
end