round3: G1 gd_answer提前一小节(根因=排程压窗起点) + G2教学降难DDA + G3 count-in修复(根因=未重排调度队列) + G4 escape目标链 + G5 simon双击根治(重听改上滑,重录3句) + G6轮成功/破纪录 + G7 space方向呼喊 + 22语音文件 + guide93断言全绿
This commit is contained in:
@@ -135,9 +135,12 @@ export function installMock(gameDir) {
|
||||
};
|
||||
}
|
||||
createScriptProcessor() { return { connect() {}, disconnect() {}, onaudioprocess: null }; }
|
||||
decodeAudioData() {
|
||||
decodeAudioData(ab) {
|
||||
// 时长按这块 buffer 自己的 url 估算(round3 修复:原来读 lastFetched——
|
||||
// prewarm 与 play 并发 fetch 时 voice 会随机继承 bgm 的 90s 时长,语音
|
||||
// 结束定时器形同虚设、链全靠兜底看门狗推进,tap 也会被"仍在播"的语音吃掉)
|
||||
return Promise.resolve({
|
||||
duration: estimateDuration(gameName, lastFetched),
|
||||
duration: estimateDuration(gameName, ab && ab.__url),
|
||||
numberOfChannels: 1, sampleRate: 44100,
|
||||
getChannelData: () => new Float32Array(16),
|
||||
});
|
||||
@@ -167,9 +170,11 @@ export function installMock(gameDir) {
|
||||
}
|
||||
const data = fs.readFileSync(p);
|
||||
fetchedLog.push({ url: s, ok: true });
|
||||
const ab = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
||||
ab.__url = s; // 供 decodeAudioData 按自身 url 估时长(见上)
|
||||
return {
|
||||
ok: true, status: 200,
|
||||
arrayBuffer: async () => data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength),
|
||||
arrayBuffer: async () => ab,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user