41 lines
874 B
JavaScript
41 lines
874 B
JavaScript
function Room(domElem, lib) {
|
|
var players = {};
|
|
var logins = [];
|
|
|
|
return {
|
|
populate: populate,
|
|
enter: enter,
|
|
leave: leave
|
|
};
|
|
|
|
function Player(name) {
|
|
var player = {
|
|
dom: document.createElement('li'),
|
|
position: null
|
|
};
|
|
player.dom.textContent = name;
|
|
return player;
|
|
}
|
|
|
|
function populate(playersList) {
|
|
lib.clearElement(domElem);
|
|
for(var i = 0; i < playersList.length; i++) {
|
|
enter(playersList[i].login || "anon");
|
|
}
|
|
}
|
|
|
|
function enter(name) {
|
|
var player = Player(name);
|
|
players[name] = player;
|
|
player.position = lib.insert(name, logins);
|
|
beforePlayer = logins[player.position];
|
|
domElem.insertBefore(player.dom, beforePlayer && players[beforePlayer].dom);
|
|
logins.splice(player.position, 0, name);
|
|
}
|
|
|
|
function leave(name) {
|
|
domElem.removeChild(players[name].dom);
|
|
logins.splice(players[name].position, 1);
|
|
}
|
|
}
|