diff --git a/code/idle.js b/code/idle.js index 39a4ab83..3c54c78c 100644 --- a/code/idle.js +++ b/code/idle.js @@ -1,8 +1,15 @@ // IDLE HANDLING ///////////////////////////////////////////////////// -window.idleTime = 0; // in minutes +window.idleTime = 0; // in seconds + +var IDLE_POLL_TIME = 10; + +var idlePoll = function() { + window.idleTime += IDLE_POLL_TIME; +} + +setInterval(idlePoll, IDLE_POLL_TIME*1000); -setInterval('window.idleTime += 1', 60*1000); var idleReset = function () { // update immediately when the user comes back if(isIdle()) { @@ -13,7 +20,24 @@ var idleReset = function () { } window.idleTime = 0; }; -$('body').mousemove(idleReset).keypress(idleReset); + +// only reset idle on mouse move where the coordinates are actually different. +// some browsers send the event when not moving! +var _lastMouseX=-1, _lastMouseY=-1; +var idleMouseMove = function(e) { + var dX = _lastMouseX-e.clientX; + var dY = _lastMouseY-e.clientY; + var deltaSquared = dX*dX + dY*dY; + // only treat movements over 3 pixels as enough to reset us + if (deltaSquared > 3*3) { + _lastMouseX = e.clientX; + _lastMouseY = e.clientY; + idleReset(); + } +} + +$('body').keypress(idleReset); +$('body').mousemove(idleMouseMove); window.isIdle = function() { return window.idleTime >= MAX_IDLE_TIME; diff --git a/main.js b/main.js index 4db68a51..f3ee42e1 100644 --- a/main.js +++ b/main.js @@ -119,7 +119,7 @@ window.ZOOM_LEVEL_ADJ = 5; // add 5 seconds per zoom level window.ON_MOVE_REFRESH = 1.25; //refresh time to use after a movement event window.MINIMUM_OVERRIDE_REFRESH = 5; //limit on refresh time since previous refresh, limiting repeated move refresh rate window.REFRESH_GAME_SCORE = 15*60; // refresh game score every 15 minutes -window.MAX_IDLE_TIME = 4; // stop updating map after 4min idling +window.MAX_IDLE_TIME = 4*60; // stop updating map after 4min idling window.PRECACHE_PLAYER_NAMES_ZOOM = 17; // zoom level to start pre-resolving player names window.HIDDEN_SCROLLBAR_ASSUMED_WIDTH = 20; window.SIDEBAR_WIDTH = 300;