//////////////////////////////////////////////////////////////////////////////////
Scene_SkillEquip.prototype = Object.create(Scene_MenuBase.prototype);
Scene_SkillEquip.prototype.constructor = Scene_SkillEquip;
Scene_SkillEquip.prototype.initialize = function() {
Scene_MenuBase.prototype.initialize.call(this);
};
Scene_SkillEquip.prototype.create = function() {
Scene_MenuBase.prototype.create.call(this); // super
this.createHelpWindow(); // 创建 HelpWindow
this.createStatusWindow(); // 创建 StatusWindow
this.createCPWindow(); // 创建 CPWindow
this.createSlotWindow(); // 创建 SlotWindow
this.createItemWindow(); // 创建 ItemWindow
this.refreshActor(); // 刷新角色(与 Window 无关)
};
//--------------------------------------------------------------------------------------
// 创建 HelpWindow
//--------------------------------------------------------------------------------------
Scene_SkillEquip.prototype.createStatusWindow = function() {
this._statusWindow = new Window_EquipStatus(0, this._helpWindow.height);
// StatusWindow 是 Window_EquipStatus 的实例(对象),创建时输入的参数是x,y坐标 x = 0 和 y = this._helpWindow.height
// 这里要注意,createHelpWindow() 方法应该是 Scene_MenuBase 自带的,去那里找 HelpWindow 的默认高度
// 看了一下 rpg_window.js 这个高度比较难算,由具体的内容决定
// Window_EquipStatus 对象的宽是固定的 w = 312,参见原脚本 rpg_window.js 2259 行
// Window_EquipStatus 对象的高请看 2263 行,由内容决定。后面的大部分窗口高度都是同样的由内容决定。
this.addWindow(this._statusWindow);
};
//--------------------------------------------------------------------------------------
// 创建 CPWindow
//--------------------------------------------------------------------------------------
Scene_SkillEquip.prototype.createCPWindow = function() {
var wx = this._statusWindow.width; // CPWindow 的 x = StatusWindow 的宽,也就是说 CPWindow 左边紧靠着 StatusWindow 的右边
var wy = this._helpWindow.height; // CPWindow 的 y = HelpWindow 的高,也就是说 CPWindow 上面紧靠着 HelpWindow 的下边
var ww = Graphics.boxWidth - this._statusWindow.width; // CPWindow 的 w = 画面大小 - StatusWindow 的宽,也就是说 CPWindow 右边紧靠着画面最右边
this._cpWindow = new Window_CP(wx, wy, ww); // 把 x y w 三个参数输入进去,注意到这里没有高度,高度是由 CPWindow 的内容决定
this.addWindow(this._cpWindow);
if (simpleMode) this._cpWindow.hide();
};
//--------------------------------------------------------------------------------------
// 创建 SlotWindow
//--------------------------------------------------------------------------------------
Scene_SkillEquip.prototype.createSlotWindow = function() {
var wx = this._statusWindow.width; // SlotWindow 的 x = StatusWindow 的宽,也就是说 SlotWindow 左边紧靠着 StatusWindow 的右边
var wy = this._helpWindow.height; // SlotWindow 的 y = HelpWindow 的高,也就是说 SlotWindow 上面紧靠着 HelpWindow 的下边
var ww = Graphics.boxWidth - this._statusWindow.width; // SlotWindow 的 w = 画面大小 - StatusWindow 的宽,也就是说 SlotWindow 右边紧靠着画面最右边
var wh = this._statusWindow.height; // SlotWindow 的 h = StatusWindow 的高度
if (!simpleMode) { // 在 非 simpleMode 的情况下,位置有所调整
wy += this._cpWindow.height;
wh -= this._cpWindow.height;
}
this._slotWindow = new Window_SlotCP(wx, wy, ww, wh);
this._slotWindow.setHelpWindow(this._helpWindow);
this._slotWindow.setStatusWindow(this._statusWindow);
this._slotWindow.setHandler('ok', this.onSlotOk.bind(this));
this._slotWindow.setHandler('cancel', this.popScene.bind(this));
this._slotWindow.setHandler('pagedown', this.nextActor.bind(this));
this._slotWindow.setHandler('pageup', this.previousActor.bind(this));
this.addWindow(this._slotWindow);
this._slotWindow.activate();
this._slotWindow.select(0);
};
//--------------------------------------------------------------------------------------
// 创建 ItemWindow
//--------------------------------------------------------------------------------------
Scene_SkillEquip.prototype.createItemWindow = function() {
var wx = 0; // x = 0,窗口靠左边
var wy = this._statusWindow.y + this._statusWindow.height; // y 坐标,窗口上边靠StatusWindow 的下边
var ww = Graphics.boxWidth; // w 宽度,窗口宽度等于画面宽度
var wh = Graphics.boxHeight - wy; // h 高度,窗口下边靠着画面下边
this._itemWindow = new Window_SkillCP(wx, wy, ww, wh);
this._itemWindow.setHelpWindow(this._helpWindow);
this._itemWindow.setStatusWindow(this._statusWindow);
this._itemWindow.setHandler('ok', this.onItemOk.bind(this));
this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));
this._slotWindow.setItemWindow(this._itemWindow);
this._itemWindow.setSlotWindow(this._slotWindow);
this.addWindow(this._itemWindow);
};