From 9efa75c49acebf6afd8e58b5da3437ba95fb999b Mon Sep 17 00:00:00 2001 From: Rintim Date: Sun, 8 Oct 2023 02:56:12 +0800 Subject: [PATCH 1/5] feat: skill audio full path supported. --- game/game.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/game/game.js b/game/game.js index 4719ba8a9..5db47fa43 100644 --- a/game/game.js +++ b/game/game.js @@ -35076,6 +35076,22 @@ if(fixedNum) audioInfo=Math.min(audioInfo, fixedNum); game.playAudio('skill',`${audioName}${Math.floor(audioInfo*Math.random())+1}`); } + //直接指定配音文件名的新格式 + else if(typeof audioInfo=="object"&&"type" in audioInfo&&audioInfo.type=="direct"&&"files" in audioInfo){ + let audioFiles=audioInfo.files; + if(typeof audioFiles!="object") return; + if(!Array.isArray(audioFiles)){ + if(!player)return; + if(player.name&&player.name in audioFiles&&(!info.audioname2||!info.audioname2[player.name]))audioFiles=audioFiles[player.name]; + else if(player.name1&&player.name1 in audioFiles&&(!info.audioname2||!info.audioname2[player.name1]))audioFiles=audioFiles[player.name1]; + else if(player.name2&&player.name2 in audioFiles&&(!info.audioname2||!info.audioname2[player.name2]))audioFiles=audioFiles[player.name2]; + } + if(!Array.isArray(audioFiles))return; + let length=audioFiles.length; + if(fixedNum)length=Math.min(length,fixedNum); + //game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${audioName}${+1}.${audioInfo[3]||'mp3'}`); + game.playAudio(audioFiles[Math.floor(length*Math.random())]); + } else if(audioInfo) game.playAudio('skill',audioName); else if(info.audio!==false) game.playSkillAudio(audioName); }, @@ -54775,6 +54791,20 @@ if(Array.isArray(info.audioname)&&info.audioname.contains(playername)) audioname=audioname+'_'+playername; game.playAudio('skill',audioname+getIndex(audioinfo)); } + else if(typeof audioinfo=="object"&&"type" in audioinfo&&audioinfo.type=="direct"&&"files" in audioinfo){ + let audioFiles=audioinfo.files; + if(typeof audioFiles!="object") return; + if(!Array.isArray(audioFiles)){ + if(!player)return; + if(player.name&&player.name in audioFiles&&(!info.audioname2||!info.audioname2[player.name]))audioFiles=audioFiles[player.name]; + else if(player.name1&&player.name1 in audioFiles&&(!info.audioname2||!info.audioname2[player.name1]))audioFiles=audioFiles[player.name1]; + else if(player.name2&&player.name2 in audioFiles&&(!info.audioname2||!info.audioname2[player.name2]))audioFiles=audioFiles[player.name2]; + } + if(!Array.isArray(audioFiles))return; + const length=audioFiles.length; + //game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${audioName}${+1}.${audioInfo[3]||'mp3'}`); + game.playAudio(audioFiles[getIndex(length)-1]); + } else if(audioinfo){ if(Array.isArray(info.audioname)&&info.audioname.contains(playername)) audioname=audioname+'_'+playername; game.playAudio('skill',audioname); @@ -55036,6 +55066,20 @@ if(Array.isArray(info.audioname)&&info.audioname.contains(playername)) audioname=audioname+'_'+playername; game.playAudio('skill',audioname+getIndex(audioinfo)); } + else if(typeof audioinfo=="object"&&"type" in audioinfo&&audioinfo.type=="direct"&&"files" in audioinfo){ + let audioFiles=audioinfo.files; + if(typeof audioFiles!="object") return; + if(!Array.isArray(audioFiles)){ + if(!player)return; + if(player.name&&player.name in audioFiles&&(!info.audioname2||!info.audioname2[player.name]))audioFiles=audioFiles[player.name]; + else if(player.name1&&player.name1 in audioFiles&&(!info.audioname2||!info.audioname2[player.name1]))audioFiles=audioFiles[player.name1]; + else if(player.name2&&player.name2 in audioFiles&&(!info.audioname2||!info.audioname2[player.name2]))audioFiles=audioFiles[player.name2]; + } + if(!Array.isArray(audioFiles))return; + const length=audioFiles.length; + //game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${audioName}${+1}.${audioInfo[3]||'mp3'}`); + game.playAudio(audioFiles[getIndex(length)-1]); + } else if(audioinfo){ if(Array.isArray(info.audioname)&&info.audioname.contains(playername)) audioname=audioname+'_'+playername; game.playAudio('skill',audioname); From fc77521b7897edecd794e84e024dbc4ae6f2dd89 Mon Sep 17 00:00:00 2001 From: Rintim Date: Sun, 8 Oct 2023 03:10:38 +0800 Subject: [PATCH 2/5] fix: `audioname2` cannot appear in `ui.click.charactercard`. --- game/game.js | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/game/game.js b/game/game.js index 5db47fa43..8b765dd45 100644 --- a/game/game.js +++ b/game/game.js @@ -54793,17 +54793,13 @@ } else if(typeof audioinfo=="object"&&"type" in audioinfo&&audioinfo.type=="direct"&&"files" in audioinfo){ let audioFiles=audioinfo.files; - if(typeof audioFiles!="object") return; - if(!Array.isArray(audioFiles)){ - if(!player)return; - if(player.name&&player.name in audioFiles&&(!info.audioname2||!info.audioname2[player.name]))audioFiles=audioFiles[player.name]; - else if(player.name1&&player.name1 in audioFiles&&(!info.audioname2||!info.audioname2[player.name1]))audioFiles=audioFiles[player.name1]; - else if(player.name2&&player.name2 in audioFiles&&(!info.audioname2||!info.audioname2[player.name2]))audioFiles=audioFiles[player.name2]; + if(typeof audioFiles=="object"){ + if(!Array.isArray(audioFiles)&&playername&&playername in audioFiles)audioFiles=audioFiles[playername]; + if(Array.isArray(audioFiles)){ + const length=audioFiles.length; + game.playAudio(audioFiles[getIndex(length)-1]); + } } - if(!Array.isArray(audioFiles))return; - const length=audioFiles.length; - //game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${audioName}${+1}.${audioInfo[3]||'mp3'}`); - game.playAudio(audioFiles[getIndex(length)-1]); } else if(audioinfo){ if(Array.isArray(info.audioname)&&info.audioname.contains(playername)) audioname=audioname+'_'+playername; @@ -55068,17 +55064,13 @@ } else if(typeof audioinfo=="object"&&"type" in audioinfo&&audioinfo.type=="direct"&&"files" in audioinfo){ let audioFiles=audioinfo.files; - if(typeof audioFiles!="object") return; - if(!Array.isArray(audioFiles)){ - if(!player)return; - if(player.name&&player.name in audioFiles&&(!info.audioname2||!info.audioname2[player.name]))audioFiles=audioFiles[player.name]; - else if(player.name1&&player.name1 in audioFiles&&(!info.audioname2||!info.audioname2[player.name1]))audioFiles=audioFiles[player.name1]; - else if(player.name2&&player.name2 in audioFiles&&(!info.audioname2||!info.audioname2[player.name2]))audioFiles=audioFiles[player.name2]; + if(typeof audioFiles=="object"){ + if(!Array.isArray(audioFiles)&&playername&&playername in audioFiles)audioFiles=audioFiles[playername]; + if(Array.isArray(audioFiles)){ + const length=audioFiles.length; + game.playAudio(audioFiles[getIndex(length)-1]); + } } - if(!Array.isArray(audioFiles))return; - const length=audioFiles.length; - //game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${audioName}${+1}.${audioInfo[3]||'mp3'}`); - game.playAudio(audioFiles[getIndex(length)-1]); } else if(audioinfo){ if(Array.isArray(info.audioname)&&info.audioname.contains(playername)) audioname=audioname+'_'+playername; From 3a493a3306e8c338d618f26f3c4d63ba16314624 Mon Sep 17 00:00:00 2001 From: Rintim Date: Sun, 8 Oct 2023 03:52:02 +0800 Subject: [PATCH 3/5] style: fix space. --- game/game.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game/game.js b/game/game.js index 8b765dd45..0393f46d3 100644 --- a/game/game.js +++ b/game/game.js @@ -35081,12 +35081,12 @@ let audioFiles=audioInfo.files; if(typeof audioFiles!="object") return; if(!Array.isArray(audioFiles)){ - if(!player)return; + if(!player) return; if(player.name&&player.name in audioFiles&&(!info.audioname2||!info.audioname2[player.name]))audioFiles=audioFiles[player.name]; else if(player.name1&&player.name1 in audioFiles&&(!info.audioname2||!info.audioname2[player.name1]))audioFiles=audioFiles[player.name1]; else if(player.name2&&player.name2 in audioFiles&&(!info.audioname2||!info.audioname2[player.name2]))audioFiles=audioFiles[player.name2]; } - if(!Array.isArray(audioFiles))return; + if(!Array.isArray(audioFiles)) return; let length=audioFiles.length; if(fixedNum)length=Math.min(length,fixedNum); //game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${audioName}${+1}.${audioInfo[3]||'mp3'}`); From c370663f08362e0b742cc76b99affe523e0f57ad Mon Sep 17 00:00:00 2001 From: Rintim Date: Sun, 8 Oct 2023 12:49:46 +0800 Subject: [PATCH 4/5] perf: direct determination in object filter. --- game/game.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/game/game.js b/game/game.js index 0393f46d3..77e642085 100644 --- a/game/game.js +++ b/game/game.js @@ -35040,7 +35040,8 @@ if(Array.isArray(audioInfo)){ audioName=audioInfo[0]; if(!fixedNum) fixedNum=audioInfo[1];//数组会取第一个指定语音数 - audioInfo=lib.skill[audioName].audio; + if(audioName in lib.skill) audioInfo=lib.skill[audioName].audio; + else audioInfo=parseInt(fixedNum); continue; } break; @@ -35077,7 +35078,8 @@ game.playAudio('skill',`${audioName}${Math.floor(audioInfo*Math.random())+1}`); } //直接指定配音文件名的新格式 - else if(typeof audioInfo=="object"&&"type" in audioInfo&&audioInfo.type=="direct"&&"files" in audioInfo){ + else if(typeof audioInfo=="object"){ + if(!("type" in audioInfo&&audioInfo.type=="direct"&&"files" in audioInfo)) return; let audioFiles=audioInfo.files; if(typeof audioFiles!="object") return; if(!Array.isArray(audioFiles)){ From 44ec5e169348859e6dff94c878e20ba26125107a Mon Sep 17 00:00:00 2001 From: Rintim Date: Sun, 8 Oct 2023 13:14:37 +0800 Subject: [PATCH 5/5] docs: add not-compelete todo. --- game/game.js | 1 + 1 file changed, 1 insertion(+) diff --git a/game/game.js b/game/game.js index 77e642085..8e1ecbc53 100644 --- a/game/game.js +++ b/game/game.js @@ -35040,6 +35040,7 @@ if(Array.isArray(audioInfo)){ audioName=audioInfo[0]; if(!fixedNum) fixedNum=audioInfo[1];//数组会取第一个指定语音数 + // TODO: 判断不完整,但现在无合适的方法,先放着 @kuangshen04 if(audioName in lib.skill) audioInfo=lib.skill[audioName].audio; else audioInfo=parseInt(fixedNum); continue;