RPGツクールMVでは、ウィンドウ系クラスの初期化パラメータは統一されていませんでした。
基底クラスとなるWindow_SelectableやWindow_Baseクラスではx,y,width,heightの4つでしたが、それ以外はバラバラです。
もちろん、バラバラでも内部では上記の4引数による初期化を行っています。
RPGツクールMZではウィンドウ系クラスの初期位置を指定するパラメータがRectangle型1つに統一されました。
MV→MZでプラグインを移植する場合はここを書き換えればよいですが、コアがほとんど同じなので共通化したいところです。
試行錯誤の末、以下の方法で共通化できることがわかりました。
下記のコードはご自由にコピペしてお使いください。
/**
* @param {Window_Base} window_
* @param {Rectangle} rect
* @param {(window:Window_Base,rect:Rectangle)=>void} initFunction
*/
function window_initializeMVMZ(window_,rect,initFuncton){
if(Utils.RPGMAKER_NAME==="MZ"){
initFuncton.call(window_,rect);
return
}
if(Utils.RPGMAKER_NAME==="MV"){
initFuncton.call(window_,rect.x,rect.y,rect.width,rect.height);
return;
}
throw( new Error("Unknow RPG MAKER:"+Utils.RPGMAKER_NAME));
}
class Window_MySystem extends Window_Selectable{
/**
* @param {Rectangle} rect
*/
initialize(rect){
window_initializeMVMZ(this,rect,super.initialize);
}
}
なぜこれが動くのか説明するのは、複雑なので省略します。