start adding c structs for gates and ports
This commit is contained in:
54
sim/main.lua
54
sim/main.lua
@@ -14,15 +14,15 @@ local ffi = require("ffi")
|
||||
|
||||
dofile("iosafe.lua")
|
||||
|
||||
FFI = ffi
|
||||
dofile("utility.lua")
|
||||
dofile("simulation.lua")
|
||||
dofile("group.lua")
|
||||
dofile("wire.lua")
|
||||
dofile("gatedef.lua")
|
||||
dofile("gate.lua")
|
||||
dofile("port.lua")
|
||||
dofile("gate.lua")
|
||||
dofile("save.lua")
|
||||
FFI = ffi
|
||||
dofile("compile.lua")
|
||||
FFI = nil
|
||||
|
||||
@@ -49,6 +49,7 @@ local avgticks = {}
|
||||
local totalticks = 0
|
||||
|
||||
local sim = Simulation.new(Simulation)
|
||||
GSim = sim
|
||||
|
||||
local units = {
|
||||
"uHz",
|
||||
@@ -164,8 +165,8 @@ while 1 do
|
||||
|
||||
Simulation.addgate(sim, gate)
|
||||
--print(gate.objref)
|
||||
gate.definition.init(gate)
|
||||
gate.definition.logic(gate)
|
||||
Gate.init(gate)
|
||||
Gate.logic(gate)
|
||||
|
||||
i = i + 4
|
||||
elseif data[i] == "RW" then
|
||||
@@ -254,33 +255,34 @@ while 1 do
|
||||
local userid = data[i+1]
|
||||
local objref = tonumber(data[i+2])
|
||||
|
||||
local obj = Simulation.getwirebyref(sim, objref) or Simulation.getgatebyref(sim, objref)
|
||||
local info = ""
|
||||
|
||||
if obj ~= nil then
|
||||
local info = ""
|
||||
local wire = Simulation.getwirebyref(sim, objref)
|
||||
if wire then
|
||||
local numportsi = 0; for k, wire2 in pairs(Wire.getgroup(wire).in_ports ) do numportsi = numportsi+1 end
|
||||
local numportso = 0; for k, wire2 in pairs(Wire.getgroup(wire).out_ports) do numportso = numportso+1 end
|
||||
local numwires = 0; for k, wire2 in pairs(Wire.getgroup(wire).wires ) do numwires = numwires +1 end
|
||||
|
||||
if obj.logictype == 0 then
|
||||
local numportsi = 0; for k, wire in pairs(Wire.getgroup(obj).in_ports ) do numportsi = numportsi+1 end
|
||||
local numportso = 0; for k, wire in pairs(Wire.getgroup(obj).out_ports) do numportso = numportso+1 end
|
||||
local numwires = 0; for k, wire in pairs(Wire.getgroup(obj).wires ) do numwires = numwires +1 end
|
||||
|
||||
info = "\\c5Net " .. tostring(obj.group):match("table: 0x(.+)"):upper() .. "\n" .. (Wire.getgroup(obj).state and "\\c2On" or "\\c0Off") .. "\n" ..
|
||||
"Wires: "..numwires.."\n"..
|
||||
"In Ports: " ..numportsi.."\n"..
|
||||
"Out Ports: "..numportso
|
||||
;
|
||||
else
|
||||
info = "\\c5" .. obj.definition.name .. "<br>"
|
||||
for i = 1, #obj.ports do
|
||||
info = info .. (obj.ports[i].state and "\\c2" or "\\c0") .. obj.definition.ports[i].name .. (i ~= #obj.ports and " " or "")
|
||||
end
|
||||
end
|
||||
|
||||
if info ~= "" then
|
||||
client:send("GINFO\t" .. userid .. "\t" .. expandescape(info) .. "\n")
|
||||
info = "\\c5Net " .. tostring(wire.group):match("table: 0x(.+)"):upper() .. "\n" .. (Wire.getgroup(wire).state and "\\c2On" or "\\c0Off") .. "\n" ..
|
||||
"Wires: "..numwires.."\n"..
|
||||
"In Ports: " ..numportsi.."\n"..
|
||||
"Out Ports: "..numportso
|
||||
;
|
||||
end
|
||||
|
||||
local gate = Simulation.getgatebyref(sim, objref)
|
||||
if gate then
|
||||
local def = Gate.getdefinition(gate)
|
||||
info = "\\c5" .. def.name .. "<br>"
|
||||
for i = 1, #gate.ports do
|
||||
info = info .. (gate.ports[i].state and "\\c2" or "\\c0") .. def.ports[i].name .. (i ~= #gate.ports and " " or "")
|
||||
end
|
||||
end
|
||||
|
||||
if info ~= "" then
|
||||
client:send("GINFO\t" .. userid .. "\t" .. expandescape(info) .. "\n")
|
||||
end
|
||||
|
||||
i = i + 2
|
||||
elseif data[i] == "SINFO" then
|
||||
client:send("SINFO\t" .. data[i+1] .. "\t" .. sim.nwires .. "\t" .. sim.ngates .. "\t" .. sim.ninports .. "\t" .. sim.noutports .. "\n")
|
||||
|
||||
Reference in New Issue
Block a user