//-----------------------------------------------------------------------------
// Scene_Item
//
// The scene class of the item screen.
/**
* The scene class of the item screen.
*
* @class
* @extends Scene_ItemBase
*/
function Scene_Item() {
this.initialize(...arguments);
}
Scene_Item.prototype = Object.create(Scene_ItemBase.prototype);
Scene_Item.prototype.constructor = Scene_Item;
Scene_Item.prototype.initialize = function() {
Scene_ItemBase.prototype.initialize.call(this);
};
Scene_Item.prototype.create = function() {
Scene_ItemBase.prototype.create.call(this);
this.createHelpWindow();
this.createCategoryWindow();
this.createItemWindow();
this.createActorWindow();
};
/**
* Creates the category window
*/
Scene_Item.prototype.createCategoryWindow = function() {
const rect = this.categoryWindowRect();
this._categoryWindow = new Window_ItemCategory(rect);
this._categoryWindow.setHelpWindow(this._helpWindow);
this._categoryWindow.setHandler("ok", this.onCategoryOk.bind(this));
this._categoryWindow.setHandler("cancel", this.popScene.bind(this));
this.addWindow(this._categoryWindow);
};
/**
* Gets the rectangle that represents the category window's x/y/width/height
*
* @return {Rectangle} The rectangle that represents the category window
*/
Scene_Item.prototype.categoryWindowRect = function() {
const wx = 0;
const wy = this.mainAreaTop();
const ww = Graphics.boxWidth;
const wh = this.calcWindowHeight(1, true);
return new Rectangle(wx, wy, ww, wh);
};
/**
* Creates the item window
*/
Scene_Item.prototype.createItemWindow = function() {
const rect = this.itemWindowRect();
this._itemWindow = new Window_ItemList(rect);
this._itemWindow.setHelpWindow(this._helpWindow);
this._itemWindow.setHandler("ok", this.onItemOk.bind(this));
this._itemWindow.setHandler("cancel", this.onItemCancel.bind(this));
this.addWindow(this._itemWindow);
this._categoryWindow.setItemWindow(this._itemWindow);
if (!this._categoryWindow.needsSelection()) {
this._itemWindow.y -= this._categoryWindow.height;
this._itemWindow.height += this._categoryWindow.height;
this._itemWindow.createContents();
this._categoryWindow.update();
this._categoryWindow.hide();
this._categoryWindow.deactivate();
this.onCategoryOk();
}
};
/**
* Gets the rectangle that represents the item window's x/y/width/height
*
* @return {Rectangle} The rectangle that represents the item window
*/
Scene_Item.prototype.itemWindowRect = function() {
const wx = 0;
const wy = this._categoryWindow.y + this._categoryWindow.height;
const ww = Graphics.boxWidth;
const wh = this.mainAreaBottom() - wy;
return new Rectangle(wx, wy, ww, wh);
};
/**
* Gets the user of the item
*
* @return {Game_Actor} The actor that will use the item
*/
Scene_Item.prototype.user = function() {
const members = $gameParty.movableMembers();
const bestPha = Math.max(...members.map(member => member.pha));
return members.find(member => member.pha === bestPha);
};
/**
* Handling when ok input on the category window
*/
Scene_Item.prototype.onCategoryOk = function() {
this._itemWindow.activate();
this._itemWindow.selectLast();
};
/**
* Handling when ok input on the item window
*/
Scene_Item.prototype.onItemOk = function() {
$gameParty.setLastItem(this.item());
this.determineItem();
};
/**
* Handling when cancel input on the item window
*/
Scene_Item.prototype.onItemCancel = function() {
if (this._categoryWindow.needsSelection()) {
this._itemWindow.deselect();
this._categoryWindow.activate();
} else {
this.popScene();
}
};
/**
* Plays the item's SE
*/
Scene_Item.prototype.playSeForItem = function() {
SoundManager.playUseItem();
};
Scene_Item.prototype.useItem = function() {
Scene_ItemBase.prototype.useItem.call(this);
this._itemWindow.redrawCurrentItem();
};