improved idle handling
- times are now in seconds rather than minutes, like all other IITC time settings - ignore mousemove events for no/small movements - more likely to go idle when it should
This commit is contained in:
parent
c2b567f053
commit
a988552e6e
30
code/idle.js
30
code/idle.js
@ -1,8 +1,15 @@
|
|||||||
// IDLE HANDLING /////////////////////////////////////////////////////
|
// 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 () {
|
var idleReset = function () {
|
||||||
// update immediately when the user comes back
|
// update immediately when the user comes back
|
||||||
if(isIdle()) {
|
if(isIdle()) {
|
||||||
@ -13,7 +20,24 @@ var idleReset = function () {
|
|||||||
}
|
}
|
||||||
window.idleTime = 0;
|
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() {
|
window.isIdle = function() {
|
||||||
return window.idleTime >= MAX_IDLE_TIME;
|
return window.idleTime >= MAX_IDLE_TIME;
|
||||||
|
2
main.js
2
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.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.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.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.PRECACHE_PLAYER_NAMES_ZOOM = 17; // zoom level to start pre-resolving player names
|
||||||
window.HIDDEN_SCROLLBAR_ASSUMED_WIDTH = 20;
|
window.HIDDEN_SCROLLBAR_ASSUMED_WIDTH = 20;
|
||||||
window.SIDEBAR_WIDTH = 300;
|
window.SIDEBAR_WIDTH = 300;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user