290 lines
11 KiB
JavaScript
290 lines
11 KiB
JavaScript
//=======↓本プラグインを改変した場合でも、この欄は消さないでください↓===============
|
|
// 制御文字を拡張するプラグイン
|
|
// FTKR_ExEscapeCharacters.js
|
|
// 作成者 : フトコロ
|
|
// 作成日 : 2017/03/27
|
|
// 最終更新日 : 2017/03/28
|
|
// バージョン : v1.0.2
|
|
//=======↑本プラグインを改変した場合でも、この欄は消さないでください↑===============
|
|
|
|
var Imported = Imported || {};
|
|
Imported.FTKR_EEC = true;
|
|
|
|
var FTKR = FTKR || {};
|
|
FTKR.EEC = FTKR.EEC || {};
|
|
|
|
/*:
|
|
* @plugindesc v1.0.2 制御文字を拡張するプラグイン
|
|
* @author フトコロ
|
|
*
|
|
* @param -- 画像の表示 --
|
|
* @desc
|
|
*
|
|
* @param Advance Load Files
|
|
* @desc ゲーム起動時に読み込む画像ファイル名を指定
|
|
* 複数ある場合は、カンマ(,)で区切ること
|
|
* @default
|
|
*
|
|
* @param Enabled Adjust Height
|
|
* @desc 画像高さに合わせて、行の高さを自動調整する
|
|
* 0 - 無効にする, 1 - 有効にする
|
|
* @default 0
|
|
*
|
|
* @param Image Width
|
|
* @desc 制御文字\IMG[]で表示する画像の幅
|
|
* @default
|
|
*
|
|
* @param Image Height
|
|
* @desc 制御文字\IMG[]で表示する画像の高さ
|
|
* @default
|
|
*
|
|
* @help
|
|
*-----------------------------------------------------------------------------
|
|
* 概要
|
|
*-----------------------------------------------------------------------------
|
|
* 文章の表示等に使用できる制御文字に、以下の制御文字を追加します。
|
|
*
|
|
* 1. 画像の表示
|
|
* \IMG[画像ファイル名(, 画像番号, 画像幅, 画像高さ, 画像拡大率, 表示位置)]
|
|
*
|
|
* 2. 行の高さの変更
|
|
* \LH[行の高さ]
|
|
*
|
|
*-----------------------------------------------------------------------------
|
|
* 設定方法
|
|
*-----------------------------------------------------------------------------
|
|
* 1.「プラグインマネージャー(プラグイン管理)」に、本プラグインを追加して
|
|
* ください。
|
|
*
|
|
*
|
|
*-----------------------------------------------------------------------------
|
|
* 「画像の表示」機能
|
|
*-----------------------------------------------------------------------------
|
|
* 以下の制御文字で画像を表示できます。
|
|
*
|
|
* \IMG[画像ファイル名(, 画像番号, 画像幅, 画像高さ, 画像拡大率, 表示位置)]
|
|
*
|
|
* 画像ファイル名
|
|
* :表示させたい画像のファイル名を指定します。
|
|
* :画像ファイルは、/img/systemフォルダに保存してください。(*1)
|
|
*
|
|
* 画像番号
|
|
* :画像ファイル内の何番目の画像を表示するか指定します。
|
|
* :アイコン画像のように、左上の画像を 0番、右上の画像を 15番、
|
|
* :左上から一段下の画像を 16番として数えます。
|
|
* :入力しない場合は、0番目の画像を表示します。
|
|
*
|
|
* 画像幅
|
|
* :画像の幅を指定します。
|
|
* :0を指定、または入力しない場合は、プラグインパラメータ<Image Width>の値を
|
|
* :使用します。
|
|
*
|
|
* 画像高さ
|
|
* :画像の高さを指定します。
|
|
* :0を指定、または入力しない場合は、プラグインパラメータ<Image Height>の値を
|
|
* :使用します。
|
|
* :プラグインパラメータ<Enabled Adjust Height>を有効にした場合、
|
|
* :画像の高さに合わせて以降の行の高さを自動で調整します。
|
|
*
|
|
* 画像拡大率
|
|
* :100を基準として、画像の拡大率を指定します。
|
|
* :入力しない場合は、元のサイズのまま表示します。
|
|
*
|
|
* 表示位置
|
|
* :行の高さよりも、画像高さが小さい場合に、画像を表示する位置を設定できます。
|
|
* : 中央(middle) - 中央揃えで表示
|
|
* : 下揃え(bottom) - 下揃えで表示
|
|
* :入力しない場合は、上揃えで表示します。
|
|
*
|
|
* 入力例)
|
|
* \IMG[file]
|
|
* 画像ファイル file.png の 0番目の画像を表示する。
|
|
* 画像の幅と高さは、プラグインパラメータの値を使用する。
|
|
*
|
|
* \IMG[file, 1, 48, 48, 80, 中央]
|
|
* 48*48 の画像の画像ファイル file.png の 1番目の画像を80%に
|
|
* 縮小して表示する。
|
|
* このとき、1行が48よりも大きい場合に中央揃えで表示する。
|
|
*
|
|
* (*1):画像ファイルは、プラグインパラメータ<Advance Load File>に
|
|
* ファイル名を入力することで、ゲーム起動時に事前に読み込むことが
|
|
* できます。
|
|
* 事前に読み込んでいない画像の場合、ゲーム起動後の最初の画像表示の際に
|
|
* 正しく表示できない場合があります。
|
|
*
|
|
*
|
|
*-----------------------------------------------------------------------------
|
|
* 「行の高さの変更」機能
|
|
*-----------------------------------------------------------------------------
|
|
* 以下の制御文字で行の高さの変更できます。
|
|
*
|
|
* \LH[行の高さ]
|
|
*
|
|
* 行の高さ
|
|
* :この制御文字以降の1行の高さを、pixel単位で指定します。
|
|
* :MV標準の行の高さは 36 です。
|
|
* :0 を指定すると、標準の高さに変更します。
|
|
*
|
|
* 入力例)
|
|
* \LH[48]
|
|
*
|
|
*
|
|
*-----------------------------------------------------------------------------
|
|
* 本プラグインを使用するに当たって ☆重要☆
|
|
*-----------------------------------------------------------------------------
|
|
* 1.本プラグインは改変可です。
|
|
* ただし、一番始めに記載した作成者等の欄は残してください。
|
|
*
|
|
* 2.本プラグインを使用するに当たって、ゲーム中にライセンス表示することは
|
|
* 必須ではありません。ただ、どこかReadme等にでも記載して頂けると嬉しいです。
|
|
*
|
|
* 3.本プラグインを使用する、または改変するに当たって、私フトコロに許可を取る
|
|
* ことや、連絡することは必要ありません。
|
|
*
|
|
* 4.本プラグインは、有料ゲームに使用して構いません。
|
|
* ただし、改変した場合でも、プラグイン単体で販売することは止めてください。
|
|
*
|
|
* 5.本プラグインは、年齢制限のあるゲームに使用して構いません。
|
|
*
|
|
*
|
|
*-----------------------------------------------------------------------------
|
|
* 変更来歴
|
|
*-----------------------------------------------------------------------------
|
|
*
|
|
* v1.0.2 - 2017/03/28 : 不具合修正
|
|
*
|
|
* v1.0.1 - 2017/03/27 : 機能追加
|
|
* 1. 制御文字「行の高さの変更」を追加
|
|
* 2. 制御文字「画像の表示」に、行の高さと表示位置の調整機能を追加
|
|
*
|
|
* v1.0.0 - 2017/03/27 : 初版作成
|
|
*
|
|
*-----------------------------------------------------------------------------
|
|
*/
|
|
//=============================================================================
|
|
|
|
//=============================================================================
|
|
// プラグイン パラメータ
|
|
//=============================================================================
|
|
FTKR.EEC.parameters = PluginManager.parameters("FTKR_ExEscapeCharacters");
|
|
|
|
FTKR.EEC.files = String(FTKR.EEC.parameters["Advance Load Files"] || "");
|
|
FTKR.EEC.width = Number(FTKR.EEC.parameters["Image Width"] || 0);
|
|
FTKR.EEC.height = Number(FTKR.EEC.parameters["Image Height"] || 0);
|
|
FTKR.EEC.enabledAdjustHeight = Number(
|
|
FTKR.EEC.parameters["Enabled Adjust Height"] || 0
|
|
);
|
|
|
|
//画像ファイル内で画像を横に並べられる数
|
|
Window_Base.EEC_IMG_LENGTH = 16;
|
|
|
|
//=============================================================================
|
|
// DataManager
|
|
//=============================================================================
|
|
|
|
//画像ファイルの事前ロード
|
|
FTKR.EEC.DataManager_loadDatabase = DataManager.loadDatabase;
|
|
DataManager.loadDatabase = function (name, src) {
|
|
FTKR.EEC.DataManager_loadDatabase.call(this, name, src);
|
|
if (!FTKR.EEC.files) return;
|
|
images = FTKR.EEC.files.split(",");
|
|
if (!images.length) return;
|
|
images.forEach(function (image) {
|
|
ImageManager.loadSystem(image);
|
|
});
|
|
};
|
|
|
|
//=============================================================================
|
|
// Window_Base
|
|
//=============================================================================
|
|
|
|
//画像表示関数 /img/system/に保存したname.pngを表示する。
|
|
Window_Base.prototype.drawEecImage = function (
|
|
name,
|
|
index,
|
|
x,
|
|
y,
|
|
width,
|
|
height,
|
|
scale
|
|
) {
|
|
if (name) {
|
|
var bitmap = ImageManager.loadSystem(name);
|
|
var pw = width;
|
|
var ph = height;
|
|
scale = scale || 1;
|
|
var len = Window_Base.EEC_IMG_LENGTH;
|
|
var sx = (index % len) * pw;
|
|
var sy = Math.floor(index / len) * ph;
|
|
this.contents.blt(bitmap, sx, sy, pw, ph, x, y, pw * scale, ph * scale);
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// 制御文字の表示処理の修正
|
|
//=============================================================================
|
|
|
|
FTKR.EEC.Window_Base_processEscapeCharacter =
|
|
Window_Base.prototype.processEscapeCharacter;
|
|
Window_Base.prototype.processEscapeCharacter = function (code, textState) {
|
|
switch (code) {
|
|
case "IMG":
|
|
this.processDrawEecImg(this.obtainEscapeEecParam(textState), textState);
|
|
break;
|
|
case "LH":
|
|
textState.height = this.obtainEscapeParam(textState) || this.lineHeight();
|
|
break;
|
|
default:
|
|
FTKR.EEC.Window_Base_processEscapeCharacter.call(this, code, textState);
|
|
break;
|
|
}
|
|
};
|
|
|
|
Window_Base.prototype.obtainEscapeEecParam = function (textState) {
|
|
var arr = /^\[([^\]]+)\]/.exec(textState.text.slice(textState.index));
|
|
if (arr) {
|
|
textState.index += arr[0].length;
|
|
var eec = arr[1].split(",");
|
|
eec = eec.map(function (elm, i) {
|
|
return isNaN(parseInt(elm)) ? elm : parseInt(elm);
|
|
});
|
|
return eec;
|
|
} else {
|
|
return "";
|
|
}
|
|
};
|
|
|
|
Window_Base.prototype.processDrawEecImg = function (ececs, textState) {
|
|
var index = ececs[1] || 0;
|
|
var width = ececs[2] || FTKR.EEC.width;
|
|
var height = ececs[3] || FTKR.EEC.height;
|
|
var scale = ececs[4] / 100 || 1;
|
|
var imgHeight = 0;
|
|
var offset = 0;
|
|
if (FTKR.EEC.enabledAdjustHeight) {
|
|
imgHeight = Math.floor(height * scale) + 4;
|
|
var offset = 0;
|
|
switch (ececs[5]) {
|
|
case "middle":
|
|
case "中央":
|
|
offset = (textState.height - imgHeight) / 2;
|
|
if (offset < 0) offset = 0;
|
|
break;
|
|
case "bottom":
|
|
case "下揃え":
|
|
offset *= 2;
|
|
break;
|
|
}
|
|
}
|
|
this.drawEecImage(
|
|
ececs[0],
|
|
index,
|
|
textState.x + 2,
|
|
textState.y + 2 + offset,
|
|
width,
|
|
height,
|
|
scale
|
|
);
|
|
textState.x += Math.floor(width * scale) + 4;
|
|
textState.height = Math.max(imgHeight, textState.height);
|
|
};
|