Add scrolling via keyboard

This commit is contained in:
Travis Weston
2015-02-07 11:19:37 -05:00
parent 29932a96f3
commit 3d00ed3c40
2 changed files with 71 additions and 4 deletions
+59 -1
View File
@@ -4,6 +4,7 @@
var Outside = {
name: _("Outside"),
_STORES_OFFSET: 0,
_GATHER_DELAY: 60,
_TRAPS_DELAY: 90,
_POP_DELAY: [0.5, 3],
@@ -439,7 +440,7 @@ var Outside = {
this.setTitle();
if(!ignoreStores && Engine.activeModule === Outside && village.children().length > 1) {
$('#storesContainer').css({top: village.height() + 26 + 'px'});
$('#storesContainer').css({top: village.height() + 26 + Outside._STORES_OFFSET + 'px'});
}
},
@@ -611,5 +612,62 @@ var Outside = {
Outside.updateWorkersView();
Outside.updateVillageIncome();
};
},
scrollSidebar: function(direction, reset) {
if( typeof reset != "undefined" ){
$('#village').css('top', '0px');
$('#storesContainer').css('top', '224px');
Outside._STORES_OFFSET = 0;
return false;
}
var momentum = 10;
// If they hit up, we scroll everything down
if( direction == 'up' )
momentum = momentum * -1;
/* Let's stop scrolling if the top or bottom bound is in the viewport, based on direction */
if( direction == 'down' && inView( direction, $('#village') ) ){
console.log(direction);
console.log('IN VIEW');
return false;
}else if( direction == 'up' && inView( direction, $('#storesContainer') ) ){
console.log(direction);
console.log('IN VIEW');
return false;
}
scrollByX( $('#village'), momentum );
scrollByX( $('#storesContainer'), momentum );
Outside._STORES_OFFSET += momentum;
}
};
function inView(dir, elem){
var scTop = $('#main').offset().top;
var scBot = scTop + $('#main').height();
var elTop = elem.offset().top;
var elBot = elTop + elem.height();
if( dir == 'up' ){
// STOP MOVING IF BOTTOM OF ELEMENT IS VISIBLE IN SCREEN
return ( elBot < scBot );
}else if( dir == 'down' ){
return ( elTop > scTop );
}else{
return ( ( elBot <= scBot ) && ( elTop >= scTop ) );
}
}
function scrollByX(elem, x){
var elTop = parseInt( elem.css('top'), 10 );
elem.css( 'top', ( elTop + x ) + "px" );
}