// getListableContents.js
(function () {
/* global adventurejs A */
var p = adventurejs.Tangible.prototype;
/**
* Get an array of assets within this asset that are listable in
* this asset's description, for example when player examines this.
* @memberOf adventurejs.Tangible
* @method adventurejs.Tangible#getListableContents
* @returns {Array}
*/
p.getListableContents = function Tangible_getListableContents() {
this.game.log(
"L1147",
"log",
"high",
`[getListableContents.js] ${this.id}.getListableContents()`,
"Tangible"
);
var masterlist = [];
for (var aspect in this.aspects) {
if (!this.hasAspectAt(aspect)) {
continue;
}
if (
this.aspects[aspect].list_contents_in_room &&
this.aspects[aspect].contents.length > 0
) {
// console.warn(`getListableContents > list_contents_in_room ${this.id}`);
if ("in" === aspect && this.is.closed && this.appearance.opacity >= 1) {
continue;
}
var list = this.aspects[aspect].contents;
for (var i = 0; i < list.length; i++) {
const asset = this.game.getAsset(list[i]);
if (asset.is.listed) {
masterlist.push(asset);
// recurse
masterlist = masterlist.concat(asset.getListableContents());
}
}
}
}
// console.warn(`getListableContents > ${this.id} masterlist:`, masterlist);
return masterlist;
};
})();