parent
85f88b2a7c
commit
9a0fce0fbe
26 changed files with 1072 additions and 47 deletions
@ -0,0 +1,152 @@ |
|||||||
|
"use strict"; |
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { |
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { |
||||||
|
if (ar || !(i in from)) { |
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i); |
||||||
|
ar[i] = from[i]; |
||||||
|
} |
||||||
|
} |
||||||
|
return to.concat(ar || Array.prototype.slice.call(from)); |
||||||
|
}; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.Client = void 0; |
||||||
|
var room_1 = require("./room"); |
||||||
|
var manager_1 = require("./manager"); |
||||||
|
var logger_1 = require("./logger"); |
||||||
|
var Client = /** @class */ (function () { |
||||||
|
function Client(socket, manager) { |
||||||
|
this.socket = socket; |
||||||
|
// @ts-ignore
|
||||||
|
this.name = socket.handshake.query.name; |
||||||
|
// @ts-ignore
|
||||||
|
this.game = socket.handshake.query.game; |
||||||
|
this.id = socket.id; |
||||||
|
this.setEvents(manager); |
||||||
|
} |
||||||
|
Object.defineProperty(Client.prototype, "serialized", { |
||||||
|
get: function () { |
||||||
|
return { |
||||||
|
id: this.id, |
||||||
|
name: this.name, |
||||||
|
game: this.game, |
||||||
|
isReady: this.isReady, |
||||||
|
isPlayer: this.isPlayer, |
||||||
|
isSpectator: this.isSpectator |
||||||
|
}; |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Client.prototype.setEvents = function (mng) { |
||||||
|
var _this = this; |
||||||
|
var s = this.socket; |
||||||
|
s.on('room-list', function () { return _this.sendRoomList(); }); |
||||||
|
s.on('client-list', function () { return _this.sendClientList(); }); |
||||||
|
s.on('set-ready', function (ready) { return _this.setReady(ready); }); |
||||||
|
s.on('game-settings', function (settings) { return _this.setGameSettings(settings); }); |
||||||
|
s.on('create-lobby', function (settings, name) { return _this.createRoom(settings, name); }); |
||||||
|
s.on('join-lobby', function (roomId) { return _this.joinRoom(roomId); }); |
||||||
|
s.on('leave-lobby', function (roomId) { return _this.leaveRoom(roomId); }); |
||||||
|
s.on('join-spectators', function () { return _this.joinSpectators(); }); |
||||||
|
s.on('join-players', function () { return _this.joinPlayers(); }); |
||||||
|
s.on('start-game', function (lobbyId) { return mng.startGame(_this, lobbyId); }); |
||||||
|
s.on('stop-game', function (lobbyId) { return mng.stopGame(_this, lobbyId); }); |
||||||
|
s.on('feedback', function (content) { return mng.saveFeedbackToFile(_this, content); }); |
||||||
|
s.on('disconnect', function () { return mng.disconnected(_this); }); |
||||||
|
this.send('connected'); |
||||||
|
}; |
||||||
|
Client.prototype.sendRoomList = function () { |
||||||
|
var rooms = manager_1.ConnectionManager.RoomListByGame(this.game); |
||||||
|
this.send('room-list', rooms); |
||||||
|
}; |
||||||
|
Client.prototype.sendClientList = function () { |
||||||
|
var clients = manager_1.ConnectionManager.ClientListByClientId(this.id); |
||||||
|
this.send('client-list', clients); |
||||||
|
}; |
||||||
|
Client.prototype.setReady = function (ready) { |
||||||
|
var room = room_1.Room.getByClientId(this.id, manager_1.ConnectionManager.Instance.rooms); |
||||||
|
if (room) { |
||||||
|
this.isReady = ready; |
||||||
|
room.toAll('client-list', room.clients); |
||||||
|
} |
||||||
|
}; |
||||||
|
Client.prototype.setGameSettings = function (settings) { |
||||||
|
var room = room_1.Room.getByClientId(this.id, manager_1.ConnectionManager.Instance.rooms); |
||||||
|
if (room) { |
||||||
|
room.gameSettings = settings; |
||||||
|
room.toAll('game-settings', settings); |
||||||
|
} |
||||||
|
}; |
||||||
|
Client.prototype.createRoom = function (settings, name) { |
||||||
|
var room = manager_1.ConnectionManager.Instance.createRoom(settings, name); |
||||||
|
room.add(this); |
||||||
|
this.send('created-lobby', room); |
||||||
|
(0, logger_1.log)('lobby-created', this, room); |
||||||
|
}; |
||||||
|
Client.prototype.joinRoom = function (roomId) { |
||||||
|
var room = room_1.Room.getByRoomId(roomId, manager_1.ConnectionManager.Instance.rooms); |
||||||
|
if (!room) { |
||||||
|
this.send('join-failed', 'Room does not exist!'); |
||||||
|
(0, logger_1.log)('join-non-existent', this, new room_1.Room('not-existent', roomId)); |
||||||
|
} |
||||||
|
else if (room.hasStarted && !room.settings.spectators) { |
||||||
|
this.send('join-failed', 'Game has started yet!'); |
||||||
|
(0, logger_1.log)('join-started', this, room); |
||||||
|
} |
||||||
|
else { |
||||||
|
room.add(this); |
||||||
|
(0, logger_1.log)('member-joined', this, room); |
||||||
|
} |
||||||
|
return room; |
||||||
|
}; |
||||||
|
Client.prototype.leaveRoom = function (_roomId) { |
||||||
|
var room = room_1.Room.getByClientId(this.id, manager_1.ConnectionManager.Instance.rooms); |
||||||
|
if (!room) |
||||||
|
return; |
||||||
|
this.leave(room.id); |
||||||
|
if (room.runningGame) |
||||||
|
room.runningGame.removeClient(this); |
||||||
|
room.clients.splice(room.clients.indexOf(this), 1); |
||||||
|
room.toAll('member-left', this.id, this.name); |
||||||
|
room.toAll('client-list', room.clients); |
||||||
|
this.send('left-lobby'); |
||||||
|
(0, logger_1.log)('member-left', this, room); |
||||||
|
if (room.isEmpty && !room.settings.always) { |
||||||
|
manager_1.ConnectionManager.Instance.deleteRoom(room); |
||||||
|
} |
||||||
|
}; |
||||||
|
Client.prototype.joinSpectators = function () { |
||||||
|
var room = room_1.Room.getByClientId(this.id, manager_1.ConnectionManager.Instance.rooms); |
||||||
|
if (!room) |
||||||
|
return; |
||||||
|
this.isSpectator = true; |
||||||
|
this.isPlayer = false; |
||||||
|
room.toAll('client-list', room.clients); |
||||||
|
}; |
||||||
|
Client.prototype.joinPlayers = function () { |
||||||
|
var room = room_1.Room.getByClientId(this.id, manager_1.ConnectionManager.Instance.rooms); |
||||||
|
if (!room) |
||||||
|
return; |
||||||
|
if (room.hasStarted) |
||||||
|
return; |
||||||
|
this.isSpectator = false; |
||||||
|
this.isPlayer = true; |
||||||
|
room.toAll('client-list', room.clients); |
||||||
|
}; |
||||||
|
Client.prototype.send = function (event) { |
||||||
|
var _a; |
||||||
|
var args = []; |
||||||
|
for (var _i = 1; _i < arguments.length; _i++) { |
||||||
|
args[_i - 1] = arguments[_i]; |
||||||
|
} |
||||||
|
(_a = this.socket).emit.apply(_a, __spreadArray([event], (0, manager_1.serializeObject)(args), false)); |
||||||
|
}; |
||||||
|
Client.prototype.join = function (roomId) { |
||||||
|
this.socket.join(roomId); |
||||||
|
}; |
||||||
|
Client.prototype.leave = function (roomId) { |
||||||
|
this.socket.leave(roomId); |
||||||
|
}; |
||||||
|
return Client; |
||||||
|
}()); |
||||||
|
exports.Client = Client; |
@ -0,0 +1,113 @@ |
|||||||
|
"use strict"; |
||||||
|
var __extends = (this && this.__extends) || (function () { |
||||||
|
var extendStatics = function (d, b) { |
||||||
|
extendStatics = Object.setPrototypeOf || |
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || |
||||||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; |
||||||
|
return extendStatics(d, b); |
||||||
|
}; |
||||||
|
return function (d, b) { |
||||||
|
if (typeof b !== "function" && b !== null) |
||||||
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); |
||||||
|
extendStatics(d, b); |
||||||
|
function __() { this.constructor = d; } |
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
||||||
|
}; |
||||||
|
})(); |
||||||
|
exports.__esModule = true; |
||||||
|
exports.Chainreact = void 0; |
||||||
|
var game_standard_1 = require("./game_standard"); |
||||||
|
var Chainreact = /** @class */ (function (_super) { |
||||||
|
__extends(Chainreact, _super); |
||||||
|
function Chainreact(room, settings) { |
||||||
|
var _this = _super.call(this, room, settings) || this; |
||||||
|
_this.readyForTurn = []; |
||||||
|
return _this; |
||||||
|
} |
||||||
|
Chainreact.prototype.setEvents = function (client) { |
||||||
|
var _this = this; |
||||||
|
var socket = client.socket; |
||||||
|
socket.on('ready-for-turn', function (isDead) { |
||||||
|
if (isDead) { |
||||||
|
client.isPlayer = false; |
||||||
|
client.isSpectator = true; |
||||||
|
_this.room.toAll('client-list', _this.room.clients); |
||||||
|
} |
||||||
|
else { |
||||||
|
_this.readyForTurn.push(client); |
||||||
|
} |
||||||
|
var allReady = true; |
||||||
|
_this.room.players.forEach(function (c) { |
||||||
|
if (_this.readyForTurn.find(function (r) { return r.id === c.id; }) == null) { |
||||||
|
allReady = false; |
||||||
|
} |
||||||
|
}); |
||||||
|
if (allReady) { |
||||||
|
_this.nextTurn(); |
||||||
|
_this.readyForTurn = []; |
||||||
|
} |
||||||
|
}); |
||||||
|
socket.on('set-slot', function (fieldsIndex, slotsIndex) { |
||||||
|
_this.room.toAll('set-slot', fieldsIndex, slotsIndex, socket.id); |
||||||
|
}); |
||||||
|
socket.on('game-data', function (data) { return _this.currentGameData = data; }); |
||||||
|
}; |
||||||
|
Chainreact.prototype.addClient = function (client) { |
||||||
|
_super.prototype.addClient.call(this, client); |
||||||
|
if (client.isSpectator) { |
||||||
|
var room = this.room; |
||||||
|
var data = this.currentGameData; |
||||||
|
var hues = this.colorHues; |
||||||
|
var turnId = ''; |
||||||
|
if (this.room.players[this.currentTurnIndex]) |
||||||
|
turnId = this.room.players[this.currentTurnIndex].id; |
||||||
|
client.send('start-spectate', room, data, hues, turnId); |
||||||
|
} |
||||||
|
}; |
||||||
|
Chainreact.prototype.removeClient = function (client) { |
||||||
|
_super.prototype.removeClient.call(this, client); |
||||||
|
if (this.room.players.indexOf(client) === this.currentTurnIndex) |
||||||
|
this.nextTurn(true); |
||||||
|
var s = client.socket; |
||||||
|
s.removeAllListeners('set-slot'); |
||||||
|
s.removeAllListeners('ready-for-turn'); |
||||||
|
s.removeAllListeners('game-data'); |
||||||
|
}; |
||||||
|
Chainreact.prototype.nextTurn = function (skip) { |
||||||
|
if (this.currentTurnIndex != null && !skip) { |
||||||
|
this.currentTurnIndex++; |
||||||
|
if (this.currentTurnIndex >= this.room.players.length) { |
||||||
|
this.currentTurnIndex = 0; |
||||||
|
} |
||||||
|
} |
||||||
|
else if (!skip) { |
||||||
|
this.setTurnAndColors(); |
||||||
|
} |
||||||
|
var index = this.currentTurnIndex; |
||||||
|
if (skip) { |
||||||
|
index = this.currentTurnIndex + 1; |
||||||
|
if (index >= this.room.players.length) { |
||||||
|
index = 0; |
||||||
|
this.currentTurnIndex = 0; |
||||||
|
} |
||||||
|
} |
||||||
|
if (this.room.players.length) { |
||||||
|
this.room.toAll('current-turn', this.room.players[index].id); |
||||||
|
} |
||||||
|
}; |
||||||
|
Chainreact.prototype.setTurnAndColors = function () { |
||||||
|
this.currentTurnIndex = Math.floor(Math.random() * this.room.players.length); |
||||||
|
var colorHues = [0, 60, 120, 240]; |
||||||
|
this.colorHues = {}; |
||||||
|
for (var _i = 0, _a = this.room.players; _i < _a.length; _i++) { |
||||||
|
var c = _a[_i]; |
||||||
|
var index = Math.floor(Math.random() * colorHues.length); |
||||||
|
var hue = colorHues[index]; |
||||||
|
colorHues.splice(index, 1); |
||||||
|
this.colorHues[c.id] = hue; |
||||||
|
} |
||||||
|
this.room.toAll('player-colors', this.colorHues); |
||||||
|
}; |
||||||
|
return Chainreact; |
||||||
|
}(game_standard_1.ServerGame)); |
||||||
|
exports.Chainreact = Chainreact; |
@ -0,0 +1,49 @@ |
|||||||
|
"use strict"; |
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { |
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { |
||||||
|
if (ar || !(i in from)) { |
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i); |
||||||
|
ar[i] = from[i]; |
||||||
|
} |
||||||
|
} |
||||||
|
return to.concat(ar || Array.prototype.slice.call(from)); |
||||||
|
}; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.ServerGame = void 0; |
||||||
|
var ServerGame = /** @class */ (function () { |
||||||
|
function ServerGame(room, settings) { |
||||||
|
var _this = this; |
||||||
|
this.settings = settings; |
||||||
|
this.room = room; |
||||||
|
this.room.clients.forEach(function (c) { return _this.addClient(c); }); |
||||||
|
} |
||||||
|
ServerGame.prototype.addClient = function (client) { |
||||||
|
this.setEvents(client); |
||||||
|
}; |
||||||
|
ServerGame.prototype.removeClient = function (client) { |
||||||
|
this.removeEvents(client); |
||||||
|
}; |
||||||
|
ServerGame.prototype.gameAction = function (action) { |
||||||
|
var args = []; |
||||||
|
for (var _i = 1; _i < arguments.length; _i++) { |
||||||
|
args[_i - 1] = arguments[_i]; |
||||||
|
} |
||||||
|
}; |
||||||
|
ServerGame.prototype.setEvents = function (client) { |
||||||
|
var _this = this; |
||||||
|
var socket = client.socket; |
||||||
|
socket.on('game-action', function (action) { |
||||||
|
var args = []; |
||||||
|
for (var _i = 1; _i < arguments.length; _i++) { |
||||||
|
args[_i - 1] = arguments[_i]; |
||||||
|
} |
||||||
|
return _this.gameAction.apply(_this, __spreadArray([action], args, false)); |
||||||
|
}); |
||||||
|
}; |
||||||
|
ServerGame.prototype.removeEvents = function (client) { |
||||||
|
var socket = client.socket; |
||||||
|
socket.removeAllListeners('game-action'); |
||||||
|
}; |
||||||
|
return ServerGame; |
||||||
|
}()); |
||||||
|
exports.ServerGame = ServerGame; |
@ -0,0 +1,151 @@ |
|||||||
|
"use strict"; |
||||||
|
var __extends = (this && this.__extends) || (function () { |
||||||
|
var extendStatics = function (d, b) { |
||||||
|
extendStatics = Object.setPrototypeOf || |
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || |
||||||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; |
||||||
|
return extendStatics(d, b); |
||||||
|
}; |
||||||
|
return function (d, b) { |
||||||
|
if (typeof b !== "function" && b !== null) |
||||||
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); |
||||||
|
extendStatics(d, b); |
||||||
|
function __() { this.constructor = d; } |
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
||||||
|
}; |
||||||
|
})(); |
||||||
|
exports.__esModule = true; |
||||||
|
exports.GlobalDraw = void 0; |
||||||
|
var game_standard_1 = require("./game_standard"); |
||||||
|
var logger_1 = require("../logger"); |
||||||
|
var fs = require("fs"); |
||||||
|
var GlobalDraw = /** @class */ (function (_super) { |
||||||
|
__extends(GlobalDraw, _super); |
||||||
|
function GlobalDraw(lobby, settings) { |
||||||
|
var _this = _super.call(this, lobby, settings) || this; |
||||||
|
_this.linesPath = "json_data/global_draw/lines.json"; |
||||||
|
_this.pixelsPath = "json_data/global_draw/pixels.json"; |
||||||
|
_this.pixelCount = 1000; |
||||||
|
_this.lines = []; |
||||||
|
_this.pixels = []; |
||||||
|
for (var x = 0; x < _this.pixelCount; x++) { |
||||||
|
var column = []; |
||||||
|
for (var y = 0; y < _this.pixelCount; y++) { |
||||||
|
column.push({ x: x, y: y, c: "#ffffff" }); |
||||||
|
} |
||||||
|
_this.pixels.push(column); |
||||||
|
} |
||||||
|
var linesLoaded = false; |
||||||
|
var pixelsLoaded = false; |
||||||
|
_this.loadDrawingsFromFile(_this.linesPath, function (data) { |
||||||
|
_this.lines = data; |
||||||
|
}, function () { |
||||||
|
linesLoaded = true; |
||||||
|
if (pixelsLoaded) { |
||||||
|
_this.startSaveInterval(); |
||||||
|
} |
||||||
|
}); |
||||||
|
_this.loadDrawingsFromFile(_this.pixelsPath, function (data) { |
||||||
|
for (var x = 0; x < _this.pixelCount; x++) { |
||||||
|
for (var y = 0; y < _this.pixelCount; y++) { |
||||||
|
if (data[x]) |
||||||
|
if (data[x][y]) |
||||||
|
_this.pixels[x][y].c = data[x][y].c; |
||||||
|
} |
||||||
|
} |
||||||
|
}, function () { |
||||||
|
pixelsLoaded = true; |
||||||
|
if (linesLoaded) { |
||||||
|
_this.startSaveInterval(); |
||||||
|
} |
||||||
|
}); |
||||||
|
return _this; |
||||||
|
} |
||||||
|
GlobalDraw.prototype.startSaveInterval = function () { |
||||||
|
var _this = this; |
||||||
|
this.saveAllDrawingsToFile(); |
||||||
|
//Saves once every day
|
||||||
|
setInterval(function () { return _this.saveAllDrawingsToFile(); }, 1000 * 60 * 60 * 24); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.addLine = function (line) { |
||||||
|
this.lines.push(line); |
||||||
|
this.room.toAll('add-line', line); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.fillPixel = function (pixel) { |
||||||
|
this.pixels[pixel.x][pixel.y].c = pixel.c; |
||||||
|
this.room.toAll('fill-pixel', pixel); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.loadDrawingsFromFile = function (drawingsPath, successs, done) { |
||||||
|
var _this = this; |
||||||
|
fs.readFile(drawingsPath, 'utf8', function (err, data) { |
||||||
|
if (err) |
||||||
|
(0, logger_1.log)('load-error', null, _this.room, err.message); |
||||||
|
else { |
||||||
|
try { |
||||||
|
var parsed = JSON.parse(data); |
||||||
|
(0, logger_1.log)('load-success', null, _this.room); |
||||||
|
successs(parsed); |
||||||
|
} |
||||||
|
catch (e) { |
||||||
|
(0, logger_1.log)('parse-error', null, _this.room, e.message); |
||||||
|
} |
||||||
|
} |
||||||
|
done(); |
||||||
|
}); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.saveDrawingsToFile = function (drawings, drawingsPath, callback) { |
||||||
|
var splits = drawingsPath.split('/'); |
||||||
|
var path = splits.slice(0, splits.length - 1).reduce(function (prev, curr) { return prev + '/' + curr; }); |
||||||
|
var name = splits[splits.length - 1]; |
||||||
|
if (!fs.existsSync(path)) { |
||||||
|
fs.mkdirSync(path, { recursive: true }); |
||||||
|
} |
||||||
|
fs.writeFile(drawingsPath, JSON.stringify(drawings), callback); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.saveAllDrawingsToFile = function () { |
||||||
|
var _this = this; |
||||||
|
var linesSaved = false; |
||||||
|
var pixelsSaved = false; |
||||||
|
this.saveDrawingsToFile(this.lines, this.linesPath, function (err) { |
||||||
|
if (err) |
||||||
|
(0, logger_1.log)('save-error', null, _this.room, err.message); |
||||||
|
else { |
||||||
|
linesSaved = true; |
||||||
|
if (pixelsSaved) { |
||||||
|
_this.room.toAll('all-saved'); |
||||||
|
linesSaved = false; |
||||||
|
pixelsSaved = false; |
||||||
|
} |
||||||
|
(0, logger_1.log)('save-success', null, _this.room, 'Successfully saved lines to file'); |
||||||
|
} |
||||||
|
}); |
||||||
|
this.saveDrawingsToFile(this.pixels, this.pixelsPath, function (err) { |
||||||
|
if (err) |
||||||
|
(0, logger_1.log)('save-error', null, _this.room, err.message); |
||||||
|
else { |
||||||
|
pixelsSaved = true; |
||||||
|
if (linesSaved) { |
||||||
|
_this.room.toAll('all-saved'); |
||||||
|
pixelsSaved = false; |
||||||
|
linesSaved = false; |
||||||
|
} |
||||||
|
(0, logger_1.log)('save-success', null, _this.room, 'Successfully saved pixels to file'); |
||||||
|
} |
||||||
|
}); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.addClient = function (client) { |
||||||
|
this.setEvents(client); |
||||||
|
}; |
||||||
|
GlobalDraw.prototype.setEvents = function (client) { |
||||||
|
var _this = this; |
||||||
|
_super.prototype.setEvents.call(this, client); |
||||||
|
var socket = client.socket; |
||||||
|
socket.on('add-line', function (line) { return _this.addLine(line); }); |
||||||
|
socket.on('fill-pixel', function (pixel) { return _this.fillPixel(pixel); }); |
||||||
|
socket.on('request-all-lines', function () { return socket.emit('add-all', _this.lines); }); |
||||||
|
socket.on('request-all-pixels', function () { return socket.emit('fill-all', _this.pixels); }); |
||||||
|
socket.on('save-all', function () { return _this.saveAllDrawingsToFile(); }); |
||||||
|
}; |
||||||
|
return GlobalDraw; |
||||||
|
}(game_standard_1.ServerGame)); |
||||||
|
exports.GlobalDraw = GlobalDraw; |
@ -0,0 +1,44 @@ |
|||||||
|
"use strict"; |
||||||
|
var __extends = (this && this.__extends) || (function () { |
||||||
|
var extendStatics = function (d, b) { |
||||||
|
extendStatics = Object.setPrototypeOf || |
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || |
||||||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; |
||||||
|
return extendStatics(d, b); |
||||||
|
}; |
||||||
|
return function (d, b) { |
||||||
|
if (typeof b !== "function" && b !== null) |
||||||
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); |
||||||
|
extendStatics(d, b); |
||||||
|
function __() { this.constructor = d; } |
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
||||||
|
}; |
||||||
|
})(); |
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { |
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { |
||||||
|
if (ar || !(i in from)) { |
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i); |
||||||
|
ar[i] = from[i]; |
||||||
|
} |
||||||
|
} |
||||||
|
return to.concat(ar || Array.prototype.slice.call(from)); |
||||||
|
}; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.Memory = void 0; |
||||||
|
var game_standard_1 = require("./game_standard"); |
||||||
|
var Memory = /** @class */ (function (_super) { |
||||||
|
__extends(Memory, _super); |
||||||
|
function Memory(room, settings) { |
||||||
|
return _super.call(this, room, settings) || this; |
||||||
|
} |
||||||
|
Memory.prototype.gameAction = function (action) { |
||||||
|
var _a; |
||||||
|
var args = []; |
||||||
|
for (var _i = 1; _i < arguments.length; _i++) { |
||||||
|
args[_i - 1] = arguments[_i]; |
||||||
|
} |
||||||
|
(_a = this.room).toAll.apply(_a, __spreadArray(['game-action', action], args, false)); |
||||||
|
}; |
||||||
|
return Memory; |
||||||
|
}(game_standard_1.ServerGame)); |
||||||
|
exports.Memory = Memory; |
@ -0,0 +1,27 @@ |
|||||||
|
"use strict"; |
||||||
|
var __extends = (this && this.__extends) || (function () { |
||||||
|
var extendStatics = function (d, b) { |
||||||
|
extendStatics = Object.setPrototypeOf || |
||||||
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || |
||||||
|
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; |
||||||
|
return extendStatics(d, b); |
||||||
|
}; |
||||||
|
return function (d, b) { |
||||||
|
if (typeof b !== "function" && b !== null) |
||||||
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); |
||||||
|
extendStatics(d, b); |
||||||
|
function __() { this.constructor = d; } |
||||||
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); |
||||||
|
}; |
||||||
|
})(); |
||||||
|
exports.__esModule = true; |
||||||
|
exports.Pong = void 0; |
||||||
|
var game_standard_1 = require("./game_standard"); |
||||||
|
var Pong = /** @class */ (function (_super) { |
||||||
|
__extends(Pong, _super); |
||||||
|
function Pong(lobby, settings) { |
||||||
|
return _super.call(this, lobby, settings) || this; |
||||||
|
} |
||||||
|
return Pong; |
||||||
|
}(game_standard_1.ServerGame)); |
||||||
|
exports.Pong = Pong; |
@ -0,0 +1,76 @@ |
|||||||
|
"use strict"; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.p = exports.Vector = void 0; |
||||||
|
var Vector = /** @class */ (function () { |
||||||
|
function Vector(x, y) { |
||||||
|
this.x = x; |
||||||
|
this.y = y; |
||||||
|
} |
||||||
|
Vector.fromAngle = function (angle) { |
||||||
|
return new Vector(Math.cos(angle), Math.sin(angle)); |
||||||
|
}; |
||||||
|
Vector.sub = function (v1, v2) { |
||||||
|
return new Vector(v1.x - v2.x, v1.y - v2.y); |
||||||
|
}; |
||||||
|
Vector.div = function (v1, divider) { |
||||||
|
return new Vector(v1.x / divider, v1.y / divider); |
||||||
|
}; |
||||||
|
Vector.prototype.add = function (other) { |
||||||
|
this.x += other.x; |
||||||
|
this.y += other.y; |
||||||
|
return this; |
||||||
|
}; |
||||||
|
Vector.prototype.mult = function (scalar) { |
||||||
|
this.x *= scalar; |
||||||
|
this.y *= scalar; |
||||||
|
return this; |
||||||
|
}; |
||||||
|
Vector.prototype.addMag = function (length) { |
||||||
|
this.setMag(this.mag() + length); |
||||||
|
return this; |
||||||
|
}; |
||||||
|
Vector.prototype.setMag = function (length) { |
||||||
|
var mag = this.mag(); |
||||||
|
this.x /= mag; |
||||||
|
this.y /= mag; |
||||||
|
this.x *= length; |
||||||
|
this.y *= length; |
||||||
|
return this; |
||||||
|
}; |
||||||
|
Vector.prototype.rotate = function (rad) { |
||||||
|
var r = this.rotated(rad); |
||||||
|
this.x = r.x; |
||||||
|
this.y = r.y; |
||||||
|
return this; |
||||||
|
}; |
||||||
|
Vector.prototype.copy = function () { |
||||||
|
return new Vector(this.x, this.y); |
||||||
|
}; |
||||||
|
Vector.prototype.heading = function () { |
||||||
|
var r = this.rotated(Math.PI / -2); |
||||||
|
return Math.atan2(r.x, -r.y); |
||||||
|
}; |
||||||
|
Vector.prototype.mag = function () { |
||||||
|
return Math.sqrt(this.x * this.x + this.y * this.y); |
||||||
|
}; |
||||||
|
Vector.prototype.serialized = function () { |
||||||
|
return { |
||||||
|
x: this.x, |
||||||
|
y: this.y |
||||||
|
}; |
||||||
|
}; |
||||||
|
Vector.prototype.rotated = function (rad) { |
||||||
|
var x = Math.cos(rad) * this.x - Math.sin(rad) * this.y, y = Math.sin(rad) * this.x + Math.cos(rad) * this.y; |
||||||
|
return new Vector(x, y); |
||||||
|
}; |
||||||
|
return Vector; |
||||||
|
}()); |
||||||
|
exports.Vector = Vector; |
||||||
|
exports.p = { |
||||||
|
createVector: function (x, y) { |
||||||
|
return new Vector(x, y); |
||||||
|
}, |
||||||
|
dist: function (x1, y1, x2, y2) { |
||||||
|
return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)); |
||||||
|
} |
||||||
|
}; |
@ -0,0 +1,97 @@ |
|||||||
|
"use strict"; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.log = void 0; |
||||||
|
var fs = require("fs"); |
||||||
|
var util = require("util"); |
||||||
|
var logFolder = "./logs"; |
||||||
|
if (!fs.existsSync(logFolder)) { |
||||||
|
fs.mkdirSync(logFolder); |
||||||
|
} |
||||||
|
var logFile = fs.createWriteStream(logFolder + '/' + new Date().getTime() + '.log', { flags: 'a' }); |
||||||
|
var logStdout = process.stdout; |
||||||
|
console.log = function () { |
||||||
|
logFile.write(util.format.apply(null, arguments) + '\n'); |
||||||
|
logStdout.write(util.format.apply(null, arguments) + '\n'); |
||||||
|
}; |
||||||
|
console.error = console.log; |
||||||
|
process.on('uncaughtException', function (err) { |
||||||
|
console.error('Uncaught error: ', err); |
||||||
|
process.exit(1); |
||||||
|
}); |
||||||
|
process.stdin.pipe(logFile); |
||||||
|
function log(type, client, lobby, msg) { |
||||||
|
var now = new Date(Date.now()).toString(), message, name, game; |
||||||
|
var date = '[' + now.substring(0, now.indexOf('GMT') - 1) + ']'; |
||||||
|
if (client) { |
||||||
|
game = '[' + client.game + ']'; |
||||||
|
var short = client.id.substring(0, Math.round(client.id.length / 3)); |
||||||
|
name = '"' + client.name + '(' + short + '...)"'; |
||||||
|
} |
||||||
|
else { |
||||||
|
if (type === 'lobby-deleted') { |
||||||
|
game = '[' + lobby.gameName + ']'; |
||||||
|
} |
||||||
|
else { |
||||||
|
game = '[undefined]'; |
||||||
|
} |
||||||
|
name = 'UNKNOWN'; |
||||||
|
} |
||||||
|
if (lobby) { |
||||||
|
game = '[' + lobby.gameName + ']'; |
||||||
|
} |
||||||
|
switch (type) { |
||||||
|
case 'join-non-existent': |
||||||
|
message = name + ' tried to join non-existent lobby "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'join-started': |
||||||
|
message = name + ' tried to join the started game "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'lobby-created': |
||||||
|
message = name + ' created new lobby: "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'game-started': |
||||||
|
message = name + ' started the game: "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'game-stopped': |
||||||
|
message = name + ' stopped the game: "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'member-joined': |
||||||
|
message = name + ' joined the lobby "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'member-left': |
||||||
|
message = name + ' left the lobby "' + lobby.id + '"'; |
||||||
|
break; |
||||||
|
case 'lobby-deleted': |
||||||
|
message = 'Lobby "' + lobby.id + '" was deleted'; |
||||||
|
break; |
||||||
|
case 'save-success': |
||||||
|
message = msg; |
||||||
|
break; |
||||||
|
case 'save-error': |
||||||
|
message = 'Failed to save contents to file: ' + msg; |
||||||
|
break; |
||||||
|
case 'load-success': |
||||||
|
message = 'Successfully loaded and parsed file contents'; |
||||||
|
break; |
||||||
|
case 'load-error': |
||||||
|
message = 'Failed to load file: ' + msg; |
||||||
|
break; |
||||||
|
case 'parse-error': |
||||||
|
message = 'Failed to parse contents: ' + msg; |
||||||
|
break; |
||||||
|
case 'feedback': |
||||||
|
message = 'Saved feedback to file: ' + msg; |
||||||
|
break; |
||||||
|
case 'connection': |
||||||
|
message = name + ' connected'; |
||||||
|
break; |
||||||
|
case 'disconnection': |
||||||
|
message = name + ' disconnected'; |
||||||
|
break; |
||||||
|
case 'startup': |
||||||
|
message = msg; |
||||||
|
break; |
||||||
|
} |
||||||
|
console.log(date + game + ' ---> {' + message + '}'); |
||||||
|
} |
||||||
|
exports.log = log; |
@ -0,0 +1,126 @@ |
|||||||
|
"use strict"; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.serializeObject = exports.ConnectionManager = void 0; |
||||||
|
var room_1 = require("./room"); |
||||||
|
var client_1 = require("./client"); |
||||||
|
var logger_1 = require("./logger"); |
||||||
|
var fs = require("fs"); |
||||||
|
var ConnectionManager = /** @class */ (function () { |
||||||
|
function ConnectionManager(io) { |
||||||
|
ConnectionManager.Instance = this; |
||||||
|
this.io = io; |
||||||
|
this.rooms = []; |
||||||
|
var drawSettings = { |
||||||
|
project: { |
||||||
|
name: 'global-draw', |
||||||
|
playerCounts: null |
||||||
|
}, |
||||||
|
always: true, |
||||||
|
spectators: true |
||||||
|
}; |
||||||
|
var drawRoom = this.createRoom(drawSettings, ''); |
||||||
|
drawRoom.id = 'global-draw-room'; |
||||||
|
drawRoom.startGame(); |
||||||
|
this.rooms.push(drawRoom); |
||||||
|
} |
||||||
|
ConnectionManager.RoomListByGame = function (game) { |
||||||
|
return this.Instance.rooms.filter(function (l) { return l.gameName === game; }); |
||||||
|
}; |
||||||
|
ConnectionManager.ClientListByClientId = function (clientId) { |
||||||
|
var room = room_1.Room.getByClientId(clientId, this.Instance.rooms); |
||||||
|
return room.clients; |
||||||
|
}; |
||||||
|
ConnectionManager.prototype.newSocket = function (socket) { |
||||||
|
var client = new client_1.Client(socket, this); |
||||||
|
(0, logger_1.log)('connection', client); |
||||||
|
}; |
||||||
|
ConnectionManager.prototype.roomListUpdate = function () { |
||||||
|
this.io.sockets.emit('room-list', serializeObject(this.rooms)); |
||||||
|
}; |
||||||
|
ConnectionManager.prototype.createRoom = function (settings, name) { |
||||||
|
var roomId = room_1.Room.generateCode(10); |
||||||
|
// @ts-ignore
|
||||||
|
var room = new room_1.Room(name, roomId, settings, this.io); |
||||||
|
this.rooms.push(room); |
||||||
|
this.roomListUpdate(); |
||||||
|
return room; |
||||||
|
}; |
||||||
|
ConnectionManager.prototype.deleteRoom = function (room) { |
||||||
|
this.rooms.splice(this.rooms.indexOf(room), 1); |
||||||
|
this.roomListUpdate(); |
||||||
|
(0, logger_1.log)('lobby-deleted', null, room); |
||||||
|
}; |
||||||
|
//Starts the game of a room with given id
|
||||||
|
ConnectionManager.prototype.startGame = function (client, _roomId) { |
||||||
|
var lobby = room_1.Room.getByClientId(client.id, this.rooms); |
||||||
|
if (!lobby) |
||||||
|
return; |
||||||
|
if (!lobby.hasStarted) { |
||||||
|
lobby.startGame(); |
||||||
|
(0, logger_1.log)('game-started', client, lobby); |
||||||
|
} |
||||||
|
this.io.sockets.emit('room-list', serializeObject(this.rooms)); |
||||||
|
}; |
||||||
|
//Stops the game of a lobby with given id
|
||||||
|
ConnectionManager.prototype.stopGame = function (client, lobbyId) { |
||||||
|
var lobby = room_1.Room.getByRoomId(lobbyId, this.rooms); |
||||||
|
if (!lobby) |
||||||
|
return; |
||||||
|
lobby.stopGame(client); |
||||||
|
(0, logger_1.log)('game-stopped', client, lobby); |
||||||
|
}; |
||||||
|
//Saves user feedback to a file
|
||||||
|
ConnectionManager.prototype.saveFeedbackToFile = function (client, content) { |
||||||
|
var date = new Date(Date.now()).toString(); |
||||||
|
var path = "feedback/" + client.game + '.txt'; |
||||||
|
var saveToFile = function (content) { |
||||||
|
fs.writeFile(path, content, function (err) { |
||||||
|
if (err) |
||||||
|
(0, logger_1.log)('save-error', client, null, err.message); |
||||||
|
else |
||||||
|
(0, logger_1.log)('feedback', client, null, path); |
||||||
|
}); |
||||||
|
}; |
||||||
|
if (fs.existsSync(path)) { |
||||||
|
fs.readFile(path, 'utf8', function (err, data) { |
||||||
|
if (err) |
||||||
|
(0, logger_1.log)('load-error', client, null, err.message); |
||||||
|
else { |
||||||
|
(0, logger_1.log)('load-success', client, null); |
||||||
|
var newContent = data + '\n\n\n\n' + date + '\n\n' + content; |
||||||
|
saveToFile(newContent); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
else { |
||||||
|
saveToFile(date + '\n' + content); |
||||||
|
} |
||||||
|
}; |
||||||
|
//Removes a disconnected client from all references
|
||||||
|
ConnectionManager.prototype.disconnected = function (client) { |
||||||
|
var room = room_1.Room.getByClientId(client.id, this.rooms); |
||||||
|
if (room) |
||||||
|
client.leaveRoom(room.id); |
||||||
|
(0, logger_1.log)('disconnection', client); |
||||||
|
}; |
||||||
|
return ConnectionManager; |
||||||
|
}()); |
||||||
|
exports.ConnectionManager = ConnectionManager; |
||||||
|
function serializeObject(object) { |
||||||
|
function serialize(obj) { |
||||||
|
if (!obj) |
||||||
|
return obj; |
||||||
|
if (obj.serialized) |
||||||
|
return obj.serialized; |
||||||
|
else if (obj instanceof Array) { |
||||||
|
var content_1 = []; |
||||||
|
obj.forEach(function (o) { |
||||||
|
content_1.push(serialize(o)); |
||||||
|
}); |
||||||
|
return content_1; |
||||||
|
} |
||||||
|
return obj; |
||||||
|
} |
||||||
|
return serialize(object); |
||||||
|
} |
||||||
|
exports.serializeObject = serializeObject; |
@ -0,0 +1,164 @@ |
|||||||
|
"use strict"; |
||||||
|
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { |
||||||
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { |
||||||
|
if (ar || !(i in from)) { |
||||||
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i); |
||||||
|
ar[i] = from[i]; |
||||||
|
} |
||||||
|
} |
||||||
|
return to.concat(ar || Array.prototype.slice.call(from)); |
||||||
|
}; |
||||||
|
exports.__esModule = true; |
||||||
|
exports.Room = void 0; |
||||||
|
var memory_1 = require("./games/memory"); |
||||||
|
var pong_1 = require("./games/pong"); |
||||||
|
var global_draw_1 = require("./games/global_draw"); |
||||||
|
var chainreact_1 = require("./games/chainreact"); |
||||||
|
var manager_1 = require("./manager"); |
||||||
|
var Room = /** @class */ (function () { |
||||||
|
function Room(name, id, settings, io) { |
||||||
|
this.id = id; |
||||||
|
this.name = name; |
||||||
|
if (!io || !settings) |
||||||
|
return; |
||||||
|
this.settings = settings; |
||||||
|
this.gameName = settings.project.name; |
||||||
|
this.clientCounts = settings.project.playerCounts; |
||||||
|
this.io = io; |
||||||
|
this.clients = []; |
||||||
|
this.gameSettings = {}; |
||||||
|
} |
||||||
|
Object.defineProperty(Room.prototype, "leader", { |
||||||
|
get: function () { |
||||||
|
return this.players[0]; |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Object.defineProperty(Room.prototype, "players", { |
||||||
|
get: function () { |
||||||
|
return this.clients.filter(function (c) { return c.isPlayer; }); |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Object.defineProperty(Room.prototype, "spectators", { |
||||||
|
get: function () { |
||||||
|
return this.clients.filter(function (c) { return c.isSpectator; }); |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Object.defineProperty(Room.prototype, "serialized", { |
||||||
|
get: function () { |
||||||
|
return { |
||||||
|
id: this.id, |
||||||
|
name: this.name, |
||||||
|
game: this.gameName, |
||||||
|
clientCounts: this.clientCounts, |
||||||
|
clients: (0, manager_1.serializeObject)(this.clients), |
||||||
|
hasStarted: this.hasStarted |
||||||
|
}; |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Object.defineProperty(Room.prototype, "isEmpty", { |
||||||
|
get: function () { |
||||||
|
return !(this.clients.length); |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Object.defineProperty(Room.prototype, "hasStarted", { |
||||||
|
get: function () { |
||||||
|
return this.runningGame != null; |
||||||
|
}, |
||||||
|
enumerable: false, |
||||||
|
configurable: true |
||||||
|
}); |
||||||
|
Room.getByRoomId = function (id, lobbies) { |
||||||
|
for (var _i = 0, lobbies_1 = lobbies; _i < lobbies_1.length; _i++) { |
||||||
|
var l = lobbies_1[_i]; |
||||||
|
if (l.id === id) |
||||||
|
return l; |
||||||
|
} |
||||||
|
return null; |
||||||
|
}; |
||||||
|
Room.getByClientId = function (id, lobbies) { |
||||||
|
for (var _i = 0, lobbies_2 = lobbies; _i < lobbies_2.length; _i++) { |
||||||
|
var l = lobbies_2[_i]; |
||||||
|
for (var _a = 0, _b = l.clients; _a < _b.length; _a++) { |
||||||
|
var c = _b[_a]; |
||||||
|
if (c.id === id) |
||||||
|
return l; |
||||||
|
} |
||||||
|
} |
||||||
|
return null; |
||||||
|
}; |
||||||
|
Room.generateCode = function (elements) { |
||||||
|
var code = ''; |
||||||
|
var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; |
||||||
|
while (elements--) { |
||||||
|
code += possible.charAt(Math.floor(Math.random() * possible.length)); |
||||||
|
} |
||||||
|
return code; |
||||||
|
}; |
||||||
|
Room.prototype.startGame = function () { |
||||||
|
var seed = Math.random() * 10000; |
||||||
|
this.toAll('start-game', seed); |
||||||
|
this.runGame(); |
||||||
|
}; |
||||||
|
Room.prototype.stopGame = function (client) { |
||||||
|
this.toAll('stop-game', client); |
||||||
|
this.runningGame = null; |
||||||
|
}; |
||||||
|
Room.prototype.add = function (client) { |
||||||
|
this.clients.push(client); |
||||||
|
var isPlayer = !this.hasStarted && this.hasValidPlayerCount(); |
||||||
|
client.isPlayer = isPlayer; |
||||||
|
client.isSpectator = !isPlayer; |
||||||
|
client.isReady = false; |
||||||
|
client.join(this.id); |
||||||
|
this.toAll('member-joined', client.id, client.name); |
||||||
|
this.toAll('client-list', this.clients); |
||||||
|
this.toAll('game-settings', this.gameSettings); |
||||||
|
if (this.hasStarted) |
||||||
|
this.runningGame.addClient(client); |
||||||
|
}; |
||||||
|
Room.prototype.hasValidPlayerCount = function () { |
||||||
|
var _this = this; |
||||||
|
var valid = false; |
||||||
|
this.clientCounts.forEach(function (c) { |
||||||
|
if (c === _this.clients.length) |
||||||
|
valid = true; |
||||||
|
}); |
||||||
|
return valid; |
||||||
|
}; |
||||||
|
Room.prototype.runGame = function () { |
||||||
|
switch (this.gameName) { |
||||||
|
case 'memory': |
||||||
|
this.runningGame = new memory_1.Memory(this, this.settings); |
||||||
|
break; |
||||||
|
case 'pong': |
||||||
|
this.runningGame = new pong_1.Pong(this, this.settings); |
||||||
|
break; |
||||||
|
case 'global-draw': |
||||||
|
this.runningGame = new global_draw_1.GlobalDraw(this, this.settings); |
||||||
|
break; |
||||||
|
case 'chainreact': |
||||||
|
this.runningGame = new chainreact_1.Chainreact(this, this.settings); |
||||||
|
break; |
||||||
|
} |
||||||
|
}; |
||||||
|
Room.prototype.toAll = function (event) { |
||||||
|
var _a; |
||||||
|
var args = []; |
||||||
|
for (var _i = 1; _i < arguments.length; _i++) { |
||||||
|
args[_i - 1] = arguments[_i]; |
||||||
|
} |
||||||
|
(_a = this.io.to(this.id)).emit.apply(_a, __spreadArray([event, (0, manager_1.serializeObject)(this)], (0, manager_1.serializeObject)(args), false)); |
||||||
|
}; |
||||||
|
return Room; |
||||||
|
}()); |
||||||
|
exports.Room = Room; |
@ -0,0 +1,27 @@ |
|||||||
|
'use strict'; |
||||||
|
exports.__esModule = true; |
||||||
|
var logger_1 = require("./logger"); |
||||||
|
var manager_1 = require("./manager"); |
||||||
|
var https = require("https"); |
||||||
|
var socket_io_1 = require("socket.io"); |
||||||
|
var fs = require("fs"); |
||||||
|
var ini = require("ini"); |
||||||
|
function GameServer() { |
||||||
|
var p2p = require('socket.io-p2p-server').Server; |
||||||
|
var rootDir = __dirname + '/..'; |
||||||
|
var httpsPort = ini.parse(fs.readFileSync(rootDir + '/env_config.ini', 'utf-8'))['nodejs_port']; |
||||||
|
var cert = fs.readFileSync(rootDir + '/ssl_certificate/cert.pem'); |
||||||
|
var key = fs.readFileSync(rootDir + '/ssl_certificate/key.pem'); |
||||||
|
var httpsServer = https.createServer({ key: key, cert: cert }); |
||||||
|
var sIO = new socket_io_1.Server(httpsServer, { |
||||||
|
cors: { |
||||||
|
origin: ["https://play.benjamin-kraft.local", "https://dev.play.benjamin-kraft.eu", "https://play.benjamin-kraft.eu"] |
||||||
|
} |
||||||
|
}); |
||||||
|
sIO.use(p2p); |
||||||
|
httpsServer.listen(httpsPort); |
||||||
|
var connectionManager = new manager_1.ConnectionManager(sIO); |
||||||
|
// On new connection
|
||||||
|
sIO.on('connection', function (socket) { return connectionManager.newSocket(socket); }); |
||||||
|
(0, logger_1.log)('startup', null, null, 'Server is listening on port ' + httpsPort); |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
'use strict'; |
||||||
|
|
||||||
|
|
||||||
|
import {log} from "./logger"; |
||||||
|
import {ConnectionManager} from "./manager"; |
||||||
|
|
||||||
|
import https = require('https'); |
||||||
|
import {Server} from 'socket.io'; |
||||||
|
import fs = require('fs'); |
||||||
|
import ini = require('ini'); |
||||||
|
|
||||||
|
function GameServer(){ |
||||||
|
const p2p = require('socket.io-p2p-server').Server; |
||||||
|
|
||||||
|
let rootDir = __dirname + '/..'; |
||||||
|
|
||||||
|
let httpsPort = ini.parse(fs.readFileSync(rootDir + '/env_config.ini', 'utf-8'))['nodejs_port']; |
||||||
|
|
||||||
|
let cert = fs.readFileSync(rootDir + '/ssl_certificate/cert.pem'); |
||||||
|
let key = fs.readFileSync(rootDir + '/ssl_certificate/key.pem'); |
||||||
|
|
||||||
|
let httpsServer = https.createServer({key: key, cert: cert}); |
||||||
|
|
||||||
|
let sIO = new Server(httpsServer, { |
||||||
|
cors: { |
||||||
|
origin: ["https://play.benjamin-kraft.local", "https://dev.play.benjamin-kraft.eu", "https://play.benjamin-kraft.eu"] |
||||||
|
} |
||||||
|
}); |
||||||
|
sIO.use(p2p); |
||||||
|
|
||||||
|
httpsServer.listen(httpsPort); |
||||||
|
|
||||||
|
let connectionManager = new ConnectionManager(sIO); |
||||||
|
|
||||||
|
// On new connection
|
||||||
|
sIO.on('connection', socket => connectionManager.newSocket(socket)); |
||||||
|
|
||||||
|
log('startup', null, null, 'Server is listening on port ' + httpsPort); |
||||||
|
} |
@ -1,35 +0,0 @@ |
|||||||
'use strict'; |
|
||||||
|
|
||||||
import {log} from "./logger"; |
|
||||||
import {ConnectionManager} from "./manager"; |
|
||||||
|
|
||||||
import https = require('https'); |
|
||||||
import {Server} from 'socket.io'; |
|
||||||
const p2p = require('socket.io-p2p-server').Server; |
|
||||||
import fs = require('fs'); |
|
||||||
import ini = require('ini'); |
|
||||||
|
|
||||||
let rootDir = __dirname + '/..'; |
|
||||||
|
|
||||||
let httpsPort = ini.parse(fs.readFileSync(rootDir + '/env_config.ini', 'utf-8'))['nodejs_port']; |
|
||||||
|
|
||||||
let cert = fs.readFileSync(rootDir + '/ssl_certificate/cert.pem'); |
|
||||||
let key = fs.readFileSync(rootDir + '/ssl_certificate/key.pem'); |
|
||||||
|
|
||||||
let httpsServer = https.createServer({key: key, cert: cert}); |
|
||||||
|
|
||||||
let sIO = new Server(httpsServer, { |
|
||||||
cors: { |
|
||||||
origin: ["https://play.benjamin-kraft.local", "https://dev.play.benjamin-kraft.eu", "https://play.benjamin-kraft.eu"] |
|
||||||
} |
|
||||||
}); |
|
||||||
sIO.use(p2p); |
|
||||||
|
|
||||||
httpsServer.listen(httpsPort); |
|
||||||
|
|
||||||
let connectionManager = new ConnectionManager(sIO); |
|
||||||
|
|
||||||
// On new connection
|
|
||||||
sIO.on('connection', socket => connectionManager.newSocket(socket)); |
|
||||||
|
|
||||||
log('startup', null, null, 'Server is listening on port ' + httpsPort); |
|
Loading…
Reference in new issue