1
0
mirror of https://github.com/exane/not-gwent-online synced 2024-11-27 03:46:54 +00:00
not-gwent-online/server/User.js

175 lines
3.8 KiB
JavaScript
Raw Normal View History

2015-06-10 16:12:52 +00:00
var User = (function(){
var User = function(socket){
if(!(this instanceof User)){
return (new User(socket));
}
/**
* constructor here
*/
this.socket = socket;
2015-06-15 19:03:12 +00:00
this._rooms = [];
2015-06-10 16:12:52 +00:00
this._id = socket.id;
2015-06-13 07:58:55 +00:00
this.generateName();
2015-06-24 16:22:56 +00:00
this._events();
2015-06-10 16:12:52 +00:00
};
var r = User.prototype;
/**
* methods && properties here
* r.property = null;
* r.getProperty = function() {...}
*/
r._id = null;
2015-06-13 07:58:55 +00:00
r._name = null;
2015-06-15 19:03:12 +00:00
r._rooms = null;
2015-06-24 16:22:56 +00:00
r._inQueue = false;
2015-06-10 16:12:52 +00:00
r.socket = null;
r.disconnected = false;
2015-06-10 16:12:52 +00:00
r.getID = function(){
return this._id;
}
2015-06-24 16:22:56 +00:00
/*r.joinRoom = function(roomid){
2015-06-15 19:03:12 +00:00
var self = this;
2015-06-24 16:22:56 +00:00
*//*this.socket.on(roomid, function(d) {
2015-06-15 19:03:12 +00:00
var event = d.event, data = d.data;
self.socket.on(event, data);
2015-06-24 16:22:56 +00:00
});*//*
}*/
2015-06-10 16:12:52 +00:00
r.send = function(event, data, room){
room = room || null;
data = data || null;
if(!room){
this.socket.emit(event, data);
}
2015-06-24 16:22:56 +00:00
else {
this.socket.to(room).emit(event, data);
/*this.socket.global.publish(room, {
2015-06-15 19:03:12 +00:00
event: event,
data: data
2015-06-24 16:22:56 +00:00
})*/
2015-06-10 16:12:52 +00:00
}
}
2015-06-13 07:58:55 +00:00
r.generateName = function(){
var name = "Player" + (((Math.random() * 8999) + 1000) | 0);
//if(lobby.hasUser(name)) return generateName();
this._name = name;
return name;
}
r.setName = function(name) {
console.log("user name changed from %s to %s", this._name, name);
this._name = name;
}
2015-06-18 13:31:36 +00:00
2015-06-13 07:58:55 +00:00
r.getName = function() {
return this._name;
}
2015-06-18 13:31:36 +00:00
2015-06-13 07:58:55 +00:00
r.getRoom = function() {
2015-06-15 19:03:12 +00:00
return this._rooms[0];
2015-06-13 07:58:55 +00:00
}
2015-06-18 13:31:36 +00:00
2015-06-19 12:14:37 +00:00
r.setDeck = function(deck) {
console.log("set deck: ", deck);
this._deck = deck;
}
r.getDeck = function() {
return this._deck || "northern_realm";
}
2015-06-15 19:03:12 +00:00
r.addRoom = function(room) {
this._rooms.push(room);
2015-06-13 07:58:55 +00:00
}
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();
}
}
}
2015-06-13 07:58:55 +00:00
r.disconnect = function() {
2015-06-18 13:31:36 +00:00
var self = this;
this.disconnected = true;
2015-06-24 16:22:56 +00:00
matchmaking.removeFromQueue(this);
2015-06-18 13:31:36 +00:00
this._rooms.forEach(function(room) {
room.leave(self);
if(!room.hasUser()) {
console.log("Remove room: ", room.getID());
room = null;
}
2015-06-18 13:31:36 +00:00
})
this.cleanUp();
2015-06-13 07:58:55 +00:00
}
2015-06-24 16:22:56 +00:00
r._events = function() {
var socket = this.socket;
var self = this;
socket.on("request:name", function(data){
if(data && data.name){
self.setName(data.name);
}
socket.emit("response:name", {name: self.getName()});
})
/*socket.on("request:createRoom", function(){
var room = Room();
connections.roomCollection[room.getID()] = room;
room.join(self);
console.log("room %s created by %s", room.getID(), self.getName());
self.send("response:createRoom", room.getID());
})
socket.on("request:joinRoom", function(){
console.log("joinroom");
var interval = setInterval(function(){
for(var key in connections.roomCollection) {
var room = connections.roomCollection[key];
if(!room.isOpen()) continue;
room.join(self);
clearInterval(interval);
console.log("user %s joined room %s", self.getName(), room.getID());
self.send("response:joinRoom", room.getID());
}
}, 1000);
})*/
socket.on("request:matchmaking", function() {
if(self._inQueue) return;
matchmaking.findOpponent(self);
});
socket.on("request:gameLoaded", function(data){
console.log(data);
connections.roomCollection[data._roomID].setReady(self);
})
socket.on("set:deck", function(data) {
console.log(data);
if(data && data.deck){
self.setDeck(data.deck);
}
})
}
2015-06-13 07:58:55 +00:00
2015-06-10 16:12:52 +00:00
return User;
})();
module.exports = User;