/*:
* @plugindesc MovieInScreenPlugin
* @author triacontane
*
* @param MovieVolumeType
* @desc 動画再生時に音声が含まれる場合、その音量を参照するオーディオ種別です。指定しない場合、常に100%で再生されます。
* @default none
* @type select
* @option none
* @option BGM
* @option BGS
* @option ME
* @option SE
*
* @param AutoEraseOnEnd
* @desc 動画再生終了時に動画ピクチャを自動で削除します。
* @default true
* @type boolean
*
* @param MovieFolder
* @desc 動画ファイルの取得元フォルダです。指定しない場合は「movies」フォルダが使用されます。
* @default
*
* @param WebmExt
* @desc webm形式を再生するときの偽装拡張子です。難読化したい場合に指定します。対応フォーマットが増えるわけではありません。
* @default
*
* @param Mp4Ext
* @desc mp4形式を再生するときの偽装拡張子です。難読化したい場合に指定します。対応フォーマットが増えるわけではありません。
* @default
*
* @help Play movies using the picture display frame.
* In addition to being subject to processing by moving and rotating pictures,
* parallel playback of multiple videos
* It will be possible. Also, the movie will be displayed at the bottom of
* the window. However, it does not correspond to "color tone change of picture".
*
* This plugin can only be used with core script ver1.5.0 or later.
*
* Currently there is a problem that the video may not be played properly
* with PC Firefox. For the time being we will only support local execution.
*
* After preparing movie files with plug-in command "MP_SET_MOVIE"
* Please execute the event designation "Show Picture"
* with the file designation empty.
*
* Plugin Command
*
* MP_SET_MOVIE file # 動画ファイル[file]を準備します。
* MP_SET_LOOP 1 on # ピクチャ番号[1]の動画がループ再生されます。
* MP_SET_PAUSE 1 on # ピクチャ番号[1]の動画が一時停止します。
* MP_SET_WAIT 1 # ピクチャ番号[1]の動画が再生するまでイベントを待機します。
* MP_SET_VOLUME 1 50 # ピクチャ番号[1]の動画の音量を50%に設定します。
* MP_SET_SPEED 1 150 # ピクチャ番号[1]の動画の再生速度を150%に設定します。
*
* Prepare a video file that exists in a path other than the movie folder.
* The [path] you specify is relative to the path where the save folder exists.
* Extension is required.
* MP_SET_OUTER_MOVIE path # 動画ファイル[path]を準備します。拡張子必須
* MP_外部動画設定 path # 同上
*
* Set the movie sound volume type.
* MP_SET_VOLUME_TYPE BGM
*
* Caution:
* If you play multiple large movies, the performance may be degraded.
*
* This plugin is released under the MIT License.
*/
/*:ja
* @plugindesc 動画のピクチャ表示プラグイン
* @author トリアコンタン
*
* @param 動画音量種別
* @desc 動画再生時に音声が含まれる場合、その音量を参照するオーディオ種別です。指定しない場合、常に100%で再生されます。
* @default none
* @type select
* @option none
* @option BGM
* @option BGS
* @option ME
* @option SE
*
* @param 終了時自動削除
* @desc 動画再生終了時に動画ピクチャを自動で削除します。削除しない場合、動画は最終フレームで静止します。
* @default true
* @type boolean
*
* @param 動画取得フォルダ
* @desc 動画ファイルの取得元フォルダです。指定しない場合は「movies」フォルダが使用されます。末尾のスラッシュは不要です。
* @default
*
* @param webm偽装拡張子
* @desc webm形式を再生するときの偽装拡張子です。難読化したい場合に指定します。対応フォーマットが増えるわけではありません。
* @default
*
* @param mp4偽装拡張子
* @desc mp4形式を再生するときの偽装拡張子です。難読化したい場合に指定します。対応フォーマットが増えるわけではありません。
* @default
*
* @help ピクチャの表示枠を使って動画を再生します。
* ピクチャの移動や回転による処理の対象になるほか、複数の動画の並行再生が
* 可能になります。また、動画がウィンドウの下に表示されるようになります。
* ただし「ピクチャの色調変更」には対応していません。
*
* このプラグインは本体ver1.6.0以降でのみ使用できます。
*
* 現在、スマートデバイスで実行したときに動画が最初のフレームで停止する
* 現象を確認しています。
* よって当面の間はローカル実行(Game.exe)のみをサポート対象とします。
*
* プラグインコマンド「MP_SET_MOVIE」で動画ファイルを準備してから
* イベントコマンド「ピクチャの表示」をファイル指定を空で実行してください。
*
* プラグインコマンド詳細
* イベントコマンド「プラグインコマンド」から実行。
* (パラメータの間は半角スペースで区切る)
*
* MP_SET_MOVIE file # 動画ファイル[file]を準備します。拡張子不要。
* MP_動画設定 file # 同上
* MP_SET_LOOP 1 on # ピクチャ番号[1]の動画がループ再生されます。
* MP_ループ設定 1 on # 同上(offでループ再生を解除します)
* MP_SET_PAUSE 1 on # ピクチャ番号[1]の動画が一時停止します。
* MP_ポーズ設定 1 on # 同上(offで再生を再開します)
* MP_SET_WAIT 1 # ピクチャ番号[1]の動画が再生するまでイベントを待機します。
* MP_ウェイト設定 1 # 同上
* MP_SET_LIMIT 1 50 # ピクチャ番号[1]の動画を50フレームで中断します。
* MP_リミット設定 1 50 # 同上
* MP_SET_VOLUME 1 50 # ピクチャ番号[1]の動画の音量を50%に設定します。
* MP_音量設定 1 50 # 同上
* MP_SET_SPEED 1 150 # ピクチャ番号[1]の動画の再生速度を150%に設定します。
* MP_速度設定 1 150 # 同上
*
* movieフォルダ以外のパスに存在する動画ファイルを準備します。
* 指定する[path]は、フルパスもしくはsaveフォルダの存在するパスからの相対パスです。
* 拡張子が必要です。
* MP_SET_OUTER_MOVIE path # 動画ファイル[path]を準備します。拡張子必須
* MP_外部動画設定 path # 同上
*
* 動画音量種別を設定します。設定する内容はプラグインパラメータ「動画音量種別」と
* 同じです。プラグインパラメータの設定より優先されます。
* MP_音量種別設定 BGM
* MP_SET_VOLUME_TYPE BGM
*
* アルファチャンネル付き動画を使用する場合は、
* プラグインコマンド「MP_SET_MOVIE」実行時に二つめの引数をonにしてください。
* MP_SET_MOVIE file on
*
* ※ スマートデバイス環境(.mp4を使用)では透過を使用できません。
* こちらはコーデック(H.264)の仕様なのでプラグイン側では対応できません。
*
* ・スクリプト詳細
* 指定した番号の動画ピクチャが再生終了している場合にtrueを返します。
* 存在しないピクチャ番号を指定するとエラーになります。
* このスクリプトはパラメータ「終了時自動削除」が無効な場合のみ使えます。
* $gameScreen.picture(2).isVideoEnd(); # ピクチャ[2]の再生が終了している場合にtrue
*
* 注意:
* サイズの大きな動画を複数再生すると、パフォーマンスが低下する可能性があります。
*
* 利用規約:
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
* についても制限はありません。
* このプラグインはもうあなたのものです。
*/
(function() {
'use strict';
var pluginName = 'MoviePicture';
var metaTagPrefix = 'MP_';
//=============================================================================
// ローカル関数
// プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
//=============================================================================
var getParamString = function(paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) {
var name = PluginManager.parameters(pluginName)[paramNames];
if (name) return name;
}
return '';
};
var getParamBoolean = function(paramNames) {
var value = getParamString(paramNames);
return value.toUpperCase() === 'TRUE';
};
var convertEscapeCharacters = function(text) {
if (isNotAString(text)) text = '';
var windowLayer = SceneManager._scene._windowLayer;
return windowLayer ? windowLayer.children[0].convertEscapeCharacters(text) : text;
};
var isNotAString = function(args) {
return String(args) !== args;
};
var convertAllArguments = function(args) {
for (var i = 0; i < args.length; i++) {
args = convertEscapeCharacters(args);
}
return args;
};
var getArgNumber = function(arg, min, max) {
if (arguments.length < 2) min = -Infinity;
if (arguments.length < 3) max = Infinity;
return (parseInt(arg) || 0).clamp(min, max);
};