You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.2 KiB
Lua
50 lines
1.2 KiB
Lua
print("Singleplayer Startup")
|
|
|
|
local constants = require("constants")
|
|
local rpc = require("rpc")
|
|
local socket = require("socket")
|
|
|
|
local v1_message = {}
|
|
require("physics")(v1_message)
|
|
require("world")(v1_message)
|
|
|
|
local server = assert(socket.udp())
|
|
local ip, port = nil, nil
|
|
|
|
local clientCount = 0
|
|
local clients = {}
|
|
|
|
client:settimeout(0)
|
|
local clientToServer = love.thread.getChannel ( "c2s" );
|
|
local serverToClient = love.thread.getChannel ( "s2c" );
|
|
|
|
assert(server:setsockname("*", 42069))
|
|
if not server or not socket then error("failed to listen on socket") end
|
|
|
|
while true do
|
|
::nw_next::
|
|
print("iteration start")
|
|
local data = clientToServer:demand()
|
|
print("received data from " .. ip)
|
|
|
|
for _, req in ipairs(rpc.parse_multiple(data)) do
|
|
if req.clientid == 0 then
|
|
count = count + 1
|
|
response = "rq" .. constants.US .. "cid" .. constants.US .. count
|
|
clients[count] = { ip = ip, port = port }
|
|
end
|
|
|
|
local response = rpc.eval(v1_message, req)
|
|
|
|
if response then
|
|
local payload = "poppyV001" .. constants.US .. "0" .. constants.US .. response
|
|
print("sending response " .. payload)
|
|
assert(serverToClient:send(payload))
|
|
else
|
|
print(req .. " had no return value!")
|
|
end
|
|
end
|
|
print("iteration over")
|
|
end
|
|
::nw_break::
|