diff --git a/client/js/client.js b/client/js/client.js index 1f69c95..14c8e5c 100644 --- a/client/js/client.js +++ b/client/js/client.js @@ -843,7 +843,10 @@ let Lobby = Backbone.View.extend({ initialize: function(options){ this.user = options.user; this.app = options.app; - this.listenTo(this.app.user, "change", this.render); + + this.app.receive("update:playerOnline", this.renderStatus.bind(this)); + + this.listenTo(this.app.user, "change:serverOffline", this.render); $(".gwent-battle").html(this.el); this.render(); }, @@ -863,6 +866,7 @@ let Lobby = Backbone.View.extend({ return this; }, startMatchmaking: function(){ + this.$el.find(".image-gif-loader").show(); this.app.trigger("startMatchmaking"); }, joinRoom: function(){ @@ -876,6 +880,9 @@ let Lobby = Backbone.View.extend({ changeName: function(e){ let name = $(e.target).val(); this.app.trigger("setName", name); + }, + renderStatus: function(n) { + this.$el.find(".nr-player-online").html(n); } }); diff --git a/client/templates/lobby.handlebars b/client/templates/lobby.handlebars index ff3a1f0..71bff1c 100644 --- a/client/templates/lobby.handlebars +++ b/client/templates/lobby.handlebars @@ -4,12 +4,12 @@ {{#if serverOffline}} <span class="pull-right">Server Status: <span class="label label-danger">Offline</span></span> {{else}} - <span class="pull-right">Server Status: <span class="label label-success">Online</span></span> + <span class="pull-right">Player online: <span class="nr-player-online">0</span> | Server Status: <span class="label label-success">Online</span></span> {{/if}} </div> <div class="panel-body"> <div class="row"> - <div class="col-xs-12"> + <div class="col-xs-12"> <input type="text" class="name-input" value="{{name}}"> <select id="deckChoice"> <option value="random">Deck: Random</option> @@ -25,9 +25,9 @@ <div class="col-xs-12"> <button type="button" class="btn btn-primary startMatchmaking"{{#if inMatchmakerQueue}} disabled{{/if}}> Search Opponent - {{#if inMatchmakerQueue}} - <i class="image-gif-loader pull-right"></i> - {{/if}} + {{!#if inMatchmakerQueue}} + <i class="image-gif-loader pull-right" style="display: none"></i> + {{!/if}} </button> <!--<button type="button" class="btn btn-success note">debug note</button>--> </div> diff --git a/server/Connections.js b/server/Connections.js index 3815e1a..ad33409 100644 --- a/server/Connections.js +++ b/server/Connections.js @@ -19,13 +19,16 @@ var Connections = (function(){ r._connections = null; r.roomCollection = null; + r._length = 0; r.add = function(user) { this._connections[user.getID()] = user; + this._length++; } r.remove = function(user) { delete this._connections[user.getID()]; + this._length--; } r.get = function() { @@ -36,6 +39,10 @@ var Connections = (function(){ return !!this._connections[user.getID()]; } + r.length = function() { + return this._length; + } + return Connections; })(); diff --git a/server/Socket.js b/server/Socket.js deleted file mode 100644 index cc601e5..0000000 --- a/server/Socket.js +++ /dev/null @@ -1,91 +0,0 @@ -/*var app = require('http').createServer(); -global.io = require("socket.io")(app);*/ -/*var User = require("./User"); -var Connections = require("./Connections"); -var Room = require("./Room");*/ - - -var Socket = (function(){ - var Socket = function(){ - if(!(this instanceof Socket)){ - return (new Socket()); - } - /** - * constructor here - */ - this.connections = Connections(); - this.roomCollection = {}; - app.listen(this.port); - this.io = io; - this._events(); - }; - var r = Socket.prototype; - /** - * methods && properties here - * r.property = null; - * r.getProperty = function() {...} - */ - r.io = null; - r.port = 16918; - r.connections = null; - r.roomCollection = null; - /* - r.matchmaker = null; - */ - - r._events = function(){ - var self = this; - this.io.on("connection", function(socket){ - var user = User(socket); - self.connections.add(user); - console.log("new user ", user.getName()); - - socket.on("request:name", function(data){ - if(data && data.name){ - user.setName(data.name); - } - socket.emit("response:name", {name: user.getName()}); - }) - - socket.on("request:createRoom", function(){ - var room = Room(); - self.roomCollection[room.getID()] = room; - room.join(user); - console.log("room %s created by %s", room.getID(), user.getName()); - user.send("response:createRoom", room.getID()); - }) - - socket.on("request:joinRoom", function(){ - console.log("joinroom"); - var interval = setInterval(function(){ - for(var key in self.roomCollection) { - var room = self.roomCollection[key]; - if(!room.isOpen()) continue; - room.join(user); - clearInterval(interval); - console.log("user %s joined room %s", user.getName(), room.getID()); - user.send("response:joinRoom", room.getID()); - } - }, 1000); - }) - - socket.on("request:roomData", function(){ - var room = user.getRoom(); - var players = room.getPlayers(); - user.send("response:roomData", {players: players}); - }) - - socket.on("disconnect", function(){ - self.connections.remove(user); - user.disconnect(); - }) - - socket.on("request:gameLoaded", function(data){ - self.roomCollection[data._roomID].setReady(user); - }) - }); - } - return Socket; -})(); - -module.exports = Socket; \ No newline at end of file diff --git a/server/User.js b/server/User.js index babaab0..6da1955 100644 --- a/server/User.js +++ b/server/User.js @@ -64,7 +64,7 @@ var User = (function(){ } r.setDeck = function(deck) { - console.log("set deck: ", deck); + //console.log("set deck: ", deck); this._deck = deck; } @@ -96,7 +96,7 @@ var User = (function(){ this._rooms.forEach(function(room) { room.leave(self); if(!room.hasUser()) { - console.log("Remove room: ", room.getID()); + //console.log("Remove room: ", room.getID()); room = null; } }) @@ -121,12 +121,12 @@ var User = (function(){ }); socket.on("request:gameLoaded", function(data){ - console.log(data); + //console.log(data); connections.roomCollection[data._roomID].setReady(self); }) socket.on("set:deck", function(data) { - console.log(data); + //console.log(data); if(data && data.deck){ self.setDeck(data.deck); } diff --git a/server/server.js b/server/server.js index fe58f6a..4aa8167 100644 --- a/server/server.js +++ b/server/server.js @@ -39,6 +39,9 @@ io.on("connection", function(socket) { //global connection user.disconnect(); console.log("user ", user.getName(), " disconnected"); user = null; + //io.emit("update:playerOnline", connections.length()); }) + + io.emit("update:playerOnline", connections.length()); }) \ No newline at end of file