|
@@ -1,10 +1,10 @@
|
|
-local NetServer = extend(app.core.net)
|
|
|
|
|
|
+local NetServer = extend(app.net.core)
|
|
|
|
|
|
NetServer.signatures = {}
|
|
NetServer.signatures = {}
|
|
-NetServer.signatures[app.core.net.events.join] = {{'id', '4bits'}, {'username', 'string'}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.events.leave] = {{'id', '4bits'}, {'reason', 'string'}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.events.class] = {{'id', '4bits'}, {'class', '4bits'}, {'team', '1bit'}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.events.sync] = {
|
|
|
|
|
|
+NetServer.signatures[app.net.core.events.join] = {{'id', '4bits'}, {'username', 'string'}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.events.leave] = {{'id', '4bits'}, {'reason', 'string'}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.events.class] = {{'id', '4bits'}, {'class', '4bits'}, {'team', '1bit'}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.events.sync] = {
|
|
{'id', '4bits'},
|
|
{'id', '4bits'},
|
|
{'tick', '16bits'},
|
|
{'tick', '16bits'},
|
|
{'ack', '16bits'},
|
|
{'ack', '16bits'},
|
|
@@ -14,17 +14,17 @@ NetServer.signatures[app.core.net.events.sync] = {
|
|
{'weapon', '3bits'}, {'skill', '3bits'},
|
|
{'weapon', '3bits'}, {'skill', '3bits'},
|
|
delta = {'x', 'y', 'z', 'angle', 'health', 'shield', 'weapon', 'skill'}
|
|
delta = {'x', 'y', 'z', 'angle', 'health', 'shield', 'weapon', 'skill'}
|
|
}
|
|
}
|
|
-NetServer.signatures[app.core.net.events.fire] = {
|
|
|
|
|
|
+NetServer.signatures[app.net.core.events.fire] = {
|
|
{'id', '4bits'}, {'slot', '3bits'}, {'mx', '12bits'}, {'my', '12bits'},
|
|
{'id', '4bits'}, {'slot', '3bits'}, {'mx', '12bits'}, {'my', '12bits'},
|
|
delta = {{'mx', 'my'}}
|
|
delta = {{'mx', 'my'}}
|
|
}
|
|
}
|
|
-NetServer.signatures[app.core.net.events.damage] = {{'id', '4bits'}, {'amount', 'string'}, {'from', '4bits'}}
|
|
|
|
-NetServer.signatures[app.core.net.events.dead] = {{'id', '4bits'}, {'kill', '4bits'}, {'assists', {{'id', '4bits'}}}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.events.spawn] = {{'id', '4bits'}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.events.chat] = {{'message', 'string'}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.events.prop] = {{'id', '16bits'}, {'x', '16bits'}, {'y', '16bits'}}
|
|
|
|
-NetServer.signatures[app.core.net.messages.join] = {{'id', '4bits'}, important = true}
|
|
|
|
-NetServer.signatures[app.core.net.messages.snapshot] = {
|
|
|
|
|
|
+NetServer.signatures[app.net.core.events.damage] = {{'id', '4bits'}, {'amount', 'string'}, {'from', '4bits'}}
|
|
|
|
+NetServer.signatures[app.net.core.events.dead] = {{'id', '4bits'}, {'kill', '4bits'}, {'assists', {{'id', '4bits'}}}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.events.spawn] = {{'id', '4bits'}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.events.chat] = {{'message', 'string'}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.events.prop] = {{'id', '16bits'}, {'x', '16bits'}, {'y', '16bits'}}
|
|
|
|
+NetServer.signatures[app.net.core.messages.join] = {{'id', '4bits'}, important = true}
|
|
|
|
+NetServer.signatures[app.net.core.messages.snapshot] = {
|
|
{'tick', '16bits'},
|
|
{'tick', '16bits'},
|
|
{'map', 'string'},
|
|
{'map', 'string'},
|
|
{'players', {{'id', '4bits'}, {'username', 'string'}, {'class', '4bits'}, {'team', '1bit'}}},
|
|
{'players', {{'id', '4bits'}, {'username', 'string'}, {'class', '4bits'}, {'team', '1bit'}}},
|
|
@@ -34,26 +34,26 @@ NetServer.signatures[app.core.net.messages.snapshot] = {
|
|
NetServer.receive = {}
|
|
NetServer.receive = {}
|
|
NetServer.receive['default'] = f.empty
|
|
NetServer.receive['default'] = f.empty
|
|
|
|
|
|
-NetServer.receive[app.core.net.messages.join] = function(self, event)
|
|
|
|
|
|
+NetServer.receive[app.net.core.messages.join] = function(self, event)
|
|
local pid = self.peerToPlayer[event.peer]
|
|
local pid = self.peerToPlayer[event.peer]
|
|
ctx.players:get(pid).username = event.data.username
|
|
ctx.players:get(pid).username = event.data.username
|
|
- self:send(app.core.net.messages.join, event.peer, {id = pid})
|
|
|
|
- self:emit(app.core.net.events.join, {id = pid, username = event.data.username})
|
|
|
|
- self:emit(app.core.net.events.chat, {message = '{white}' .. event.data.username .. ' has joined!'})
|
|
|
|
|
|
+ self:send(app.net.core.messages.join, event.peer, {id = pid})
|
|
|
|
+ self:emit(app.net.core.events.join, {id = pid, username = event.data.username})
|
|
|
|
+ self:emit(app.net.core.events.chat, {message = '{white}' .. event.data.username .. ' has joined!'})
|
|
self:snapshot(event.peer)
|
|
self:snapshot(event.peer)
|
|
end
|
|
end
|
|
|
|
|
|
-NetServer.receive[app.core.net.messages.leave] = function(self, event) self:disconnect(event) end
|
|
|
|
|
|
+NetServer.receive[app.net.core.messages.leave] = function(self, event) self:disconnect(event) end
|
|
|
|
|
|
-NetServer.receive[app.core.net.messages.class] = function(self, event)
|
|
|
|
- self:emit(app.core.net.events.class, {id = self.peerToPlayer[event.peer], class = event.data.class, team = event.data.team})
|
|
|
|
|
|
+NetServer.receive[app.net.core.messages.class] = function(self, event)
|
|
|
|
+ self:emit(app.net.core.events.class, {id = self.peerToPlayer[event.peer], class = event.data.class, team = event.data.team})
|
|
end
|
|
end
|
|
|
|
|
|
-NetServer.receive[app.core.net.messages.input] = function(self, event)
|
|
|
|
|
|
+NetServer.receive[app.net.core.messages.input] = function(self, event)
|
|
ctx.players:get(self.peerToPlayer[event.peer]):trace(event.data, event.peer:round_trip_time())
|
|
ctx.players:get(self.peerToPlayer[event.peer]):trace(event.data, event.peer:round_trip_time())
|
|
end
|
|
end
|
|
|
|
|
|
-NetServer.receive[app.core.net.messages.chat] = function(self, event)
|
|
|
|
|
|
+NetServer.receive[app.net.core.messages.chat] = function(self, event)
|
|
local pid = self.peerToPlayer[event.peer]
|
|
local pid = self.peerToPlayer[event.peer]
|
|
local username = ctx.players:get(pid).username
|
|
local username = ctx.players:get(pid).username
|
|
local color = ctx.players:get(pid).team == 0 and 'purple' or 'orange'
|
|
local color = ctx.players:get(pid).team == 0 and 'purple' or 'orange'
|
|
@@ -63,7 +63,7 @@ NetServer.receive[app.core.net.messages.chat] = function(self, event)
|
|
for word in string.gmatch(message, '([^ ]+)') do
|
|
for word in string.gmatch(message, '([^ ]+)') do
|
|
table.insert(data, word)
|
|
table.insert(data, word)
|
|
end
|
|
end
|
|
- local function reply(message) self:send(app.core.net.events.chat, event.peer, {message = '{red}' .. message}) end
|
|
|
|
|
|
+ local function reply(message) self:send(app.net.core.events.chat, event.peer, {message = '{red}' .. message}) end
|
|
local handlers = {
|
|
local handlers = {
|
|
['/restart'] = function(data)
|
|
['/restart'] = function(data)
|
|
if username ~= ctx.owner then return reply('permission denied') end
|
|
if username ~= ctx.owner then return reply('permission denied') end
|
|
@@ -79,25 +79,25 @@ NetServer.receive[app.core.net.messages.chat] = function(self, event)
|
|
for i = 1, ctx.players.max do
|
|
for i = 1, ctx.players.max do
|
|
if ctx.players:get(i).username == data[2] then player = i break end
|
|
if ctx.players:get(i).username == data[2] then player = i break end
|
|
end
|
|
end
|
|
- if not player then return self:send(app.core.net.events.chat, event.peer, {message = '{red}couldn\'t find player "' .. data[2] .. '"'}) end
|
|
|
|
|
|
+ if not player then return self:send(app.net.core.events.chat, event.peer, {message = '{red}couldn\'t find player "' .. data[2] .. '"'}) end
|
|
for i = 1, ctx.players.max do
|
|
for i = 1, ctx.players.max do
|
|
local p = self.host:get_peer(i)
|
|
local p = self.host:get_peer(i)
|
|
if self.peerToPlayer[p] == player then peer = p break end
|
|
if self.peerToPlayer[p] == player then peer = p break end
|
|
end
|
|
end
|
|
- if not peer then return self:send(app.core.net.events.chat, event.peer, {message = '{red}"' .. data[2] .. '" doesn\'t seem to be connected'}) end
|
|
|
|
|
|
+ if not peer then return self:send(app.net.core.events.chat, event.peer, {message = '{red}"' .. data[2] .. '" doesn\'t seem to be connected'}) end
|
|
self:disconnect({peer = peer, reason = 'kicked'})
|
|
self:disconnect({peer = peer, reason = 'kicked'})
|
|
end,
|
|
end,
|
|
|
|
|
|
['/roll'] = function(data)
|
|
['/roll'] = function(data)
|
|
- self:emit(app.core.net.events.chat, {message = '{red}' .. username .. ' rolled {green}' .. love.math.random(1, 100)})
|
|
|
|
|
|
+ self:emit(app.net.core.events.chat, {message = '{red}' .. username .. ' rolled {green}' .. love.math.random(1, 100)})
|
|
end,
|
|
end,
|
|
|
|
|
|
['/bjorn'] = function(data)
|
|
['/bjorn'] = function(data)
|
|
- self:emit(app.core.net.events.chat, {message = '{purple}-_-'})
|
|
|
|
|
|
+ self:emit(app.net.core.events.chat, {message = '{purple}-_-'})
|
|
end,
|
|
end,
|
|
|
|
|
|
default = function(data)
|
|
default = function(data)
|
|
- self:send(app.core.net.events.chat, event.peer, {message = '{red}unknown command "' .. data[1]:sub(2) .. '"'})
|
|
|
|
|
|
+ self:send(app.net.core.events.chat, event.peer, {message = '{red}unknown command "' .. data[1]:sub(2) .. '"'})
|
|
end
|
|
end
|
|
}
|
|
}
|
|
handlers['/reset'] = handlers['/restart']
|
|
handlers['/reset'] = handlers['/restart']
|
|
@@ -106,11 +106,11 @@ NetServer.receive[app.core.net.messages.chat] = function(self, event)
|
|
|
|
|
|
return (handlers[data[1]] or handlers.default)(data)
|
|
return (handlers[data[1]] or handlers.default)(data)
|
|
end
|
|
end
|
|
- self:emit(app.core.net.events.chat, {message = '{' .. color .. '}' .. username .. '{white}: ' .. message})
|
|
|
|
|
|
+ self:emit(app.net.core.events.chat, {message = '{' .. color .. '}' .. username .. '{white}: ' .. message})
|
|
end
|
|
end
|
|
|
|
|
|
function NetServer:init()
|
|
function NetServer:init()
|
|
- self.other = app.netClient
|
|
|
|
|
|
+ self.other = app.net.client
|
|
|
|
|
|
self:listen(6061)
|
|
self:listen(6061)
|
|
self.peerToPlayer = {}
|
|
self.peerToPlayer = {}
|
|
@@ -121,7 +121,7 @@ function NetServer:init()
|
|
self:quit()
|
|
self:quit()
|
|
end)
|
|
end)
|
|
|
|
|
|
- app.core.net.init(self)
|
|
|
|
|
|
+ app.net.core.init(self)
|
|
end
|
|
end
|
|
|
|
|
|
function NetServer:quit()
|
|
function NetServer:quit()
|
|
@@ -145,8 +145,8 @@ function NetServer:disconnect(event)
|
|
local pid = self.peerToPlayer[event.peer]
|
|
local pid = self.peerToPlayer[event.peer]
|
|
local username = ctx.players:get(pid).username
|
|
local username = ctx.players:get(pid).username
|
|
local reason = event.reason or 'left'
|
|
local reason = event.reason or 'left'
|
|
- self:emit(app.core.net.events.chat, {message = '{white}' .. username .. ' has left (' .. reason .. ')'})
|
|
|
|
- self:emit(app.core.net.events.leave, {id = pid, reason = reason})
|
|
|
|
|
|
+ self:emit(app.net.core.events.chat, {message = '{white}' .. username .. ' has left (' .. reason .. ')'})
|
|
|
|
+ self:emit(app.net.core.events.leave, {id = pid, reason = reason})
|
|
self.peerToPlayer[event.peer] = nil
|
|
self.peerToPlayer[event.peer] = nil
|
|
event.peer:disconnect_now()
|
|
event.peer:disconnect_now()
|
|
if username == ctx.owner then
|
|
if username == ctx.owner then
|
|
@@ -204,7 +204,7 @@ function NetServer:snapshot(peer)
|
|
})
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
- self:send(app.core.net.messages.snapshot, peer, {tick = tick, map = 'testArena', ['players'] = players})
|
|
|
|
|
|
+ self:send(app.net.core.messages.snapshot, peer, {tick = tick, map = 'testArena', ['players'] = players})
|
|
end
|
|
end
|
|
|
|
|
|
function NetServer:nextPlayerId()
|
|
function NetServer:nextPlayerId()
|