//=============================================================================
// Pon_WindowBackOpacity.js
//=============================================================================
//Copyright (c) 2020 Ponpoko Neruson
//Released under the MIT license
//https://opensource.org/licenses/mit-license.php
//
//連絡先	:ponpokonerusontanuki@gmail.com
/*:
 * @plugindesc ウィンドウの背景不透明度を変更できるようにします
 * @author ぽんぽこねるそん
 *
 * @help  <使い方>
 *プラグインパラメータのDefault Back Opacityを設定するとそれが初期値になります。
 *
 *<プラグインコマンド>
 *SetWindowBackOpacity value
 *ウィンドウの背景不透明度をvalueに変更します
 *(valueは0～255にしてください)
 *
 *ex.255に変更する
 *SetWindowBackOpacity 255
 *
 *ResetWindowBackOpacity
 *ウィンドウの背景不透明度をDefault Back Opacityで設定した値に戻します
 * @param Default Back Opacity
 * @type number
 * @max 255
 * @min 0
 * @desc ウィンドウ背景の不透明度。
 * @default 192
 *
 * Var 1.00 20/10/19		やっつけ完成
 */


var Pon_WindowBackOpacity = (Number(PluginManager.parameters('Pon_WindowBackOpacity')["Default Back Opacity"]) || 0).clamp(0,255);

(function() {

    //=============================================================================
    // プラグインコマンドの追加
    //=============================================================================
    var _Game_Interpreter_pluginCommand =
            Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
        _Game_Interpreter_pluginCommand.call(this, command, args);
        if (command === 'SetWindowBackOpacity') {
            var backOpacity = Number(args[0]);
            if (!backOpacity && backOpacity !== 0) {return};
            $gameSystem.setWindowBackOpacity(backOpacity.clamp(0,255));
        }
        if (command === 'ResetWindowBackOpacity') {
            $gameSystem.setWindowBackOpacity(null);
        }
    };
    //=============================================================================
    // ウィンドウの背景不透明度の取得
    //=============================================================================
    Game_System.prototype.windowBackOpacity = function() {
        if (!this._windowBackOpacity && this._windowBackOpacity !== 0) {return Pon_WindowBackOpacity};
        return this._windowBackOpacity;
    };
    //=============================================================================
    // ウィンドウの背景不透明度の変更
    //=============================================================================
    Game_System.prototype.setWindowBackOpacity = function(value) {
        this._windowBackOpacity = value;
        SceneManager._scene.updateWindowBackOpacity();
    };
    //=============================================================================
    // デフォルトの背景不透明度取得
    //=============================================================================
    Window_Base.prototype.standardBackOpacity = function() {
        return $gameSystem.windowBackOpacity();
    };
    //=============================================================================
    // ウィンドウの背景不透明度更新
    //=============================================================================
    Scene_Base.prototype.updateWindowBackOpacity = function() {
        this._windowLayer.children.forEach(window => window.updateBackOpacity());
    };
})();
 