BGM音量設定 / Kpp_BgmVolumeMZ.js



//=============================================================================
// RPG Maker MZ - Kpp_BgmVolumeMZ.js
//=============================================================================
// Copyright (c) 2016-2020 カッピ
//
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
//
// ウェブサイト
// https://birdwind.net/
//
// Twitter
// https://twitter.com/kappi_bw

/*:ja
 * @target MZ
 * @plugindesc BGMの音量をまとめて設定
 * @author カッピ
 * @url https://birdwind.net/plugin/
 *
 * @help
 * BGMを再生する音量を、プラグインで設定した値に統一します。
 * BGMごとに音量を設定します。
 * 
 * 指定した番号のスイッチがオンの場合、プラグインの機能は無効になり、
 * 通常の(イベントコマンドなどで指定した)音量で再生されます。
 *
 * 音量の最大値は 100 です。
 * それ以上の値を設定すると、100に補正されます。
 * マイナスの値を設定すると、設定は無効になり、通常の音量で再生されます。
 *
 * 全てのBGMを設定する必要はありません。
 * プラグインで設定していないBGMは、通常の音量で再生されます。
 *
 * @param DisableSwitch
 * @desc オンの間、プラグインの機能を無効にするスイッチの番号
 * @default 0
 * @type switch
 *
 * @param VolumeList
 * @text 音量設定リスト
 * @desc 音量設定リスト
 * @type struct[]
 *
 */

/*~struct~VolumeSet:
 *
 * @param file
 * @text 音量を設定するBGM
 * @desc 音量を設定するBGM
 * @type file
 * @dir audio/bgm
 *
 * @param volume
 * @text BGMの音量
 * @desc BGMの音量
 * @type number
 * @default 90
 * @min -1
 * @max 100
 *
 */

(function(){

    let _volumeList = {};
    
    const pluginName = 'Kpp_BgmVolumeMZ';
	const parameters = PluginManager.parameters(pluginName);
    
    const paramDisableSwitch = Number(parameters['DisableSwitch'] || 0);
    const paramVolumeList = parameters['VolumeList'] ? JSON.parse(parameters['VolumeList']) : [];
    
    for (let i = 0; i < paramVolumeList.length; i++) {
    	const volumeSet = JSON.parse(paramVolumeList[i]);
    	const bgmName = volumeSet.file;
    	if (bgmName) {
    		let bgmVolume = Number(volumeSet.volume || -1);
    		if (bgmVolume > 100) bgmVolume = 100;
    		if (bgmVolume >= 0) _volumeList[bgmName] = bgmVolume;
    		
    	}
    }
    
    const _AudioManager_playBgm = AudioManager.playBgm;
    AudioManager.playBgm = function(bgm, pos) {
        if (paramDisableSwitch <= 0 || !$gameSwitches.value(paramDisableSwitch)) {
            if (bgm.name in _volumeList) bgm.volume = _volumeList[bgm.name];
        }

        _AudioManager_playBgm.call(this, bgm, pos);
    };

}());