//=============================================================================
// 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);
};
}());