69 lines
1.2 KiB
JavaScript
69 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
const Player = require('../player.js');
|
|
|
|
class Connection {
|
|
constructor(net, socket) {
|
|
this.net = net;
|
|
this.server = net.server;
|
|
this.connections = net.connections;
|
|
this.io = net.io;
|
|
this.socket = socket;
|
|
this.ip = socket.request.headers['x-real-ip'] ?? socket.request.connection.remoteAddress;
|
|
|
|
this.player = new Player(this);
|
|
this._room = false;
|
|
this.chatCooldown = 0;
|
|
|
|
socket.on('chat', data => {
|
|
this.player.chat(data);
|
|
});
|
|
|
|
socket.on('setName', data => {
|
|
this.player.name = ('' + data).slice(0, 20) || 'Fish';
|
|
});
|
|
|
|
socket.on('inputs', data => {
|
|
this.player.updateInputs(data);
|
|
});
|
|
|
|
socket.on('test', data => {
|
|
this.player.room.world.test();
|
|
});
|
|
|
|
this.server.assignRoom(this.player);
|
|
}
|
|
|
|
disconnect() {
|
|
this.socket.disconnect();
|
|
this.player.disconnect();
|
|
}
|
|
|
|
drop() {
|
|
this.disconnect();
|
|
}
|
|
|
|
send(msg, data) {
|
|
this.io.to(this.socket.id).emit(msg, data);
|
|
}
|
|
|
|
tick() {
|
|
this.chatCooldown -= 1;
|
|
}
|
|
|
|
get room() {
|
|
return this._room;
|
|
}
|
|
|
|
set room(str) {
|
|
this.socket.leave(this._room);
|
|
this.socket.join(str);
|
|
this._room = str;
|
|
}
|
|
|
|
get name() {
|
|
return this.player.name;
|
|
}
|
|
}
|
|
|
|
module.exports = Connection;
|