79 lines
1.8 KiB
Lua
79 lines
1.8 KiB
Lua
local lg = assert( love.graphics )
|
|
local scene = assert( require 'scene' )
|
|
local shared = assert( require 'shared.shared' )
|
|
local server = assert( require 'udp' )
|
|
local packet = shared.packet
|
|
local crepuscular = assert( require 'crepuscular' )
|
|
|
|
local game = {}
|
|
local handlers = setmetatable( {}, {__index = function() return print end } )
|
|
local t = 0
|
|
local tick = 0
|
|
local serverTick = 0
|
|
|
|
function handlers.connected( data )
|
|
serverTick = math.max( data.tick, serverTick )
|
|
end
|
|
|
|
function handlers.insect( data )
|
|
|
|
end
|
|
|
|
function handlers.soleil( data )
|
|
|
|
end
|
|
|
|
function handlers.playerChange( data )
|
|
|
|
end
|
|
|
|
function handlers.chatMessage( msg )
|
|
print( msg.cmsg )
|
|
end
|
|
|
|
function game.draw()
|
|
lg.setColor( 1, 1, 1, 1 )
|
|
lg.print( tick, 0, 0 )
|
|
lg.print( serverTick, 0, 25 )
|
|
end
|
|
|
|
function game.onPacket( msg )
|
|
if not msg or (#msg < 1) then return end
|
|
local msgs, types = packet.deserialise( msg )
|
|
if not msgs then return game.onPacket( server.receive() ) end
|
|
for i = 1, #msgs do
|
|
--Handler returns something if msg should be discarded.
|
|
if handlers[ types[i] ]( msgs[i] ) then break end
|
|
end
|
|
return game.onPacket( server.receive() )
|
|
end
|
|
|
|
function game.update( dt )
|
|
t = dt + t
|
|
game.onPacket( server.receive() )
|
|
if t > 0.1 then
|
|
t = 0
|
|
tick = tick + 1
|
|
server.newPacket()
|
|
assert( server.send( packet.get() ) )
|
|
end
|
|
end
|
|
|
|
function game.newGame( )
|
|
game.curWorld = shared.NewWorld() --Last world state received from server.
|
|
game.preWorld = shared.NewWorld() --Current world state predicted by this client.
|
|
end
|
|
|
|
function game.disconnect( )
|
|
return scene.mainmenu( server.disconnect() )
|
|
end
|
|
|
|
function game.onLoad( params )
|
|
end
|
|
|
|
function game.keypressed( key, code, isRepeat )
|
|
if code == "escape" then return game.disconnect() end
|
|
end
|
|
|
|
scene.game = game
|
|
return game |