// areAnscestorsUnknown.js
(function () {
/*global adventurejs A*/
var p = adventurejs.Tangible.prototype;
/**
* Checks to see if this asset or its containing parent(s)
* are unknown to player. Takes into account nesting doll
* situations and looks all the way up the chain.
* Useful for determining whether a player can "see"
* a nested object.
* @memberOf adventurejs.Tangible
* @method adventurejs.Tangible#areAnscestorsUnknown
* @param {int} nestlevel
* @returns {Boolean}
*/
p.areAnscestorsUnknown = function Tangible_areAnscestorsUnknown(nestlevel) {
if ("undefined" === typeof nestlevel) {
nestlevel = 0;
} else {
nestlevel++;
}
var player_knows_parent = true;
var parent = this.getPlaceAsset();
if (
parent &&
"undefined" !== typeof parent.is.known &&
"undefined" !== typeof parent.areAnscestorsUnknown
) {
player_knows_parent = parent.areAnscestorsUnknown(nestlevel);
}
// We pass this call up and then back down the anscestor
// chain, using nestlevel to keep track of our place in
// the chain – but descendants need the opposite of the response
// that we're going to send back to the original caller.
nestlevel--;
if (!this.is.known || !player_knows_parent) {
return -1 < nestlevel ? false : true;
} else {
return -1 < nestlevel ? true : false;
}
};
})();