divagate/www/js/plugins/TMSaveDataLabel.js
2023-08-31 14:59:34 -05:00

207 lines
7.8 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

//=============================================================================
// TMPlugin - セーブデータラベル
// バージョン: 2.0.0
// 最終更新日: 2016/08/12
// 配布元 : http://hikimoki.sakura.ne.jp/
//-----------------------------------------------------------------------------
// Copyright (c) 2016 tomoaky
// Released under the MIT license.
// http://opensource.org/licenses/mit-license.php
//=============================================================================
/*:
* @plugindesc セーブファイルウィンドウに変数の値を表示します。
*
* @author tomoaky (http://hikimoki.sakura.ne.jp/)
*
* @param labelAName
* @desc ラベルAの名前
* 初期値: ラベルA
* @default ラベルA
*
* @param labelAId
* @desc ラベルAのゲーム変数番号
* 初期値: 10 0 で非表示 / 1 以上で表示)
* @default 10
*
* @param labelAMax
* @desc ラベルAの最大値
* 初期値: 9999
* @default 9999
*
* @param labelAFooter
* @desc ラベルAのフッターテキスト
* 初期値:
* @default
*
* @param labelBName
* @desc ラベルBの名前
* 初期値: ラベルB
* @default ラベルB
*
* @param labelBId
* @desc ラベルBのゲーム変数番号
* 初期値: 0 0 で非表示 / 1 以上で表示)
* @default 0
*
* @param labelBMax
* @desc ラベルBの最大値
* 初期値: 9999
* @default 9999
*
* @param labelBFooter
* @desc ラベルBのフッターテキスト
* 初期値:
* @default
*
* @param labelNameWidth
* @desc ラベル名の表示幅
* 初期値: 160
* @default 160
*
* @param labelValueWidth
* @desc ラベル値の表示幅
* 初期値: 96
* @default 96
*
* @param labelNameColorId
* @desc ラベル名の文字色番号
* 初期値: 16
* @default 16
*
* @param labelValueColorId
* @desc ラベル値の文字色番号
* 初期値: 0
* @default 0
*
* @param labelMaxColorId
* @desc ラベル値が最大のときの文字色番号
* 初期値: 2
* @default 2
*
* @param labelFooterColorId
* @desc フッターの文字色番号
* 初期値: 0
* @default 0
*
* @help
* 使い方:
*
* このプラグインを導入するとセーブファイルウィンドウの右上にゲーム変数の
* 値(以下ラベル)を最大で2つまで表示することができるようになります。
*
* プラグイン導入前に作成されたセーブデータは、再度セーブが実行されるまで
* ラベルは表示されません。
*
* プラグインコマンドはありません。
*
* このプラグインは RPGツクールMV Version 1.3.0 で動作確認をしています。
*
*
* プラグインパラメータ補足:
*
* labelAFooter / labelBFooter
* ラベル値の後ろに表示する文字列を設定します。
* 『1234 点』、『12 日目』のような表示にするための機能です、値との間の
* スペースは半角スペースなどで調整してください。
*
* labelAMax / labelBMax
* ゲーム変数の値がこれらの値以上だった場合、ラベルに表示される値の
* 文字色番号が labelValueColorId から labelMaxColorId に変化します。
* また、ゲーム変数の値が最大値よりも大きい場合は、最大値を表示します。
* 0 を設定すると上記機能が無効になります。
*
* labelNameColorId
* labelValueColorId
* labelMaxColorId
* labelFooterColorId
* ラベルの各部分ごとの文字色番号を設定します。
* 番号はイベントコマンド『文章の表示』などで使う制御文字 \C[n] の
* n の部分と同じものになります。
*/
var Imported = Imported || {};
Imported.TMSaveDataLabel = true;
var TMPlugin = TMPlugin || {};
TMPlugin.SaveDataLabel = {};
TMPlugin.SaveDataLabel.Parameters = PluginManager.parameters('TMSaveDataLabel');
TMPlugin.SaveDataLabel.LabelAName = TMPlugin.SaveDataLabel.Parameters['labelAName'];
TMPlugin.SaveDataLabel.LabelAId = +(TMPlugin.SaveDataLabel.Parameters['labelAId'] || 10);
TMPlugin.SaveDataLabel.LabelAMax = +(TMPlugin.SaveDataLabel.Parameters['labelAMax'] || 9999);
TMPlugin.SaveDataLabel.LabelAFooter = TMPlugin.SaveDataLabel.Parameters['labelAFooter'];
TMPlugin.SaveDataLabel.LabelBName = TMPlugin.SaveDataLabel.Parameters['labelBName'];
TMPlugin.SaveDataLabel.LabelBId = +(TMPlugin.SaveDataLabel.Parameters['labelBId'] || 0);
TMPlugin.SaveDataLabel.LabelBMax = +(TMPlugin.SaveDataLabel.Parameters['labelBMax'] || 9999);
TMPlugin.SaveDataLabel.LabelBFooter = TMPlugin.SaveDataLabel.Parameters['labelBFooter'];
TMPlugin.SaveDataLabel.NameWidth = +(TMPlugin.SaveDataLabel.Parameters['labelNameWidth'] || 160);
TMPlugin.SaveDataLabel.ValueWidth = +(TMPlugin.SaveDataLabel.Parameters['labelValueWidth'] || 96);
TMPlugin.SaveDataLabel.NameColorId = +(TMPlugin.SaveDataLabel.Parameters['labelNameColorId'] || 16);
TMPlugin.SaveDataLabel.ValueColorId = +(TMPlugin.SaveDataLabel.Parameters['labelValueColorId'] || 0);
TMPlugin.SaveDataLabel.MaxColorId = +(TMPlugin.SaveDataLabel.Parameters['labelMaxColorId'] || 2);
TMPlugin.SaveDataLabel.FooterColorId = +(TMPlugin.SaveDataLabel.Parameters['labelFooterColorId'] || 0);
(function() {
//-----------------------------------------------------------------------------
// DataManager
//
var _DataManager_makeSavefileInfo = DataManager.makeSavefileInfo;
DataManager.makeSavefileInfo = function() {
var info = _DataManager_makeSavefileInfo.call(this);
info.labelA = TMPlugin.SaveDataLabel.LabelAId ? $gameVariables.value(TMPlugin.SaveDataLabel.LabelAId) : 0;
info.labelB = TMPlugin.SaveDataLabel.LabelBId ? $gameVariables.value(TMPlugin.SaveDataLabel.LabelBId) : 0;
return info;
};
//-----------------------------------------------------------------------------
// Window_SavefileList
//
var _Window_SavefileList_drawItem = Window_SavefileList.prototype.drawItem;
Window_SavefileList.prototype.drawItem = function(index) {
_Window_SavefileList_drawItem.call(this, index);
var id = index + 1;
var valid = DataManager.isThisGameFile(id);
var info = DataManager.loadSavefileInfo(id)
if (info && valid) {
var rect = this.itemRectForText(index);
var x = rect.width + this.textPadding();
if (TMPlugin.SaveDataLabel.LabelAId && info.labelA != null) {
var label = {name: TMPlugin.SaveDataLabel.LabelAName, value: info.labelA,
max: TMPlugin.SaveDataLabel.LabelAMax,
footer: TMPlugin.SaveDataLabel.LabelAFooter};
this.drawSaveDataLabel(x, rect.y, label);
}
if (TMPlugin.SaveDataLabel.LabelBId && info.labelB != null) {
var label = {name: TMPlugin.SaveDataLabel.LabelBName, value: info.labelB,
max: TMPlugin.SaveDataLabel.LabelBMax,
footer: TMPlugin.SaveDataLabel.LabelBFooter};
this.drawSaveDataLabel(x, rect.y + this.lineHeight(), label);
}
}
};
Window_SavefileList.prototype.drawSaveDataLabel = function(x, y, label) {
if (label.footer) {
var footerWidth = this.textWidth(label.footer);
x -= footerWidth;
this.changeTextColor(this.textColor(TMPlugin.SaveDataLabel.FooterColorId));
this.drawText(label.footer, x, y, footerWidth);
}
x -= TMPlugin.SaveDataLabel.ValueWidth;
this.changeTextColor(this.textColor(TMPlugin.SaveDataLabel.ValueColorId));
if (label.max && label.value >= label.max) {
label.value = label.max;
this.changeTextColor(this.textColor(TMPlugin.SaveDataLabel.MaxColorId));
}
this.drawText(label.value, x, y, TMPlugin.SaveDataLabel.ValueWidth, 'right');
if (label.name) {
x -= TMPlugin.SaveDataLabel.NameWidth;
this.changeTextColor(this.textColor(TMPlugin.SaveDataLabel.NameColorId));
this.drawText(label.name, x, y, TMPlugin.SaveDataLabel.NameWidth);
}
};
})();