paradise-succubus-ac/www/js/plugins/kz_MenuStatus.js
2026-06-24 05:29:56 -05:00

284 lines
No EOL
10 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*:ja
* @plugindesc メニューステータスの自由設置 - v1.01
* @author 剣崎宗二
*
* @param Status Rows
* @desc キャラを縦に並べる数。
* @type number
* @min 1
* @default 4
*
* @param Status Cols
* @desc キャラを横に並べる数。
* @type number
* @min 1
* @default 1
*
* @param Status Window X
* @desc メニューステータスのX-1の場合はデフォルト動作)。
* @type number
* @min -1
* @default -1
*
* @param Status Window Y
* @desc メニューステータスのY-1の場合はデフォルト動作)。
* @type number
* @min -1
* @default -1
*
* @param Status Window Width
* @desc メニューステータスの横幅(-1の場合はデフォルト動作)。
* @type number
* @min -1
* @default 300
*
* @param Status Window Height
* @desc メニューステータスの縦幅(-1の場合はデフォルト動作)。
* @type number
* @min -1
* @default 600
*
* @param Status Window Padding
* @desc メニューウィンドウの外周白地のサイズ。
* @type number
* @min 0
* @default 18
*
* @param State X
* @desc ステートアイコンエリアの相対座標のX。
* @type number
* @default 0
*
* @param State Y
* @desc ステートアイコンエリアの相対座標のY。
* @type number
* @default 0
*
* @param State Width
* @desc ステートアイコンエリアの横幅。マイナス値の場合アイコンは表示されない。
* @type number
* @min -1
* @default 144
*
* @param Actor Icon X
* @desc アクターアイコンのX。Yとどちらかがマイナスだった場合、表示されない。
* @type number
* @min -1
* @default -1
*
* @param Actor Icon Y
* @desc アクターアイコンのY。Xとどちらかがマイナスだった場合、表示されない
* @type number
* @min -1
* @default -1
*
* @param Background PNG
* @desc メニューウィンドウの背景ファイル。Systemフォルダ内。この欄が空白でデフォルト状態。
* @type string
* @default
*
* @param Display Text
* @desc 表示するテキスト。,区切りで 内容,x,y,横幅,文字サイズ,文字色ID,アウトライン色ID,フォント名 。値がなければデフォルト。
* @type string[]
* @default ["a.name(),10,10,30","a.mhp,40,10,30,38,10,,10"]
*
* @param Display Picture
* @desc 表示するピクチャ、複数指定可でpicturesフォルダ内。,区切りで ピクチャ名,x,y 。
* @type string[]
* @default ["a.actor().meta.stand_picture,10,10,30"]
*
* @param Display Gauge
* @desc 表示するゲージ。,区切りで 変動値,最大値,x,y,ゲージ幅,実体色ID,背景色ID。
* @type string[]
* @default ["a.mp,a.mmp,10,40,70,20,21"]
*
* @help kz_MenuStatus.js
* ■使用する画像は全て任意の名前が使えます。
*  各パラメータにある配置箇所に注意して下さい。
* ■表示テキスト、及びゲージの現在値/最大値には a.hp や a.atk などの他、
*  変数やメモの値といった様々なデータが記載できます。
* ■Display TextとDisplay GaugeにあるIDとはwindow.pngのカラーパレット
*  インデックスです。変更する場合は0から数えて記載して下さい。 
* ■テキストに制御文字は使えませんので、アイコンなどを表示したい場合
*  画像としてDisplay Pictureに指定して下さい。
*
* ■フォントを変えた場合、一度の読み込みでは表示されない可能性があります。
*  他のフォントロード系プラグインなどでカバーする事を推奨します。
*
* ■読み取るメモについて(●.meta.○)
*  ●の箇所で場所を指定 a.actor()    =アクター
*              a.currentClass() =クラス   など
*  ○は値の名前なので分かりやすい名前にしてください。  
*
*
* 更新履歴
* v1.01 - 事前ロードを行うように改変
*/
(function () {
var parameters = PluginManager.parameters('kz_MenuStatus');
var _rows = Number(parameters['Status Rows'] || 4);
var _cols = Number(parameters['Status Cols'] || 1);
var _wX = Number(parameters['Status Window X'] || -1);
var _wY = Number(parameters['Status Window Y'] || -1);
var _wWidth = Number(parameters['Status Window Width'] || -1);
var _wHeight = Number(parameters['Status Window Height'] || -1);
var _wPadding = Number(parameters['Status Window Padding'] || 0);
var _wBackground = String(parameters['Background PNG'] || '');
var _faceX = Number(parameters['Actor Icon X'] || -1);
var _faceY = Number(parameters['Actor Icon Y'] || -1);
var _stateX = Number(parameters['State X'] || 0);
var _stateY = Number(parameters['State Y'] || 0);
var _stateWidth = Number(parameters['State Width'] || 144);
var _dTextArray = eval(parameters['Display Text']) || [];
var _dPicArray = eval(parameters['Display Picture']) || [];
var _dGaugeArray = eval(parameters['Display Gauge']) || [];
var kz_Scene_Menu_prototype_create = Scene_Menu.prototype.create;
Scene_Menu.prototype.create = function () {
kz_Scene_Menu_prototype_create.call(this);
_dPicArray.forEach(function (line) {
$gameParty.members().forEach(function (a) {
var dataArray = line.split(',');
var value = eval(dataArray[0]);
ImageManager.reservePicture(value);
}, this);
}, this);
};
var kz_Window_MenuStatus_prototype_initialize = Window_MenuStatus.prototype.initialize;
Window_MenuStatus.prototype.initialize = function (x, y) {
var fx = _wX >= 0 ? _wX : x;
var fy = _wY >= 0 ? _wY : y;
kz_Window_MenuStatus_prototype_initialize.call(this, fx, fy);
if (_wBackground != '') {
this.setBackgroundType(2);
this.createBackSprite();
}
};
Window_MenuStatus.prototype.createBackSprite = function () {
this._backSprite = new Sprite();
this._backSprite.bitmap = ImageManager.loadSystem(_wBackground);
this.addChildToBack(this._backSprite);
};
Window_MenuStatus.prototype.windowWidth = function () {
return _wWidth >= 0 ? _wWidth : Graphics.boxWidth - 240;
};
Window_MenuStatus.prototype.windowHeight = function () {
return _wHeight >= 0 ? _wHeight : Graphics.boxHeight;
};
Window_MenuStatus.prototype.maxPageRows = function () {
return _rows;
};
Window_MenuStatus.prototype.maxCols = function () {
return _cols;
};
Window_MenuStatus.prototype.itemHeight = function () {
return this.windowHeight() / this.maxPageRows();
};
Window_MenuStatus.prototype.drawItem = function (index) {
var a = $gameParty.members()[index];
if (!a) return;
this.drawStatusPicture(index);
if (_faceX >= 0 && _faceY >= 0) {
var rect = this.itemRect(index);
this.drawActorFace(a, rect.x + _faceX, rect.y + _faceY, Window_Base._faceWidth, Window_Base._faceHeight);
}
this.drawStatusGauge(index);
this.drawStatusState(index);
this.drawStatusText(index);
};
Window_MenuStatus.prototype.drawStatusText = function (index) {
var a = $gameParty.members()[index];
var rect = this.itemRect(index);
_dTextArray.forEach(function (line) {
var dataArray = line.split(',');
var value = eval(dataArray[0]);
var x = Number(dataArray[1]) + rect.x;
var y = Number(dataArray[2]) + rect.y;
var width = Math.min(rect.width - Number(dataArray[1]), Number(dataArray[3]));
var fontSize = Number(dataArray[4]);
var textColor = Number(dataArray[5]);
var outlineColor = Number(dataArray[6]);
var fontFace = dataArray[7];
var currentOutlineColor = this.contents.outlineColor;
if (fontFace) { this.contents.fontFace = fontFace; }
if (textColor >= 0) { this.changeTextColor(this.textColor(textColor)); }
if (outlineColor >= 0) { this.contents.outlineColor = this.textColor(outlineColor); }
if (fontSize >= 0) { this.contents.fontSize = fontSize; }
this.drawText(value, x, y, width);
this.resetFontSettings();
this.contents.outlineColor = currentOutlineColor;
}, this);
};
Window_MenuStatus.prototype.drawStatusPicture = function (index) {
var a = $gameParty.members()[index];
var rect = this.itemRect(index);
_dPicArray.forEach(function (line) {
var dataArray = line.split(',');
var value = eval(dataArray[0]);
var bitmap = ImageManager.loadPicture(value);
var x = Number(dataArray[1]) + rect.x;
var y = Number(dataArray[2]) + rect.y;
var pw = bitmap.width;
var ph = bitmap.height;
this.contents.blt(bitmap, 0, 0, pw, ph, x, y);
}, this);
};
Window_MenuStatus.prototype.drawStatusGauge = function (index) {
var a = $gameParty.members()[index];
var rect = this.itemRect(index);
_dGaugeArray.forEach(function (line) {
var dataArray = line.split(',');
var minValue = Number(eval(dataArray[0]));
var maxValue = Number(eval(dataArray[1]));
var x = Number(dataArray[2]) + rect.x;
var y = Number(dataArray[3]) + rect.y;
var width = Math.min(rect.width - Number(dataArray[2]), Number(dataArray[4]));
var rate = minValue / maxValue;
var color1 = this.textColor(Number(dataArray[5]));
var color2 = this.textColor(Number(dataArray[6]));
this.drawGauge(x, y, width, rate, color1, color2);
}, this);
};
Window_MenuStatus.prototype.drawStatusState = function (index) {
if (_stateWidth < 0) return;
var a = $gameParty.members()[index];
var rect = this.itemRect(index);
var x = _stateX + rect.x;
var y = _stateY + rect.y;
var width = Math.min(rect.width - _stateX, _stateWidth);
this.drawActorIcons(a, x, y, width);
};
Window_MenuStatus.prototype.standardPadding = function () {
return _wPadding;
};
})();