|
|
@ -1,10 +1,14 @@ |
|
|
|
var myName; |
|
|
|
var websocket; |
|
|
|
|
|
|
|
var statusbar |
|
|
|
var ballscreen; |
|
|
|
var svgscreen; |
|
|
|
|
|
|
|
var current_svgline; |
|
|
|
var balls_online = new Array(); |
|
|
|
var svglines_online = new Array(); |
|
|
|
|
|
|
|
var speed = 100; |
|
|
|
var line_kind = 1; |
|
|
|
|
|
|
@ -14,7 +18,7 @@ function init() { |
|
|
|
var login = document.getElementById('login'); |
|
|
|
login.parentNode.removeChild(login); |
|
|
|
|
|
|
|
var statusbar = document.getElementById('status'); |
|
|
|
statusbar = document.getElementById('status'); |
|
|
|
ballscreen = document.getElementById("ballscreen"); |
|
|
|
svgscreen = document.getElementById("svgscreen"); |
|
|
|
|
|
|
@ -31,40 +35,45 @@ function init() { |
|
|
|
|
|
|
|
function onOpen(evt) { |
|
|
|
updateUser(); |
|
|
|
setInterval(poll, speed); |
|
|
|
} |
|
|
|
|
|
|
|
function onMessage(evt) { |
|
|
|
console.log(evt.data); |
|
|
|
var ret = JSON.parse(evt.data); |
|
|
|
var balls = ret.balls; |
|
|
|
var lines = ret.lines; |
|
|
|
|
|
|
|
statusbar.innerHTML = balls.length; |
|
|
|
|
|
|
|
if(balls){ |
|
|
|
console.log('updating balls'); |
|
|
|
updateBalls(balls); |
|
|
|
} |
|
|
|
if(lines){ |
|
|
|
console.log('updating lines'); |
|
|
|
updateLines(lines); |
|
|
|
//updateLines(lines);
|
|
|
|
} |
|
|
|
|
|
|
|
setTimeout(function(){ |
|
|
|
poll(); |
|
|
|
}, speed); |
|
|
|
} |
|
|
|
|
|
|
|
function updateBalls(balls){ |
|
|
|
// Because we use transitions for the balls
|
|
|
|
// we really update them, and only delete the ones which are absent
|
|
|
|
|
|
|
|
var updates = 0; |
|
|
|
var news = 0; |
|
|
|
var removed = 0; |
|
|
|
|
|
|
|
for(i in balls_online){ |
|
|
|
balls_online[i].should_remove = true; |
|
|
|
} |
|
|
|
for (var i = balls.length - 1; i >= 0; i--) { |
|
|
|
var ball = document.getElementById(balls[i].information); |
|
|
|
if(ball){ |
|
|
|
++updates; |
|
|
|
ball.style.left = balls[i].position.x + "px"; |
|
|
|
ball.style.top = balls[i].position.y + "px"; |
|
|
|
ball.should_remove = false; |
|
|
|
} else { |
|
|
|
++news; |
|
|
|
var ball = document.createElement('div'); |
|
|
|
ball.should_remove = false; |
|
|
|
ball.id = balls[i].information; |
|
|
@ -79,10 +88,13 @@ function updateBalls(balls){ |
|
|
|
} |
|
|
|
for (var i = balls_online.length - 1; i >= 0; i--) { |
|
|
|
if(balls_online[i].should_remove){ |
|
|
|
++removed |
|
|
|
ballscreen.removeChild(balls_online[i]); |
|
|
|
balls_online.splice(i, 1); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
statusbar.innerHTML = updates + ', ' + news + ', ' + removed; |
|
|
|
} |
|
|
|
|
|
|
|
function updateLines(lines){ |
|
|
|