Pre-release
Adventure.js Docs Downloads
Score: 0 Moves: 0
// areAnscestorsClosed.js
(function() {
	/*global adventurejs A*/ 
  "use strict";
  var p = adventurejs.Tangible.prototype;	
  /**
   * Checks to see if this asset's containing parent(s) is closed. 
   * Takes into account nesting doll 
   * situations and looks all the way up the chain.
   * Useful for determining whether a player can interact
   * with a nested object.
   * @memberOf adventurejs.Tangible
	 * @method adventurejs.Tangible#areAnscestorsClosed
   * @returns {Boolean}
   */
   p.areAnscestorsClosed = function Tangible_areAnscestorsClosed() 
   {
     //console.warn( 'areAnscestorsClosed this',this.id);
     var parent = this.getPlaceAsset();
     //console.warn( '- areAnscestorsClosed parent',parent.id);
     var parentClosed = false;
     var anscestorsClosed = false;
     if( parent
     && "undefined" !== typeof parent.is.closed
     && "undefined" !== typeof parent.areAnscestorsClosed ) 
     {
       parentClosed = ( parent.isDOV('close') && parent.is.closed );
       //console.warn('--',parent.id,'.parentClosed',parentClosed );
       anscestorsClosed = parent.areAnscestorsClosed();
       //console.warn('--',parent.id,'.anscestorsClosed',anscestorsClosed );
     }
     //console.warn('-',parent.id,'says parentClosed',parentClosed,'anscestorsClosed',anscestorsClosed);
     if (parentClosed || anscestorsClosed) 
     {
       return true;
     }
     return false;
    } 
}());