refactor: decouple avocadoServer
This commit is contained in:
parent
cbad2cac0e
commit
25da6f1e7b
|
@ -8,9 +8,9 @@ import {StateSynchronizer} from '@avocado/state';
|
|||
import {createEntityForConnection} from './create-entity-for-connection';
|
||||
import {createRoom} from './create-server-room';
|
||||
// Create game.
|
||||
export default function(avocadoServer) {
|
||||
avocadoServer.on('connect', createConnectionListener(avocadoServer));
|
||||
setInterval(createMainLoop(avocadoServer), 1000 / 80);
|
||||
export default function() {
|
||||
setInterval(createMainLoop(), 1000 / 80);
|
||||
return createConnectionListener();
|
||||
}
|
||||
// Create room.
|
||||
const room = createRoom();
|
||||
|
@ -20,7 +20,7 @@ const stateSynchronizer = new StateSynchronizer({
|
|||
room,
|
||||
});
|
||||
// Connection listener.
|
||||
function createConnectionListener(avocadoServer) {
|
||||
function createConnectionListener() {
|
||||
return (socket) => {
|
||||
// Create and track a new entity for the connection.
|
||||
const entity = createEntityForConnection(socket);
|
||||
|
@ -35,12 +35,12 @@ function createConnectionListener(avocadoServer) {
|
|||
// Add entity to room.
|
||||
room.addEntityToLayer(entity, 'everything');
|
||||
// Listen for events.
|
||||
socket.on('message', createMessageListener(avocadoServer, socket));
|
||||
socket.on('disconnect', createDisconnectionListener(avocadoServer, socket));
|
||||
socket.on('message', createMessageListener(socket));
|
||||
socket.on('disconnect', createDisconnectionListener(socket));
|
||||
}
|
||||
}
|
||||
// Handle incoming messages.
|
||||
function createMessageListener(avocadoServer, socket) {
|
||||
function createMessageListener(socket) {
|
||||
const {entity} = socket;
|
||||
return ({type, payload}) => {
|
||||
switch (type) {
|
||||
|
@ -51,7 +51,7 @@ function createMessageListener(avocadoServer, socket) {
|
|||
};
|
||||
}
|
||||
// Handle disconnection.
|
||||
function createDisconnectionListener(avocadoServer, socket) {
|
||||
function createDisconnectionListener(socket) {
|
||||
const {entity} = socket;
|
||||
return () => {
|
||||
entity.destroy();
|
||||
|
@ -59,7 +59,7 @@ function createDisconnectionListener(avocadoServer, socket) {
|
|||
}
|
||||
// Main loop.
|
||||
let lastTime = performance.now();
|
||||
function createMainLoop(avocadoServer) {
|
||||
function createMainLoop() {
|
||||
return () => {
|
||||
const now = performance.now();
|
||||
const elapsed = (now - lastTime) / 1000;
|
||||
|
|
|
@ -6,4 +6,5 @@ httpServer.listen(8420, '0.0.0.0');
|
|||
// Start game server.
|
||||
import createGame from './game';
|
||||
const avocadoServer = new Server(httpServer);
|
||||
createGame(avocadoServer);
|
||||
const connectionListener = createGame();
|
||||
avocadoServer.on('connect', connectionListener);
|
||||
|
|
Loading…
Reference in New Issue
Block a user