mirror of
https://github.com/exane/not-gwent-online
synced 2024-11-23 19:36:53 +00:00
unstable server (╯°□°)╯︵ ┻━┻
This commit is contained in:
parent
cde8422579
commit
ab94de2dcc
@ -225,6 +225,10 @@ var Battle = (function(){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r.shutDown = function() {
|
||||||
|
this.channel = null;
|
||||||
|
}
|
||||||
|
|
||||||
return Battle;
|
return Battle;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ var Connections = (function(){
|
|||||||
* constructor here
|
* constructor here
|
||||||
*/
|
*/
|
||||||
this._connections = {};
|
this._connections = {};
|
||||||
|
this.roomCollection = {};
|
||||||
|
|
||||||
};
|
};
|
||||||
var r = Connections.prototype;
|
var r = Connections.prototype;
|
||||||
@ -17,6 +18,7 @@ var Connections = (function(){
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
r._connections = null;
|
r._connections = null;
|
||||||
|
r.roomCollection = null;
|
||||||
|
|
||||||
r.add = function(user) {
|
r.add = function(user) {
|
||||||
this._connections[user.getID()] = user;
|
this._connections[user.getID()] = user;
|
||||||
|
@ -16,6 +16,8 @@ var Room = (function(){
|
|||||||
this._ready = {};
|
this._ready = {};
|
||||||
this.socket = scServer.global;
|
this.socket = scServer.global;
|
||||||
|
|
||||||
|
|
||||||
|
console.log("room created: " + this.getID());
|
||||||
};
|
};
|
||||||
var r = Room.prototype;
|
var r = Room.prototype;
|
||||||
/**
|
/**
|
||||||
@ -71,12 +73,27 @@ var Room = (function(){
|
|||||||
return !!this._ready[this._users[0].getID()] && !!this._ready[this._users[1].getID()];
|
return !!this._ready[this._users[0].getID()] && !!this._ready[this._users[1].getID()];
|
||||||
}
|
}
|
||||||
|
|
||||||
r.leave = function(user) {
|
r.leave = function(user){
|
||||||
var p = "p2";
|
var p = "p2";
|
||||||
if(user.getID() === this._users[0].getID()) {
|
var i = 1;
|
||||||
|
if(user.getID() === this._users[0].getID()){
|
||||||
p = "p1";
|
p = "p1";
|
||||||
|
i = 0;
|
||||||
}
|
}
|
||||||
this._battle.userLeft(p);
|
|
||||||
|
this._users.splice(i, 1);
|
||||||
|
|
||||||
|
if(this._battle){
|
||||||
|
this._battle.userLeft(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!this.hasUser()) {
|
||||||
|
connections.roomCollection[this.getID()] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
r.hasUser = function() {
|
||||||
|
return this._users.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,7 +23,9 @@ var User = (function(){
|
|||||||
r._id = null;
|
r._id = null;
|
||||||
r._name = null;
|
r._name = null;
|
||||||
r._rooms = null;
|
r._rooms = null;
|
||||||
|
r._searching = false;
|
||||||
r.socket = null;
|
r.socket = null;
|
||||||
|
r.disconnected = false;
|
||||||
|
|
||||||
r.getID = function(){
|
r.getID = function(){
|
||||||
return this._id;
|
return this._id;
|
||||||
@ -76,11 +78,30 @@ var User = (function(){
|
|||||||
this._rooms.push(room);
|
this._rooms.push(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
r.cleanUp = function() {
|
||||||
|
for(var i=0; i<this._rooms.length; i++) {
|
||||||
|
var room = this._rooms[i];
|
||||||
|
if(room[i] === null) {
|
||||||
|
this._rooms.splice(i, 1);
|
||||||
|
|
||||||
|
return this.cleanUp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
r.disconnect = function() {
|
r.disconnect = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
this.disconnected = true;
|
||||||
|
|
||||||
this._rooms.forEach(function(room) {
|
this._rooms.forEach(function(room) {
|
||||||
room.leave(self);
|
room.leave(self);
|
||||||
|
if(!room.hasUser()) {
|
||||||
|
console.log("Remove room: ", room.getID());
|
||||||
|
room = null;
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this.cleanUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,8 +20,8 @@ module.exports.run = function(worker){
|
|||||||
|
|
||||||
httpServer.on('request', app);
|
httpServer.on('request', app);
|
||||||
|
|
||||||
var connections = Connections();
|
//var roomCollection = {};
|
||||||
var roomCollection = {};
|
global.connections = Connections(/*roomCollection*/);
|
||||||
|
|
||||||
scServer.on('connection', function(socket){
|
scServer.on('connection', function(socket){
|
||||||
var user = User(socket);
|
var user = User(socket);
|
||||||
@ -37,25 +37,36 @@ module.exports.run = function(worker){
|
|||||||
|
|
||||||
socket.on("request:gameLoaded", function(data){
|
socket.on("request:gameLoaded", function(data){
|
||||||
console.log(data);
|
console.log(data);
|
||||||
roomCollection[data._roomID].setReady(user);
|
connections.roomCollection[data._roomID].setReady(user);
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on("request:createRoom", function(){
|
socket.on("request:createRoom", function(){
|
||||||
|
if(user.getRoom()) return;
|
||||||
|
if(user._searching) return;
|
||||||
var room = Room(worker.getSCServer());
|
var room = Room(worker.getSCServer());
|
||||||
roomCollection[room.getID()] = room;
|
connections.roomCollection[room.getID()] = room;
|
||||||
room.join(user);
|
room.join(user);
|
||||||
|
user._searching = true;
|
||||||
console.log("room %s created by %s", room.getID(), user.getName());
|
console.log("room %s created by %s", room.getID(), user.getName());
|
||||||
user.send("response:createRoom", room.getID());
|
user.send("response:createRoom", room.getID());
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on("request:joinRoom", function(){
|
socket.on("request:joinRoom", function(){
|
||||||
|
if(user._searching) return;
|
||||||
|
user._searching = true;
|
||||||
console.log("joinroom");
|
console.log("joinroom");
|
||||||
var interval = setInterval(function(){
|
var interval = setInterval(function(){
|
||||||
for(var key in roomCollection) {
|
if(!user || user.disconnected) {
|
||||||
var room = roomCollection[key];
|
clearInterval(interval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(var key in connections.roomCollection) {
|
||||||
|
var room = connections.roomCollection[key];
|
||||||
|
if(!room) continue;
|
||||||
if(!room.isOpen()) continue;
|
if(!room.isOpen()) continue;
|
||||||
room.join(user);
|
room.join(user);
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
|
user._searching = false;
|
||||||
console.log("user %s joined room %s", user.getName(), room.getID());
|
console.log("user %s joined room %s", user.getName(), room.getID());
|
||||||
user.send("response:joinRoom", room.getID());
|
user.send("response:joinRoom", room.getID());
|
||||||
}
|
}
|
||||||
@ -71,6 +82,8 @@ module.exports.run = function(worker){
|
|||||||
socket.on('disconnect', function(){
|
socket.on('disconnect', function(){
|
||||||
connections.remove(user);
|
connections.remove(user);
|
||||||
user.disconnect();
|
user.disconnect();
|
||||||
|
console.log("user ", user.getName(), " disconnected");
|
||||||
|
user = null;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
Loading…
Reference in New Issue
Block a user