Skip to content

Commit

Permalink
Move movement functions to Engine. Create scrollable Path sidebar
Browse files Browse the repository at this point in the history
  • Loading branch information
anubisthejackle committed Feb 7, 2015
1 parent 3d00ed3 commit 2d3daa5
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 37 deletions.
42 changes: 36 additions & 6 deletions script/engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -593,14 +593,14 @@
switch(e.which) {
case 38: // Up
case 87:
if(Engine.activeModule == Outside){
if(Engine.activeModule == Outside || Engine.activeModule == Path)
Engine.activeModule.scrollSidebar('up');
}

Engine.log('up');
break;
case 40: // Down
case 83:
if(Engine.activeModule == Outside){
if(Engine.activeModule == Outside || Engine.activeModule == Path){
Engine.activeModule.scrollSidebar('down');
}
Engine.log('down');
Expand All @@ -609,9 +609,10 @@
case 65:
if(Engine.activeModule == Ship && Path.tab)
Engine.travelTo(Path);
else if(Engine.activeModule == Path && Outside.tab)
else if(Engine.activeModule == Path && Outside.tab){
Engine.activeModule.scrollSidebar('left', true);
Engine.travelTo(Outside);
else if(Engine.activeModule == Outside && Room.tab){
}else if(Engine.activeModule == Outside && Room.tab){
Engine.activeModule.scrollSidebar('left', true);
Engine.travelTo(Room);
}
Expand All @@ -624,8 +625,10 @@
else if(Engine.activeModule == Outside && Path.tab){
Engine.activeModule.scrollSidebar('right', true);
Engine.travelTo(Path);
}else if(Engine.activeModule == Path && Ship.tab)
}else if(Engine.activeModule == Path && Ship.tab){
Engine.activeModule.scrollSidebar('right', true);
Engine.travelTo(Ship);
}
Engine.log('right');
break;
}
Expand Down Expand Up @@ -703,6 +706,33 @@

})();

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" );

}


//create jQuery Callbacks() to handle object events
$.Dispatch = function( id ) {
var callbacks, topic = id && Engine.topics[ id ];
Expand Down
33 changes: 4 additions & 29 deletions script/outside.js
Original file line number Diff line number Diff line change
Expand Up @@ -631,13 +631,13 @@ var Outside = {

/* 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 );
Expand All @@ -646,28 +646,3 @@ var Outside = {

}
};
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" );

}
34 changes: 32 additions & 2 deletions script/path.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var Path = {

DEFAULT_BAG_SPACE: 10,

_STORES_OFFSET: 0,
// Everything not in this list weighs 1
Weight: {
'bone spear': 2,
Expand Down Expand Up @@ -116,7 +116,7 @@ var Path = {
}

if(!ignoreStores && Engine.activeModule === Path) {
$('#storesContainer').css({top: perks.height() + 26 + 'px'});
$('#storesContainer').css({top: perks.height() + 26 + Path._STORES_OFFSET + 'px'});
}
}
},
Expand Down Expand Up @@ -313,5 +313,35 @@ var Path = {
if(e.category == 'character' && e.stateName.indexOf('character.perks') == 0 && Engine.activeModule == Path){
Path.updatePerks();
};
},

scrollSidebar: function(direction, reset){

if( typeof reset != "undefined" ){
$('#perks').css('top', '0px');
$('#storesContainer').css('top', '206px');
Path._STORES_OFFSET = 0;
return;
}

var momentum = 10;

if( direction == 'up' )
momentum = momentum * -1

if( direction == 'down' && inView( direction, $('#perks') ) ){

return false;

}else if( direction == 'up' && inView( direction, $('#storesContainer') ) ){

return false;

}

scrollByX( $('#perks'), momentum );
scrollByX( $('#storesContainer'), momentum );
Path._STORES_OFFSET += momentum;

}
};

0 comments on commit 2d3daa5

Please sign in to comment.