diff --git a/game-client.js b/game-client.js index d6e9a12..49554a2 100644 --- a/game-client.js +++ b/game-client.js @@ -115,6 +115,7 @@ $(function() { frame = data.frame; }); + var paintFrames = 0; socket.on('notifyFrame', function(data, fn) { if (timeout != undefined) clearTimeout(timeout); @@ -127,25 +128,26 @@ $(function() { } frame++; - requestAnimationFrame(function() { - if (data.newPlayers) - { - data.newPlayers.forEach(function(p) { - if (p.num === user.num) - return; - var pl = new Player(true, grid, p); - renderer.addPlayer(pl); - core.initPlayer(grid, pl); - }); - } - - data.moves.forEach(function(val, i) { - var player = renderer.getPlayer(i); - if (!player) return; - if (val.left) player.die(); - player.heading = val.heading; + if (data.newPlayers) + { + data.newPlayers.forEach(function(p) { + if (p.num === user.num) + return; + var pl = new Player(true, grid, p); + renderer.addPlayer(pl); + core.initPlayer(grid, pl); }); - + } + + data.moves.forEach(function(val, i) { + var player = renderer.getPlayer(i); + if (!player) return; + if (val.left) player.die(); + player.heading = val.heading; + }); + + paintFrames++; + requestAnimationFrame(function() { paintLoop(); }); timeout = setTimeout(function() { @@ -165,8 +167,15 @@ $(function() { var deadFrames = 0; function paintLoop() { + if (paintFrames === 0) + return; + while (paintFrames > 0) + { + renderer.update(); + paintFrames--; + } renderer.paint(); - renderer.update(); + if (user.dead) { if (timeout) @@ -184,6 +193,7 @@ $(function() { socket.disconnect(); deadFrames++; + paintFrames++; requestAnimationFrame(paintLoop); } } diff --git a/public/bundle.js b/public/bundle.js index 32d7a12..7775826 100644 --- a/public/bundle.js +++ b/public/bundle.js @@ -401,6 +401,7 @@ $(function() { frame = data.frame; }); + var paintFrames = 0; socket.on('notifyFrame', function(data, fn) { if (timeout != undefined) clearTimeout(timeout); @@ -413,25 +414,26 @@ $(function() { } frame++; - requestAnimationFrame(function() { - if (data.newPlayers) - { - data.newPlayers.forEach(function(p) { - if (p.num === user.num) - return; - var pl = new Player(true, grid, p); - renderer.addPlayer(pl); - core.initPlayer(grid, pl); - }); - } - - data.moves.forEach(function(val, i) { - var player = renderer.getPlayer(i); - if (!player) return; - if (val.left) player.die(); - player.heading = val.heading; + if (data.newPlayers) + { + data.newPlayers.forEach(function(p) { + if (p.num === user.num) + return; + var pl = new Player(true, grid, p); + renderer.addPlayer(pl); + core.initPlayer(grid, pl); }); - + } + + data.moves.forEach(function(val, i) { + var player = renderer.getPlayer(i); + if (!player) return; + if (val.left) player.die(); + player.heading = val.heading; + }); + + paintFrames++; + requestAnimationFrame(function() { paintLoop(); }); timeout = setTimeout(function() { @@ -451,8 +453,15 @@ $(function() { var deadFrames = 0; function paintLoop() { + if (paintFrames === 0) + return; + while (paintFrames > 0) + { + renderer.update(); + paintFrames--; + } renderer.paint(); - renderer.update(); + if (user.dead) { if (timeout) @@ -470,6 +479,7 @@ $(function() { socket.disconnect(); deadFrames++; + paintFrames++; requestAnimationFrame(paintLoop); } }