//-----------------------------------------------------------------------------
// Scene_Menu
//
// The scene class of the menu screen.
/**
* The scene class of the menu screen.
*
* @class
* @extends Scene_MenuBase
*/
function Scene_Menu() {
this.initialize(...arguments);
}
Scene_Menu.prototype = Object.create(Scene_MenuBase.prototype);
Scene_Menu.prototype.constructor = Scene_Menu;
Scene_Menu.prototype.initialize = function() {
Scene_MenuBase.prototype.initialize.call(this);
};
/**
* Gets the height needed for the help area
*
* @return {number} Number of pixels tall the help area is
* @override
*/
Scene_Menu.prototype.helpAreaHeight = function() {
return 0;
};
Scene_Menu.prototype.create = function() {
Scene_MenuBase.prototype.create.call(this);
this.createCommandWindow();
this.createGoldWindow();
this.createStatusWindow();
};
Scene_Menu.prototype.start = function() {
Scene_MenuBase.prototype.start.call(this);
this._statusWindow.refresh();
};
/**
* Creates the menu command window
*/
Scene_Menu.prototype.createCommandWindow = function() {
const rect = this.commandWindowRect();
const commandWindow = new Window_MenuCommand(rect);
commandWindow.setHandler("item", this.commandItem.bind(this));
commandWindow.setHandler("skill", this.commandPersonal.bind(this));
commandWindow.setHandler("equip", this.commandPersonal.bind(this));
commandWindow.setHandler("status", this.commandPersonal.bind(this));
commandWindow.setHandler("formation", this.commandFormation.bind(this));
commandWindow.setHandler("options", this.commandOptions.bind(this));
commandWindow.setHandler("save", this.commandSave.bind(this));
commandWindow.setHandler("gameEnd", this.commandGameEnd.bind(this));
commandWindow.setHandler("cancel", this.popScene.bind(this));
this.addWindow(commandWindow);
this._commandWindow = commandWindow;
};
/**
* Gets the rectangle that represents the menu command window x/y/width/height
*
* @return {Rectangle} Rectangle that represents the command window
*/
Scene_Menu.prototype.commandWindowRect = function() {
const ww = this.mainCommandWidth();
const wh = this.mainAreaHeight() - this.goldWindowRect().height;
const wx = this.isRightInputMode() ? Graphics.boxWidth - ww : 0;
const wy = this.mainAreaTop();
return new Rectangle(wx, wy, ww, wh);
};
/**
* Creates the gold window
*/
Scene_Menu.prototype.createGoldWindow = function() {
const rect = this.goldWindowRect();
this._goldWindow = new Window_Gold(rect);
this.addWindow(this._goldWindow);
};
/**
* Gets the rectangle that represents the gold window x/y/width/height
*
* @return {Rectangle} Rectangle that represents the gold window
*/
Scene_Menu.prototype.goldWindowRect = function() {
const ww = this.mainCommandWidth();
const wh = this.calcWindowHeight(1, true);
const wx = this.isRightInputMode() ? Graphics.boxWidth - ww : 0;
const wy = this.mainAreaBottom() - wh;
return new Rectangle(wx, wy, ww, wh);
};
/**
* Creates the status window
*/
Scene_Menu.prototype.createStatusWindow = function() {
const rect = this.statusWindowRect();
this._statusWindow = new Window_MenuStatus(rect);
this.addWindow(this._statusWindow);
};
/**
* Gets the rectangle that represents the status window x/y/width/height
*
* @return {Rectangle} Rectangle that represents the status window
*/
Scene_Menu.prototype.statusWindowRect = function() {
const ww = Graphics.boxWidth - this.mainCommandWidth();
const wh = this.mainAreaHeight();
const wx = this.isRightInputMode() ? 0 : Graphics.boxWidth - ww;
const wy = this.mainAreaTop();
return new Rectangle(wx, wy, ww, wh);
};
/**
* Handling for when the Item command is selected
*/
Scene_Menu.prototype.commandItem = function() {
SceneManager.push(Scene_Item);
};
/**
* Handling for when a oersonal command is chosen
*/
Scene_Menu.prototype.commandPersonal = function() {
this._statusWindow.setFormationMode(false);
this._statusWindow.selectLast();
this._statusWindow.activate();
this._statusWindow.setHandler("ok", this.onPersonalOk.bind(this));
this._statusWindow.setHandler("cancel", this.onPersonalCancel.bind(this));
};
/**
* Handling for when the Formation command is selected
*/
Scene_Menu.prototype.commandFormation = function() {
this._statusWindow.setFormationMode(true);
this._statusWindow.selectLast();
this._statusWindow.activate();
this._statusWindow.setHandler("ok", this.onFormationOk.bind(this));
this._statusWindow.setHandler("cancel", this.onFormationCancel.bind(this));
};
/**
* Handling for when the Options command is selected
*/
Scene_Menu.prototype.commandOptions = function() {
SceneManager.push(Scene_Options);
};
/**
* Handling for when the Save command is selected
*/
Scene_Menu.prototype.commandSave = function() {
SceneManager.push(Scene_Save);
};
/**
* Handling for when the Game End command is selected
*/
Scene_Menu.prototype.commandGameEnd = function() {
SceneManager.push(Scene_GameEnd);
};
/**
* Handling for when an actor is chosen for a personal command
*/
Scene_Menu.prototype.onPersonalOk = function() {
switch (this._commandWindow.currentSymbol()) {
case "skill":
SceneManager.push(Scene_Skill);
break;
case "equip":
SceneManager.push(Scene_Equip);
break;
case "status":
SceneManager.push(Scene_Status);
break;
}
};
/**
* Handling for when the player backs out of the actor select flow
*/
Scene_Menu.prototype.onPersonalCancel = function() {
this._statusWindow.deselect();
this._commandWindow.activate();
};
/**
* Handling for when the Formation is chosen
*/
Scene_Menu.prototype.onFormationOk = function() {
const index = this._statusWindow.index();
const pendingIndex = this._statusWindow.pendingIndex();
if (pendingIndex >= 0) {
$gameParty.swapOrder(index, pendingIndex);
this._statusWindow.setPendingIndex(-1);
this._statusWindow.redrawItem(index);
} else {
this._statusWindow.setPendingIndex(index);
}
this._statusWindow.activate();
};
/**
* Handling for when the player cancels out of the Formation command
*/
Scene_Menu.prototype.onFormationCancel = function() {
if (this._statusWindow.pendingIndex() >= 0) {
this._statusWindow.setPendingIndex(-1);
this._statusWindow.activate();
} else {
this._statusWindow.deselect();
this._commandWindow.activate();
}
};