当サイトの運営者です。ゲーム制作とプラグイン開発が好きで、コミュニティに貢献したいと考えています。
RPGツクールMZでゲームを制作中です。
※プログラマ・エンジニアではありません。
ウィンドウマネージャ - fuku_WindowManager.js

▼ウィンドウマネージャ(fuku様作) - fuku_WindowManager.js
https://plugin.fungamemake.com/archives/13711
ウィンドウを管理する機能を追加します。シーン遷移したりセーブ/ロードした場合の対応もある程度自動化されます。
ふりがな:うぃんどうまねーじゃ
機能概要: ウィンドウを管理する機能を追加します。シーン遷移したりセーブ/ロードした場合の対応もある程度自動化されます。
利用規約(ライセンス): MITライセンス
作者:fuku
作者サイト:https://x.com/fuku_fgs
ダウンロードページ:http://www5f.biglobe.ne.jp/~fuku-labo/library/etc/
ファイル名:fuku_WindowManager.js
プラグインのヘルプ:
/*:
* @plugindesc ウィンドウマネージャ v1.02
* @author fuku
*
* @param マップ状態のセーブ
* @desc マップウィンドウマネージャの状態をセーブファイルに含めるかを指定します。
* @default true
*
* @param バトル状態のセーブ
* @desc バトルウィンドウマネージャの状態をセーブファイルに含めるかを指定します。
* @default false
*
* @help マップ上、バトル上で追加のウィンドウの表示、内容の追跡などをやりやすくします。
* 適用すると、マップとバトルそれぞれでウィンドウを管理するマネージャが追加されます。
* このマネージャを介して作成したウィンドウはシーン遷移やウィンドウ設定のセーブ対応が
* 自動的に処理され、細かいことを気にせずに扱えるようになります。
*
* 通常のウィンドウでは表示位置と可視状態しか管理されませんが、
* メンバーとしてsetFukuWindowInfo関数(any info,WindowManager wndmgr,any state)を定義している場合、
* 一個の設定データ(info)をマネージャ管理にすることができます。
* また、メンバーとしてgetFukuWindowState関数()を定義している場合、
* シーン遷移やセーブ時などに呼び出され、状態データをマネージャ管理にすることができます。
* この状態データは復元時にsetFukuWindowInfo関数の第三引数として渡されます。
* 復元時以外はsetFukuWindowInfo関数の第三引数はnullかundefinedです。
* 設定データと状態データはセーブできるデータ型でなければいけません。
*
* ウィンドウマネージャの設定データはタイトル画面に戻ると失われます。
* セーブデータに保存している設定データや状態データはロード時に復元されます。
*
* 使い方:全てスクリプトベースで操作します。
*
* [マネージャ]の部分は以下に置き換えてください。
* マップウィンドウを操作する場合:MapWindowManager
* バトルウィンドウを操作する場合:BattleWindowManager
*
* ウィンドウを新しく作る/既存のウィンドウ設定を上書きする:
* [マネージャ].create(string 識別名,string クラス名,
* number 左上X座標,number 左上Y座標,
* number 横幅,number 縦幅,any 設定データ,boolean 可視状態)
*
* 「識別名」のウィンドウ設定を上書きします。
* 既に「識別名」のウィンドウがある場合、そのウィンドウは消去されます。
* 「クラス名」はウィンドウクラス名です。
* ウィンドウクラスとして指定できるのはWindow_Baseを継承しており、
* かつ引数列を変更していないクラスに限られます。
* 第三引数(左上X座標)以降はウィンドウクラスによっては省略することができ、
* その場合はウィンドウクラス側が定義するデフォルト値が適用されます。
* 注意:座標情報にデフォルト値を使用した場合、移動やリサイズを行うとエラーになる可能性があります。
* 例1:MapWindowManager.create('sample','FWindow_Text',100,100,600,200,'サンプルですn\c[1]制御文字も使えるよ!');
* 例2:MapWindowManager.create('sample2','FWindow_Command',0,300,400,200,
* [['選択肢1'],['選択肢2'],['選択不可',null,false]]);
* 例3:MapWindowManager.create('sample3','FWindow_SelectInfo',400,300,400,200,
* ['sample2','選択肢1だよn\c[1]制御文字も使えるよ!','選択肢2だよ','選べないんだよ']);
* 例4:MapWindowManager.create('sample4','FWindow_SelectInfo',0,500,800,100,
* [null,'目標がnullだと標準の選択肢を捕捉するよ','選択肢2だよ']);
*
*
* ウィンドウを移動する:
* [マネージャ].move(string 識別名,number 左上X座標,number 左上Y座標)
*
* 「識別名」のウィンドウを指定した座標に移動します。
* 例:MapWindowManager.move('sample',200,150);
*
*
* ウィンドウをリサイズする:
* [マネージャ].resize(string 識別名,number 左上X座標,number 左上Y座標,
* number 横幅,number 縦幅)
*
* 「識別名」のウィンドウを指定した座標に移動し、指定した大きさに変更します。
* 例:MapWindowManager.resize('sample',150,200,500,300);
*
*
* ウィンドウの設定データを変更する:
* [マネージャ].setInfo(string 識別名,any 設定データ)
*
* 「識別名」のウィンドウの設定データを変更します。
* ただしsetFukuWindowInfo関数を定義していないウィンドウクラスでは意味がありません。
* 例:MapWindowManager.setInfo('sample','新しい設定です');
*
*
* ウィンドウの表示状態を変更する:
* [マネージャ].visible(string 識別名,boolean 新しい可視状態)
*
* 「識別名」のウィンドウの可視状態を変更します。
* 例:MapWindowManager.visible('sample',true);
*
*
* ウィンドウを消去する:
* [マネージャ].erase(string 識別名)
*
* 「識別名」のウィンドウを消去します。
* 例:MapWindowManager.erase('sample');
*
*
* 全てのウィンドウを消去する:
* [マネージャ].reset()
*
* 管理下の全てのウィンドウを消去します。
* 例:MapWindowManager.reset();
*
*
* アクティブウィンドウ名を取得する:
* [マネージャ].getActiveWindowName()
*
* 管理下の現在アクティブ(操作可能)なウィンドウの識別名を返します。
* アクティブなウィンドウが複数ある場合はそのうちのどれか一つを返します。
* アクティブなウィンドウが存在しない場合はnullを返します。
* 例:MapWindowManager.getActiveWindowName();
*
*
* アクティブウィンドウを名前で設定する:
* [マネージャ].setActiveWindowName(string 識別名)
*
* 管理下の指定したウィンドウ一つをアクティブにし、
* 管理下のそれ以外のウィンドウ全てを非アクティブにします。
* 指定したウィンドウが存在しない場合は何もせずfalseを返します。
* 例:MapWindowManager.setActiveWindowName('sample');
*
*
* アクティブウィンドウを取得する(上級):
* [マネージャ].getActiveWindow()
*
* 管理下の現在アクティブ(操作可能)なウィンドウオブジェクトを返します。
* アクティブなウィンドウが複数ある場合はそのうちのどれか一つを返します。
* アクティブなウィンドウが存在しない場合はnullを返します。
* 例:MapWindowManager.getActiveWindow();
*
*
* アクティブウィンドウをオブジェクトで設定する(上級):
* [マネージャ].setActiveWindow(Window_Base ウィンドウ)
*
* 指定したウィンドウ一つをアクティブにし、
* 管理下のそれ以外のウィンドウ全てを非アクティブにします。
* 指定したウィンドウが管理下のウィンドウではない場合、
* 指定したウィンドウをアクティブにし、管理下のウィンドウ全てを非アクティブにします。
* 例:MapWindowManager.setActiveWindow(wndobj);
*
*
* ウィンドウオブジェクトを取得する(上級):
* [マネージャ].getWindow(string 識別名)
*
* 「識別名」のウィンドウオブジェクトを返します。
* 該当するウィンドウオブジェクトがない場合(アクティブシーンでない場合も含む)、
* undefinedを返します。
*
*
* 初期ウィンドウ設定を行う(上級、別プラグインとしての記述を想定):
* マネージャのresetManager関数を[直接(prototypeではない)]フックしてください。
* 例:(かならずローカル名前空間(即時関数内)で行ってください)
* var bk_resetManager=[マネージャ].resetManager;
* [マネージャ].resetManager=function(){
* bk_resetManager.call(this);
* //ここでthis.create(...)を行うことで新規ゲーム時や
* //セーブされないマネージャの構成を行うことができます。
* };
* 上記の解説で分からない場合はこの設定を行わない方が無難です。
*
*
* 選択肢ウィンドウを表示したままいろいろ行う(上級):
* 選択肢ウィンドウは独立して表示できるので表示したまま他の動作ができます。
* 主人公が歩ける状況だと表示したまま歩きまわったり他のイベントを開始したりできます。
* このプラグイン用のFWindow_Command選択肢ウィンドウクラスはイベントから操作するための
* 機能がいくつか追加されています。これはgetWindowでウィンドウオブジェクトを取得して操作してください。
* setCancelEnable(boolean cancel_enable):キャンセルキーの有効無効を設定します。初期状態は有効です。
* okIndex():決定した選択肢の位置index(0以上)、またはキャンセル(-1)、または選択中(-2)を返します。
* isSelecting():選択中はtrueを返します。ウェイト1Fと組み合わせて選択完了待ちに使えます。
* startSelect():選択処理を開始します。カーソルが有効になり操作可能になります。
* 呼び出さなくてもウィンドウを作成した時も同等の処理が行われます。
* cancelSelect():選択を中止し、キャンセルしたことにします。カーソルが無効になり操作不能になります。
* 選択肢の時間制限や他のイベント要因で選択を中止させたい時に使えます。
*
*/