poppy-client/server/unpriviliged_commands/init.lua

41 lines
1.4 KiB
Lua

local utils = require("shared.utils")
local constants = require("server.constants")
local format = require("shared.networkFormat")
local rpc = require("server.rpc")
local clientCount = 0
local function remoteCallTo(ip, port, name, ...)
local request = "PPY\x03" .. format.encodeFunction(name, 0, ...)
server:sendto(request, ip, port)
print("send request to " .. ip .. " " .. port .. "[" .. request .. "]")
end
return function(commands)
function commands.init(ip, port, nickname, avatar)
clientCount = clientCount +1
participants[clientCount] = { ip = ip, port = port, name = nickname, avatar = avatar }
print("New client connected. Granting id: [" .. clientCount .. "] IP: " .. ip .. " Port:" .. port)
for i, client in pairs(participants) do
if i ~= clientCount then
-- to Existing client
remoteCallTo(client.ip, client.port, "playerJoin", clientCount, nickname, avatar)
-- to New client
remoteCallTo(ip, port, "playerJoin", i, client.name, client.avatar)
end
end
WORLD_LOCK = true
-- The world is now locked
-- Client response
remoteCallTo(ip, port, "init", clientCount, nickname, avatar, constants.world.id,
constants.world.x, constants.world.y)
-- Send World
local fg = love.data.compress("string", "lz4", levelloop.Canvas.fg:newImageData())
local bg = love.data.compress("string", "lz4", levelloop.Canvas.bg:newImageData())
--network.prepareChunk(fg
WORLD_LOCK = false
end
end