383 lines
13 KiB
JavaScript
383 lines
13 KiB
JavaScript
//=============================================================================
|
||
// TMPlugin - メニューラベル
|
||
// バージョン: 1.1.1
|
||
// 最終更新日: 2017/02/07
|
||
// 配布元 : 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 labelCName
|
||
* @desc ラベルCの名前
|
||
* 初期値: ラベルC
|
||
* @default ラベルC
|
||
*
|
||
* @param labelCId
|
||
* @desc ラベルCのゲーム変数番号
|
||
* 初期値: 0( 0 で非表示 / 1 以上で表示)
|
||
* @default 0
|
||
*
|
||
* @param labelCMax
|
||
* @desc ラベルCの最大値
|
||
* 初期値: 9999
|
||
* @default 9999
|
||
*
|
||
* @param labelCFooter
|
||
* @desc ラベルCのフッターテキスト
|
||
* 初期値:
|
||
* @default
|
||
*
|
||
* @param labelDName
|
||
* @desc ラベルDの名前
|
||
* 初期値: ラベルD
|
||
* @default ラベルD
|
||
*
|
||
* @param labelDId
|
||
* @desc ラベルDのゲーム変数番号
|
||
* 初期値: 0( 0 で非表示 / 1 以上で表示)
|
||
* @default 0
|
||
*
|
||
* @param labelDMax
|
||
* @desc ラベルDの最大値
|
||
* 初期値: 9999
|
||
* @default 9999
|
||
*
|
||
* @param labelDFooter
|
||
* @desc ラベルDのフッターテキスト
|
||
* 初期値:
|
||
* @default
|
||
*
|
||
* @param labelNameWidth
|
||
* @desc ラベル名の表示幅
|
||
* 初期値: 128
|
||
* @default 128
|
||
*
|
||
* @param labelValueWidth
|
||
* @desc ラベル値の表示幅
|
||
* 初期値: 72
|
||
* @default 72
|
||
*
|
||
* @param labelNameColorId
|
||
* @desc ラベル名の文字色番号
|
||
* 初期値: 16
|
||
* @default 16
|
||
*
|
||
* @param labelValueColorId
|
||
* @desc ラベル値の文字色番号
|
||
* 初期値: 0
|
||
* @default 0
|
||
*
|
||
* @param labelMaxColorId
|
||
* @desc ラベル値が最大のときの文字色番号
|
||
* 初期値: 2
|
||
* @default 2
|
||
*
|
||
* @param labelFooterColorId
|
||
* @desc フッターの文字色番号
|
||
* 初期値: 0
|
||
* @default 0
|
||
*
|
||
* @param footerSpace
|
||
* @desc フッターとラベル値の間隔
|
||
* 初期値: 0
|
||
* @default 0
|
||
*
|
||
* @param reverseMenuWindow
|
||
* @desc メニューシーンのウィンドウ配置を左右反転
|
||
* 初期値: 0 ( 0 = 無効 / 1 = 有効)
|
||
* @default 0
|
||
*
|
||
* @param menuTextAlign
|
||
* @desc メニューコマンド項目の描画位置
|
||
* 初期値: left ( left / center / right)
|
||
* @default left
|
||
*
|
||
* @help
|
||
* TMPlugin - メニューラベル ver1.1.1
|
||
|
||
* 使い方:
|
||
*
|
||
* このプラグインを導入するとメインメニューの左下にゲーム変数の
|
||
* 値(以下ラベル)を最大で 4 つまで表示することができるようになります。
|
||
*
|
||
* このプラグインは RPGツクールMV Version 1.3.4 で動作確認をしています。
|
||
*
|
||
*
|
||
* プラグインコマンド:
|
||
*
|
||
* stopMenuLabel
|
||
* メニューラベルを無効にします。この設定はセーブデータにも記録され、
|
||
* startMenuLabel コマンドが実行されるまでラベルが表示されなくなります。
|
||
*
|
||
* startMenuLabel
|
||
* 無効になっているメニューラベルを有効にします。
|
||
* ゲーム開始時の状態ではメニューラベルは有効になっています。
|
||
*
|
||
*
|
||
* プラグインパラメータ補足:
|
||
*
|
||
* labelAId ~ labelDId
|
||
* この値が 1 以上のときは変数の値が表示され、それ以外の場合は
|
||
* 以下のようなルールで表示される値が変化します。
|
||
* 0 … ラベルの無効化(何も表示しない)
|
||
* -1 … 歩数
|
||
* -2 … セーブ回数
|
||
* -3 … 戦闘回数
|
||
* -4 … 勝利回数
|
||
* -5 … 敗北回数
|
||
*
|
||
* labelAMax ~ labelDMax
|
||
* ゲーム変数の値がこれらの値以上だった場合、ラベルに表示される値の
|
||
* 文字色番号が labelValueColorId から labelMaxColorId に変化します。
|
||
* また、ゲーム変数の値が最大値よりも大きい場合は、最大値を表示します。
|
||
* 0 を設定すると上記機能が無効になります。
|
||
*
|
||
* labelAFooter ~ labelDFooter
|
||
* ラベル値の後ろに表示する文字列を設定します。
|
||
* 『1234 点』、『12 日目』のような表示にするための機能です、値との間の
|
||
* スペースは半角スペースなどで調整してください。
|
||
*
|
||
* labelNameColorId
|
||
* labelValueColorId
|
||
* labelMaxColorId
|
||
* labelFooterColorId
|
||
* ラベルの各部分ごとの文字色番号を設定します。
|
||
* 番号はイベントコマンド『文章の表示』などで使う制御文字 \C[n] の
|
||
* n の部分と同じものになります。
|
||
*
|
||
* footerSpace
|
||
* ラベル値とフッターの表示位置を所持金ウィンドウとそろえたいときは
|
||
* このパラメータを調節してください。フッターと通貨単位がともに
|
||
* 全角 1 文字の場合は 6 を設定するとちょうど同じになります。
|
||
*/
|
||
|
||
var Imported = Imported || {};
|
||
Imported.TMMenuLabel = true;
|
||
|
||
var TMPlugin = TMPlugin || {};
|
||
TMPlugin.MenuLabel = {};
|
||
TMPlugin.MenuLabel.Parameters = PluginManager.parameters('TMMenuLabel');
|
||
TMPlugin.MenuLabel.Labels = [];
|
||
TMPlugin.MenuLabel.Labels[0] = {name: TMPlugin.MenuLabel.Parameters['labelAName'],
|
||
id: +(TMPlugin.MenuLabel.Parameters['labelAId'] || 10),
|
||
max: +(TMPlugin.MenuLabel.Parameters['labelAMax'] || 9999),
|
||
footer: TMPlugin.MenuLabel.Parameters['labelAFooter']};
|
||
TMPlugin.MenuLabel.Labels[1] = {name: TMPlugin.MenuLabel.Parameters['labelBName'],
|
||
id: +(TMPlugin.MenuLabel.Parameters['labelBId'] || 10),
|
||
max: +(TMPlugin.MenuLabel.Parameters['labelBMax'] || 9999),
|
||
footer: TMPlugin.MenuLabel.Parameters['labelBFooter']};
|
||
TMPlugin.MenuLabel.Labels[2] = {name: TMPlugin.MenuLabel.Parameters['labelCName'],
|
||
id: +(TMPlugin.MenuLabel.Parameters['labelCId'] || 10),
|
||
max: +(TMPlugin.MenuLabel.Parameters['labelCMax'] || 9999),
|
||
footer: TMPlugin.MenuLabel.Parameters['labelCFooter']};
|
||
TMPlugin.MenuLabel.Labels[3] = {name: TMPlugin.MenuLabel.Parameters['labelDName'],
|
||
id: +(TMPlugin.MenuLabel.Parameters['labelDId'] || 10),
|
||
max: +(TMPlugin.MenuLabel.Parameters['labelDMax'] || 9999),
|
||
footer: TMPlugin.MenuLabel.Parameters['labelDFooter']};
|
||
TMPlugin.MenuLabel.NameWidth = +(TMPlugin.MenuLabel.Parameters['labelNameWidth'] || 160);
|
||
TMPlugin.MenuLabel.ValueWidth = +(TMPlugin.MenuLabel.Parameters['labelValueWidth'] || 96);
|
||
TMPlugin.MenuLabel.NameColorId = +(TMPlugin.MenuLabel.Parameters['labelNameColorId'] || 16);
|
||
TMPlugin.MenuLabel.ValueColorId = +(TMPlugin.MenuLabel.Parameters['labelValueColorId'] || 0);
|
||
TMPlugin.MenuLabel.MaxColorId = +(TMPlugin.MenuLabel.Parameters['labelMaxColorId'] || 2);
|
||
TMPlugin.MenuLabel.FooterColorId = +(TMPlugin.MenuLabel.Parameters['labelFooterColorId'] || 0);
|
||
TMPlugin.MenuLabel.FooterSpace = +(TMPlugin.MenuLabel.Parameters['footerSpace'] || 0);
|
||
TMPlugin.MenuLabel.ReverseMenuWindow = TMPlugin.MenuLabel.Parameters['reverseMenuWindow'] === '1';
|
||
TMPlugin.MenuLabel.MenuTextAlign = TMPlugin.MenuLabel.Parameters['menuTextAlign'] || 'left';
|
||
|
||
(function() {
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Game_System
|
||
//
|
||
|
||
Game_System.prototype.isMenuLabelEnabled = function() {
|
||
if (this._menuLabelEnabled === undefined) this._menuLabelEnabled = true;
|
||
return this._menuLabelEnabled;
|
||
};
|
||
|
||
Game_System.prototype.setMenuLabel = function(flag) {
|
||
this._menuLabelEnabled = flag;
|
||
};
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Game_Interpreter
|
||
//
|
||
|
||
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
|
||
Game_Interpreter.prototype.pluginCommand = function(command, args) {
|
||
_Game_Interpreter_pluginCommand.call(this, command, args);
|
||
if (command === 'startMenuLabel') {
|
||
$gameSystem.setMenuLabel(true);
|
||
} else if (command === 'stopMenuLabel') {
|
||
$gameSystem.setMenuLabel(false);
|
||
}
|
||
};
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Window_MenuCommand
|
||
//
|
||
|
||
Window_MenuCommand.prototype.itemTextAlign = function() {
|
||
return TMPlugin.MenuLabel.MenuTextAlign;
|
||
};
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Window_MenuLabel
|
||
//
|
||
|
||
function Window_MenuLabel() {
|
||
this.initialize.apply(this, arguments);
|
||
}
|
||
|
||
Window_MenuLabel.prototype = Object.create(Window_Base.prototype);
|
||
Window_MenuLabel.prototype.constructor = Window_MenuLabel;
|
||
|
||
Window_MenuLabel.prototype.initialize = function(x, y) {
|
||
var width = this.windowWidth();
|
||
var height = this.windowHeight();
|
||
Window_Base.prototype.initialize.call(this, x, y, width, height);
|
||
this.refresh();
|
||
};
|
||
|
||
Window_MenuLabel.prototype.maxItems = function() {
|
||
var n = 0;
|
||
for (var i = 0; i < 4; i++) {
|
||
if (TMPlugin.MenuLabel.Labels[i].id !== 0) n++;
|
||
}
|
||
return n;
|
||
};
|
||
|
||
Window_MenuLabel.prototype.windowWidth = function() {
|
||
return 240;
|
||
};
|
||
|
||
Window_MenuLabel.prototype.windowHeight = function() {
|
||
return this.fittingHeight(this.maxItems());
|
||
};
|
||
|
||
Window_MenuLabel.prototype.refresh = function() {
|
||
var x = this.textPadding();
|
||
var width = this.contents.width - this.textPadding() * 2;
|
||
var lineHeight = this.lineHeight();
|
||
this.contents.clear();
|
||
var x = this.contents.width - this.textPadding();
|
||
var y = 0;
|
||
for (var i = 0; i < 4; i++) {
|
||
var label = TMPlugin.MenuLabel.Labels[i];
|
||
var value = this.labelValue(label.id);
|
||
if (value != null) {
|
||
this.drawMenuLabel(x, y, label, value);
|
||
y += lineHeight;
|
||
}
|
||
}
|
||
};
|
||
|
||
Window_MenuLabel.prototype.labelValue = function(id) {
|
||
if (id > 0) {
|
||
return $gameVariables.value(id);
|
||
} else if (id === -1) {
|
||
return $gameParty.steps();
|
||
} else if (id === -2) {
|
||
return $gameSystem.saveCount();
|
||
} else if (id === -3) {
|
||
return $gameSystem.battleCount();
|
||
} else if (id === -4) {
|
||
return $gameSystem.winCount();
|
||
} else if (id === -5) {
|
||
return $gameSystem.escapeCount();
|
||
}
|
||
return null;
|
||
};
|
||
|
||
Window_MenuLabel.prototype.drawMenuLabel = function(x, y, label, value) {
|
||
if (label.footer) {
|
||
var footerWidth = this.textWidth(label.footer);
|
||
x -= footerWidth;
|
||
this.changeTextColor(this.textColor(TMPlugin.MenuLabel.FooterColorId));
|
||
this.drawText(label.footer, x, y, footerWidth);
|
||
x -= TMPlugin.MenuLabel.FooterSpace;
|
||
}
|
||
x -= TMPlugin.MenuLabel.ValueWidth;
|
||
this.changeTextColor(this.textColor(TMPlugin.MenuLabel.ValueColorId));
|
||
if (label.max && value >= label.max) {
|
||
value = label.max;
|
||
this.changeTextColor(this.textColor(TMPlugin.MenuLabel.MaxColorId));
|
||
}
|
||
this.drawText(value, x, y, TMPlugin.MenuLabel.ValueWidth, 'right');
|
||
if (label.name) {
|
||
this.changeTextColor(this.textColor(TMPlugin.MenuLabel.NameColorId));
|
||
this.drawText(label.name, this.textPadding(), y, TMPlugin.MenuLabel.NameWidth);
|
||
}
|
||
};
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Scene_Menu
|
||
//
|
||
|
||
var _Scene_Menu_create = Scene_Menu.prototype.create;
|
||
Scene_Menu.prototype.create = function() {
|
||
_Scene_Menu_create.call(this);
|
||
if ($gameSystem.isMenuLabelEnabled()) this.createMenuLabelWindow();
|
||
if (TMPlugin.MenuLabel.ReverseMenuWindow) {
|
||
this._statusWindow.x = 0;
|
||
this._commandWindow.x = this._statusWindow.width;
|
||
this._goldWindow.x = this._commandWindow.x
|
||
if (this._menuLabelWindow) this._menuLabelWindow.x = this._commandWindow.x
|
||
}
|
||
};
|
||
|
||
Scene_Menu.prototype.createMenuLabelWindow = function() {
|
||
this._menuLabelWindow = new Window_MenuLabel(0, 0);
|
||
this._menuLabelWindow.y = this._goldWindow.y - this._menuLabelWindow.height;
|
||
this.addWindow(this._menuLabelWindow);
|
||
};
|
||
|
||
})();
|