417 lines
15 KiB
JavaScript
417 lines
15 KiB
JavaScript
/*:
|
|
* @plugindesc
|
|
* @author Nupuryu
|
|
* @help
|
|
*/
|
|
/*:ja
|
|
* @plugindesc
|
|
* @author Nupuryu
|
|
*
|
|
* @help
|
|
*/
|
|
Game_Interpreter.prototype.PlayBgm = function (SetName, SetVol, SetPic, SetPn) {
|
|
PlayBgm(SetName, SetVol, SetPic, SetPn);
|
|
}
|
|
let PlayBgm = function (SetName, SetVol, SetPic, SetPn) {
|
|
SetVol = typeof SetVol !== 'undefined' ? SetVol : 90;
|
|
SetPic = typeof SetPic !== 'undefined' ? SetPic : 100;
|
|
SetPn = typeof SetPn !== 'undefined' ? SetPn : 0;
|
|
AudioManager.playBgm({ "name": SetName, "volume": SetVol, "pitch": SetPic, "pan": SetPn });
|
|
}
|
|
Game_Interpreter.prototype.PlaySe = function (SetName, SetVol, SetPic, SetPn) {
|
|
SetVol = typeof SetVol !== 'undefined' ? SetVol : 90;
|
|
SetPic = typeof SetPic !== 'undefined' ? SetPic : 100;
|
|
SetPn = typeof SetPn !== 'undefined' ? SetPn : 0;
|
|
AudioManager.playSe({ "name": SetName, "volume": SetVol, "pitch": SetPic, "pan": SetPn });
|
|
}
|
|
Game_Interpreter.prototype.StopSeAll = function () {
|
|
AudioManager._seBuffers.forEach(function(buffer) {
|
|
buffer.stop();
|
|
});
|
|
AudioManager._seBuffers = [];
|
|
}
|
|
let PlayBgsVoiceFlg = false;
|
|
Game_Interpreter.prototype.PlayBgs = function (SetName, SetVol, SetPic, SetPn) {
|
|
SetVol = typeof SetVol !== 'undefined' ? SetVol : 90;
|
|
SetPic = typeof SetPic !== 'undefined' ? SetPic : 100;
|
|
SetPn = typeof SetPn !== 'undefined' ? SetPn : 0;
|
|
if (PlayBgsVoiceFlg) SetVol *= VoiceVol / 100;
|
|
else SetVol *= ConfigManager['seVolume'] / 100;
|
|
AudioManager.playBgs({ "name": SetName, "volume": SetVol, "pitch": SetPic, "pan": SetPn });
|
|
PlayBgsVoiceFlg = false;
|
|
}
|
|
let NAudioVolume_NUpdateSc = Game_Interpreter.prototype.NUpdateSc;
|
|
Game_Interpreter.prototype.NUpdateSc = function () {
|
|
NAudioVolume_NUpdateSc.call(this);
|
|
ConfigManager['meVolume'] = 100;
|
|
ConfigManager['bgsVolume'] = 100;
|
|
}
|
|
let NVoice_isSkipFlg = function () {
|
|
return !isFastOff && Input.isPressed('control');
|
|
}
|
|
let NVoice_Game_System_initialize = Game_System.prototype.initialize;
|
|
Game_System.prototype.initialize = function () {
|
|
NVoice_Game_System_initialize.call(this);
|
|
this.Voice重複禁止 = false;
|
|
};
|
|
let voiceOnFlg = false;
|
|
let voiceCname = "";
|
|
Game_Interpreter.prototype.PVoice = function (cname, vname) {
|
|
if ($gameSwitches.value(VoiceMuteSwNo) || VoiceVol == 0) {
|
|
} else {
|
|
if (NVoice_isSkipFlg()) return;
|
|
let vvol = VoiceVol;
|
|
let onevol = AudioManager.seVolume;
|
|
AudioManager.seVolume = VoiceVol;
|
|
voiceOnFlg = true;
|
|
voiceCname = cname;
|
|
AudioManager.playSe({ "name": vname, "volume": vvol, "pitch": 100, "pan": 0 });
|
|
voicestflg = true;
|
|
AudioManager.seVolume = onevol;
|
|
if(AudioManager._allBgsBuffer[2] != undefined) {
|
|
if(AudioManager._allBgsBuffer[2]._autoPlay) {
|
|
voiceReplayBgs = AudioManager._allBgsBuffer[2]._url.replace(".ogg" , "").replace("audio/bgs/","");
|
|
voiceReplayBgs_url = AudioManager._allBgsBuffer[2]._url;
|
|
voiceReplayBgsTime = WebAudio._context.currentTime - AudioManager._allBgsBuffer[2]._startTime;
|
|
voiceReplayBgsVol = AudioManager._allBgsBuffer[2]._volume * 100;
|
|
this.VBgsStop(0.5 , false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
AudioManager.createBuffer = function (folder, name) {
|
|
let ext = this.audioFileExt();
|
|
let _nameArr = name.split('/');
|
|
let _folStr = "";
|
|
for (let i = 0; i <= _nameArr.length - 2; i++) {
|
|
_folStr += _nameArr[i] + '/';
|
|
}
|
|
let url = this._path + folder + '/' + _folStr + encodeURIComponent(_nameArr[_nameArr.length - 1]) + ext;
|
|
if (this.shouldUseHtml5Audio() && folder === 'bgm') {
|
|
if (this._blobUrl) Html5Audio.setup(this._blobUrl);
|
|
else Html5Audio.setup(url);
|
|
return Html5Audio;
|
|
} else {
|
|
return new WebAudio(url);
|
|
}
|
|
};
|
|
let voiceName = 'XXXXXXXXXXXXXXXXXXXXXXX';
|
|
let voicestflg = false;
|
|
let voiceBgsOffTime = 0;
|
|
let voiceReplayBgs = "";
|
|
let voiceReplayBgs_url = "";
|
|
let voiceReplayBgsVol = 0;
|
|
let voiceReplayBgsTime = 0;
|
|
let VoiceBuffers = [];
|
|
AudioManager.playSe = function (se) {
|
|
if (se.name) {
|
|
this._seBuffers = this._seBuffers.filter(function (audio) {
|
|
return audio.isPlaying();
|
|
});
|
|
let sefilepass = 'se';
|
|
if (voiceOnFlg){
|
|
StopVoice();
|
|
sefilepass = "voice/" + voiceCname;
|
|
voiceOnFlg = false;
|
|
voiceCname = "";
|
|
voiceName = se.name;
|
|
StopVoiceFlg = true;
|
|
}
|
|
let buffer = this.createBuffer(sefilepass, se.name);
|
|
this.updateSeParameters(buffer, se);
|
|
buffer.play(false);
|
|
if (StopVoiceFlg) {
|
|
VoiceBuffers.push(buffer);
|
|
} else {
|
|
this._seBuffers.push(buffer);
|
|
}
|
|
}
|
|
};
|
|
let NAudio_startPlaying = WebAudio.prototype._startPlaying;
|
|
WebAudio.prototype._startPlaying = function(loop, offset) {
|
|
NAudio_startPlaying.apply(this, arguments);
|
|
if(voicestflg) {
|
|
if(this._url.indexOf("audio/voice/") != -1) {
|
|
voiceBgsOffTime = this._startTime + this._totalTime / this._pitch;
|
|
}
|
|
}
|
|
}
|
|
let VoiceStop = WebAudio.prototype.stop;
|
|
WebAudio.prototype.stop = function () {
|
|
VoiceStop.call(this);
|
|
if (voicestflg) {
|
|
this._autoPlay = true;
|
|
}
|
|
};
|
|
WebAudio.prototype.play = function (loop, offset) {
|
|
if (this.isReady()) {
|
|
offset = offset || 0;
|
|
this._startPlaying(loop, offset);
|
|
} else if (WebAudio._context) {
|
|
this._autoPlay = true;
|
|
this.addLoadListener(function () {
|
|
if (this._autoPlay) {
|
|
if(voiceReplayBgsTime != 0 && voiceReplayBgs_url == this._url) {
|
|
offset = voiceReplayBgsTime;
|
|
voiceReplayBgs = "";
|
|
voiceReplayBgs_url = "";
|
|
voiceReplayBgsTime = 0;
|
|
voiceReplayBgsVol = 0;
|
|
}
|
|
this.play(loop, offset);
|
|
if(this._url)
|
|
if(this._url.indexOf("audio/voice/") != -1) {
|
|
voicestflg = false;
|
|
}
|
|
}
|
|
}.bind(this));
|
|
}
|
|
};
|
|
let StopVoiceFlg = false;
|
|
Game_Interpreter.prototype.StopVoice = function () {
|
|
StopVoice();
|
|
}
|
|
Game_Interpreter.prototype.AllStopVoice = function () {
|
|
AllStopVoice();
|
|
}
|
|
let AllStopVoice = function () {
|
|
for (let i = 0; i <= VoiceBuffers.length - 1; i++) {
|
|
let _CkBuffer = VoiceBuffers[i];
|
|
if(_CkBuffer._url.match("audio/voice/")) {
|
|
console.log(_CkBuffer._url);
|
|
_CkBuffer.stop();
|
|
VoiceBuffers.splice(i , 1);
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
let CharaStopVoice = function (_charaName) {
|
|
let encstr = encodeURI(_charaName);
|
|
if(encstr == "") return;
|
|
for (let i = 0; i <= VoiceBuffers.length - 1; i++) {
|
|
let _CkBuffer = VoiceBuffers[i];
|
|
if(_CkBuffer._url.match("audio/voice/" + encstr)) {
|
|
console.log(_CkBuffer._url);
|
|
_CkBuffer.stop();
|
|
VoiceBuffers.splice(i , 1);
|
|
i--;
|
|
}
|
|
}
|
|
}
|
|
Game_Interpreter.prototype.CharaStopVoice = function (_charaName) {
|
|
CharaStopVoice(_charaName);
|
|
}
|
|
let StopVoice = function (){
|
|
if($gameSystem.Voice重複禁止) {
|
|
AllStopVoice();
|
|
return;
|
|
}
|
|
CharaStopVoice(voiceCname)
|
|
}
|
|
let Voice_NextTxtOff機能_Off = false;
|
|
let VUpdateStopFlg = false;
|
|
let GInputUpdate = Game_Interpreter.prototype.NUpdate;
|
|
Game_Interpreter.prototype.NUpdate = function () {
|
|
if ($gameMessage._texts.length != 0 && StopVoiceFlg) {
|
|
StopVoiceFlg = false;
|
|
VUpdateStopFlg = true;
|
|
}
|
|
if ($gameMessage._texts.length == 0 && VUpdateStopFlg) {
|
|
this.StopVoice();
|
|
VUpdateStopFlg = false;
|
|
}
|
|
if (voiceBgsOffTime != 0 && !voicestflg) {
|
|
if (voiceBgsOffTime < WebAudio._context.currentTime) {
|
|
voiceBgsOffTime = 0;
|
|
if (voiceReplayBgs != "") {
|
|
this.VBgsPlay(voiceReplayBgs);
|
|
voiceReplayBgs = "";
|
|
}
|
|
}
|
|
}
|
|
GInputUpdate.call(this);
|
|
}
|
|
let FstCmnSaveFlg = false;
|
|
let FstVolCkFlame = 1;
|
|
let StartUpUpdate = Scene_Map.prototype.update;
|
|
let GameResetFlame = -1;
|
|
Scene_Map.prototype.update = function () {
|
|
if (FstVolCkFlame > 0) {
|
|
FstVolCkFlame -= 1;
|
|
if (FstVolCkFlame == 0) {
|
|
VoiceVol = $gameVariables.value(VoiceVolVarNo);
|
|
VolMuteFlg = $gameSwitches._data[VoiceMuteSwNo];
|
|
if (VolMuteFlg == undefined) {
|
|
FirstVolumeSet();
|
|
FstCmnSaveFlg = true;
|
|
}
|
|
AudioManager.masterVolume = Math.floor($gameVariables.value(MasterVolVarNo)) / 100;
|
|
}
|
|
}
|
|
if (GameResetFlame >= 0) {
|
|
GameResetFlame -= 1;
|
|
if (GameResetFlame == 0) {
|
|
location.reload();
|
|
}
|
|
}
|
|
StartUpUpdate.call(this);
|
|
}
|
|
let FirstVolumeSet = function () {
|
|
$gameSwitches._data[VoiceMuteSwNo] = false;
|
|
VolMuteFlg = false;
|
|
$gameVariables.setValue(MasterVolVarNo, F_MasterVol);
|
|
ConfigManager['bgmVolume'] = F_BGMVol;
|
|
ConfigManager['meVolume'] = F_BGMVol;
|
|
ConfigManager['seVolume'] = F_SEVol;
|
|
ConfigManager['bgsVolume'] = 100;
|
|
$gameVariables.setValue(VoiceVolVarNo, F_VoiceVol);
|
|
VoiceVol = F_VoiceVol;
|
|
ConfigManager.save();
|
|
}
|
|
AudioManager.playBgs = function (bgs, pos) {
|
|
if (bgs == undefined) return;
|
|
if (this.isCurrentBgs(bgs)) {
|
|
this.updateBgsParameters(bgs);
|
|
} else {
|
|
this.stopBgs();
|
|
if (bgs.name) {
|
|
this._bgsBuffer = this.createBuffer('bgs', bgs.name);
|
|
if (vbgsflg) {
|
|
this._bgsBuffer._volume = VoiceVol * 0.01;
|
|
}
|
|
this.updateBgsParameters(bgs);
|
|
this._bgsBuffer.play(true, pos || 0);
|
|
}
|
|
}
|
|
this.updateCurrentBgs(bgs, pos);
|
|
};
|
|
Game_Interpreter.prototype.VBgsPlayChara = function (charaName , filename, bgsvolume , line) {
|
|
}
|
|
let vbgsflg = false;
|
|
let playingVoice = "";
|
|
Game_Interpreter.prototype.VBgsPlay = function (filename, bgsvolume , line) {
|
|
if (VolMuteFlg) {
|
|
} else {
|
|
bgsvolume = typeof bgsvolume !== 'undefined' ? bgsvolume : -1;
|
|
line = typeof line !== 'undefined' ? line : 2;
|
|
if(voicestflg && line == 2) {
|
|
voiceReplayBgs = filename;
|
|
voiceReplayBgs_url = "audio/bgs/" + filename;
|
|
if (bgsvolume != -1) {
|
|
voiceReplayBgsVol = bgsvolume;
|
|
} else {
|
|
voiceReplayBgsVol = VoiceVol;
|
|
}
|
|
voiceReplayBgsTime = 0;
|
|
return;
|
|
}
|
|
if (playingVoice != filename) {
|
|
let args = new Array(String(line));
|
|
vbgsflg = true;
|
|
//this.pluginCommand("PB_BGS_CHANGE_LINE", args);
|
|
$gameSystem.setBgsLine(getArgNumber(line, 1));
|
|
PlayBgsVoiceFlg = true;
|
|
if (bgsvolume != -1) {
|
|
this.PlayBgs(filename , bgsvolume);
|
|
} else {
|
|
this.PlayBgs(filename , 100);
|
|
}
|
|
playingVoice = filename;
|
|
vbgsflg = false;
|
|
$gameSystem.setBgsLine(getArgNumber(1, 1));
|
|
// args = new Array("1"); //ライン1に戻す
|
|
// this.pluginCommand("PB_BGS_CHANGE_LINE", args);
|
|
}
|
|
}
|
|
}
|
|
Game_Interpreter.prototype.VBgsStop = function (foutcount , _tarkResetFlg , line) {
|
|
foutcount = typeof foutcount !== 'undefined' ? foutcount : 1;
|
|
line = typeof line !== 'undefined' ? line : 2;
|
|
_tarkResetFlg = typeof _tarkResetFlg !== 'undefined' ? _tarkResetFlg : true;
|
|
if(_tarkResetFlg) {
|
|
voiceReplayBgs = "";
|
|
voiceReplayBgs_url = "";
|
|
voiceReplayBgsTime = 0;
|
|
voiceReplayBgsVol = 0;
|
|
}
|
|
playingVoice = "";
|
|
$gameSystem.setBgsLine(getArgNumber(line, 1));
|
|
// let args = new Array(String(line)); //ラインを変更
|
|
// this.pluginCommand("PB_BGS_CHANGE_LINE", args);
|
|
AudioManager._stopAllBgs = false;
|
|
AudioManager.stopBgs();
|
|
// args = new Array("1"); //ライン1に戻す
|
|
// this.pluginCommand("PB_BGS_CHANGE_LINE", args);
|
|
$gameSystem.setBgsLine(getArgNumber(1, 1));
|
|
}
|
|
class BGS_FA {
|
|
constructor(_Line, _EvNo, _Dist, _MaxVol) {
|
|
_MaxVol = typeof _MaxVol !== 'undefined' ? _MaxVol : 70;
|
|
this._Line = _Line;
|
|
this._EvNo = _EvNo;
|
|
this._Dist = _Dist;
|
|
this._MaxVol = _MaxVol;
|
|
}
|
|
}
|
|
let BGS_FA_Arr = [];
|
|
let Nupu_BGS_FA_performTransfer = Game_Player.prototype.performTransfer;
|
|
Game_Player.prototype.performTransfer = function () {
|
|
Nupu_BGS_FA_performTransfer.call(this);
|
|
BGS_FA_Arr = [];
|
|
$gameMap._events.forEach(function (_event) {
|
|
try {
|
|
let _ckEv = _event.event();
|
|
let _LNoStr = MetaChecker(_ckEv, "BGS_FA");
|
|
if (_LNoStr != "") {
|
|
let _BGSArr = _LNoStr.split(',');
|
|
let _LineNo = Number(_BGSArr[0]);
|
|
let _DistNo = Number(_BGSArr[1]);
|
|
let _MaxVol = 70
|
|
if (_BGSArr[2] != undefined) {
|
|
_MaxVol = Number(_BGSArr[2]);
|
|
}
|
|
BGS_FA_Arr.push(new BGS_FA(_LineNo, _event._eventId, _DistNo, _MaxVol));
|
|
}
|
|
} catch (e) {
|
|
console.log("Err:Nupu_BGS_FA_performTransfer");
|
|
}
|
|
})
|
|
}
|
|
class Ck_BGSVol {
|
|
constructor(_Line, _Vol) {
|
|
this._Line = _Line;
|
|
this._Vol = _Vol;
|
|
}
|
|
}
|
|
let NupuAudio_NUpdate = Game_Interpreter.prototype.NUpdate;
|
|
Game_Interpreter.prototype.NUpdate = function () {
|
|
NupuAudio_NUpdate.call(this);
|
|
if (FstCmnSaveFlg) {
|
|
this.UTA_Save();
|
|
FstCmnSaveFlg = false;
|
|
}
|
|
let _CkValArr = [];
|
|
for (let i = 0; i <= BGS_FA_Arr.length - 1; i++){
|
|
let _ckEv = $gameMap._events[BGS_FA_Arr[i]._EvNo];
|
|
if($gameMap._events[BGS_FA_Arr[i]._EvNo] == null) continue;
|
|
let _SaX = Math.abs(PL_realX - _ckEv._realX);
|
|
let _SaY = Math.abs(PL_realY - _ckEv._realY);
|
|
let _SetVol = BGS_FA_Arr[i]._MaxVol * (1 - ((_SaX + _SaY) / BGS_FA_Arr[i]._Dist));
|
|
if (_SetVol <= 0) _SetVol = 0;
|
|
let _volCntFlg = false;
|
|
for (let j = 0; j <= _CkValArr.length - 1; j++){
|
|
if (_CkValArr[j]._Vol > _SetVol){
|
|
_volCntFlg = true;
|
|
}
|
|
}
|
|
if (_volCntFlg) continue;
|
|
_CkValArr.push(new Ck_BGSVol(BGS_FA_Arr[i]._Line, _SetVol));
|
|
let args = new Array(String(BGS_FA_Arr[i]._Line));
|
|
this.pluginCommand("PB_BGS_CHANGE_LINE", args);
|
|
let _NCkBGS = AudioManager._currentBgs;
|
|
if (_NCkBGS != undefined) {
|
|
let _NBGSStr = AudioManager._currentBgs.name;
|
|
AudioManager.playBgs({ "name": _NBGSStr, "volume": _SetVol, "pitch": 100, "pan": 0 })
|
|
}
|
|
}
|
|
}
|