danoniplus 41.4.11 → 41.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +10 -10
- package/package.json +1 -1
package/js/danoni_main.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 41.4.
|
|
11
|
+
const g_version = `Ver 41.4.12`;
|
|
12
12
|
const g_revisedDate = `2025/12/30`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -115,6 +115,9 @@ const waitUntilLoaded = () => {
|
|
|
115
115
|
// fps(デフォルトは60)
|
|
116
116
|
let g_fps = 60;
|
|
117
117
|
|
|
118
|
+
// プレイ画面再生時の内部スケジューリング用のマージン時間(100ms)
|
|
119
|
+
let g_scheduleLead = 0.1;
|
|
120
|
+
|
|
118
121
|
// 譜面データの&区切りを有効にするか
|
|
119
122
|
let g_enableAmpersandSplit = true;
|
|
120
123
|
|
|
@@ -2320,9 +2323,9 @@ class AudioPlayer {
|
|
|
2320
2323
|
/**
|
|
2321
2324
|
* 再生処理
|
|
2322
2325
|
* @param {number} _adjustmentTime
|
|
2323
|
-
* - 実際の再生開始時間は、
|
|
2326
|
+
* - 実際の再生開始時間は、g_scheduleLead + _adjustmentTime から開始される
|
|
2324
2327
|
* - ただしゲーム内での経過時間計算は _adjustmentTime を基準に行う
|
|
2325
|
-
* -
|
|
2328
|
+
* - g_scheduleLead は安定した再生タイミングを確保するための内部マージン
|
|
2326
2329
|
*/
|
|
2327
2330
|
play(_adjustmentTime = 0) {
|
|
2328
2331
|
this._source = this._context.createBufferSource();
|
|
@@ -2330,14 +2333,11 @@ class AudioPlayer {
|
|
|
2330
2333
|
this._source.playbackRate.value = this.playbackRate;
|
|
2331
2334
|
this._source.connect(this._gain);
|
|
2332
2335
|
|
|
2333
|
-
// 内部スケジューリング用のマージン時間(100ms)
|
|
2334
|
-
const scheduleLead = 0.1;
|
|
2335
|
-
|
|
2336
2336
|
// 実際の予約時刻(内部スケジューリング用のマージンを含む)
|
|
2337
|
-
const startAt = this._context.currentTime +
|
|
2337
|
+
const startAt = this._context.currentTime + g_scheduleLead + _adjustmentTime;
|
|
2338
2338
|
this._source.start(startAt, this._fadeinPosition);
|
|
2339
2339
|
|
|
2340
|
-
// ゲーム側の論理的開始時刻(
|
|
2340
|
+
// ゲーム側の論理的開始時刻(g_scheduleLead を含めない)
|
|
2341
2341
|
this._startTime = this._context.currentTime + _adjustmentTime;
|
|
2342
2342
|
}
|
|
2343
2343
|
|
|
@@ -11517,7 +11517,7 @@ const mainInit = () => {
|
|
|
11517
11517
|
mainSpriteJ.appendChild(createColorObject2(`filterBar${j % 2 == 0 ? j + 1 : j - 1}_HS`, g_lblPosObj.filterBar, filterCss));
|
|
11518
11518
|
}
|
|
11519
11519
|
addTransform(`mainSprite${j}`, `mainSprite${j}`,
|
|
11520
|
-
|
|
11520
|
+
g_keyObj[`layerTrans${keyCtrlPtn}`]?.[0]?.[Math.floor(j / 2) * 2 + (j + Number(g_stateObj.reverse === C_FLG_ON)) % 2]);
|
|
11521
11521
|
|
|
11522
11522
|
stepSprite.push(createEmptySprite(mainSpriteJ, `stepSprite${j}`, mainCommonPos));
|
|
11523
11523
|
arrowSprite.push(createEmptySprite(mainSpriteJ, `arrowSprite${j}`, Object.assign({ y: g_workObj.hitPosition * (j % 2 === 0 ? 1 : -1) }, mainCommonPos)));
|
|
@@ -12780,7 +12780,7 @@ const mainInit = () => {
|
|
|
12780
12780
|
// WebAudioAPIが使用できる場合は小数フレーム分だけ音源位置を調整
|
|
12781
12781
|
if (g_audio instanceof AudioPlayer) {
|
|
12782
12782
|
const musicStartAdjustment = (g_headerObj.blankFrame - g_stateObj.decimalAdjustment + 1) / g_fps;
|
|
12783
|
-
musicStartTime = performance.now() + musicStartAdjustment * 1000;
|
|
12783
|
+
musicStartTime = performance.now() + (musicStartAdjustment + g_scheduleLead) * 1000;
|
|
12784
12784
|
g_audio.play(musicStartAdjustment);
|
|
12785
12785
|
}
|
|
12786
12786
|
|