danoniplus 48.4.2 → 48.5.0
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 +66 -24
- package/js/lib/danoni_constants.js +21 -1
- package/package.json +1 -1
package/js/danoni_main.js
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Source by tickle
|
|
6
6
|
* Created : 2018/10/08
|
|
7
|
-
* Revised : 2026/06/
|
|
7
|
+
* Revised : 2026/06/14
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 48.
|
|
12
|
-
const g_revisedDate = `2026/06/
|
|
11
|
+
const g_version = `Ver 48.5.0`;
|
|
12
|
+
const g_revisedDate = `2026/06/14`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -2763,6 +2763,10 @@ const initialControl = async () => {
|
|
|
2763
2763
|
.sort((a, b) => parseInt(a) - parseInt(b));
|
|
2764
2764
|
}
|
|
2765
2765
|
|
|
2766
|
+
// ラベルテキスト、オンマウステキスト、確認メッセージ定義の上書き設定
|
|
2767
|
+
Object.assign(g_lblNameObj, g_lang_lblNameObj[g_localeObj.val], g_presetObj.lblName?.[g_localeObj.val]);
|
|
2768
|
+
Object.assign(g_msgObj, g_lang_msgObj[g_localeObj.val], g_presetObj.msg?.[g_localeObj.val]);
|
|
2769
|
+
|
|
2766
2770
|
// デフォルトのカラー・シャッフルグループ設定を退避
|
|
2767
2771
|
g_keycons.groups.forEach(type =>
|
|
2768
2772
|
Object.keys(g_keyObj).filter(val => val.startsWith(type))
|
|
@@ -3933,10 +3937,6 @@ const headerConvert = _dosObj => {
|
|
|
3933
3937
|
g_imgObj.titleArrow = C_IMG_ARROW;
|
|
3934
3938
|
}
|
|
3935
3939
|
|
|
3936
|
-
// ラベルテキスト、オンマウステキスト、確認メッセージ定義の上書き設定
|
|
3937
|
-
Object.assign(g_lblNameObj, g_lang_lblNameObj[g_localeObj.val], g_presetObj.lblName?.[g_localeObj.val]);
|
|
3938
|
-
Object.assign(g_msgObj, g_lang_msgObj[g_localeObj.val], g_presetObj.msg?.[g_localeObj.val]);
|
|
3939
|
-
|
|
3940
3940
|
// 自動横幅拡張設定
|
|
3941
3941
|
obj.autoSpread = setBoolVal(_dosObj.autoSpread, g_presetObj.autoSpread ?? true);
|
|
3942
3942
|
|
|
@@ -5447,6 +5447,10 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
5447
5447
|
// 位置マニュアル化 (initManualX)
|
|
5448
5448
|
g_keyObj[`initManual${newKey}`] = setBoolVal(_dosObj[`initManual${newKey}`] ?? g_keyObj[`initManual${newKey}`], false);
|
|
5449
5449
|
|
|
5450
|
+
// カスタムキーの説明ページ(keyHelpJaX / keyHelpEnX)
|
|
5451
|
+
Object.keys(g_lang_lblNameObj).forEach(lang =>
|
|
5452
|
+
g_lang_lblNameObj[lang][`keyHelp${newKey}`] = _dosObj[`keyHelp${lang}${newKey}`] ?? _dosObj[`keyHelp${newKey}`] ?? ``);
|
|
5453
|
+
|
|
5450
5454
|
// キーコンフィグ (keyCtrlX_Y)
|
|
5451
5455
|
g_keyObj.minPatterns = newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, {
|
|
5452
5456
|
errCd: `E_0104`, baseCopyFlg: true,
|
|
@@ -8013,6 +8017,10 @@ const setDifficulty = (_initFlg) => {
|
|
|
8013
8017
|
}
|
|
8014
8018
|
// 特殊キーフラグ
|
|
8015
8019
|
g_stateObj.extraKeyFlg = g_headerObj.keyExtraList.includes(g_keyObj.currentKey);
|
|
8020
|
+
btnKeymodeHelp.style.display = (
|
|
8021
|
+
g_keyObj.defaultKeyList.includes(g_keyObj.currentKey) || g_lblNameObj[`keyHelp${g_keyObj.currentKey}`]
|
|
8022
|
+
? `` : C_DIS_NONE
|
|
8023
|
+
);
|
|
8016
8024
|
|
|
8017
8025
|
// ---------------------------------------------------
|
|
8018
8026
|
// 2. 初期化設定
|
|
@@ -8225,8 +8233,15 @@ const createOptionWindow = _sprite => {
|
|
|
8225
8233
|
);
|
|
8226
8234
|
createScText(spriteList.difficulty, `Difficulty`);
|
|
8227
8235
|
if (g_headerObj.difSelectorUse) {
|
|
8228
|
-
createScText(spriteList.difficulty, `DifficultyList`, { x:
|
|
8236
|
+
createScText(spriteList.difficulty, `DifficultyList`, { x: 154, y: -10, targetLabel: `lnkDifficulty` });
|
|
8229
8237
|
}
|
|
8238
|
+
multiAppend(difficultySprite,
|
|
8239
|
+
createCss2Button(`btnKeymodeHelp`, `?`, () => {
|
|
8240
|
+
openLink(g_keyObj.defaultKeyList.includes(g_keyObj.currentKey)
|
|
8241
|
+
? g_lblNameObj.keymodeUrl + g_keyObj.currentKey
|
|
8242
|
+
: g_lblNameObj[`keyHelp${g_keyObj.currentKey}`]);
|
|
8243
|
+
}, g_lblPosObj.btnKeymodeHelp, g_cssObj.button_Setting),
|
|
8244
|
+
)
|
|
8230
8245
|
|
|
8231
8246
|
// ---------------------------------------------------
|
|
8232
8247
|
// ハイスコア機能実装時に使用予定のスペース
|
|
@@ -8462,13 +8477,19 @@ const createOptionWindow = _sprite => {
|
|
|
8462
8477
|
|
|
8463
8478
|
const viewAdjustment = () => {
|
|
8464
8479
|
if (g_headerObj.playbackRate !== 1) {
|
|
8465
|
-
const adjustmentVal = isLocalMusicFile(g_stateObj.scoreId)
|
|
8466
|
-
Math.round(g_stateObj.adjustment / g_headerObj.playbackRate)
|
|
8467
|
-
(g_stateObj.adjustment / g_headerObj.playbackRate).toFixed(1);
|
|
8468
|
-
document.getElementById(`lnkAdjustment`).
|
|
8469
|
-
|
|
8470
|
-
|
|
8471
|
-
|
|
8480
|
+
const adjustmentVal = isLocalMusicFile(g_stateObj.scoreId)
|
|
8481
|
+
? Math.round(g_stateObj.adjustment / g_headerObj.playbackRate)
|
|
8482
|
+
: (g_stateObj.adjustment / g_headerObj.playbackRate).toFixed(1);
|
|
8483
|
+
document.getElementById(`lnkAdjustment`).textContent = ``;
|
|
8484
|
+
if (document.getElementById(`lnkAdjustment1`) === null) {
|
|
8485
|
+
multiAppend(
|
|
8486
|
+
adjustmentSprite,
|
|
8487
|
+
createDivCss2Label(`lnkAdjustment1`, ``, g_lblPosObj.lnkAdjustment1),
|
|
8488
|
+
createDivCss2Label(`lnkAdjustment2`, ``, g_lblPosObj.lnkAdjustment2),
|
|
8489
|
+
);
|
|
8490
|
+
}
|
|
8491
|
+
document.getElementById(`lnkAdjustment1`).textContent = `${adjustmentVal}${g_lblNameObj.frame}`;
|
|
8492
|
+
document.getElementById(`lnkAdjustment2`).textContent = `(${g_stateObj.adjustment.toFixed(1)}${g_localStorage.adjustment === g_stateObj.adjustment ? '*' : ''})`;
|
|
8472
8493
|
}
|
|
8473
8494
|
};
|
|
8474
8495
|
viewAdjustment();
|
|
@@ -10628,7 +10649,7 @@ const keyConfigInit = (_kcType = g_kcType, _initFlg = false) => {
|
|
|
10628
10649
|
* ColorPicker(一式)の切替
|
|
10629
10650
|
*/
|
|
10630
10651
|
const changeColorPickers = () => {
|
|
10631
|
-
lnkColorR.
|
|
10652
|
+
lnkColorR.textContent = `[${g_keycons.colorCursorNum + 1} /`;
|
|
10632
10653
|
for (let j = 0; j < g_limitObj.kcColorPickerNum; j++) {
|
|
10633
10654
|
const m = getGroupNum(j);
|
|
10634
10655
|
changeColorPicker(j, `arrow`, g_headerObj.setColor[m]);
|
|
@@ -16282,23 +16303,41 @@ const judgeArrow = _j => {
|
|
|
16282
16303
|
* @param {number} _justFrames Fast/Slowの表示条件フレーム数
|
|
16283
16304
|
*/
|
|
16284
16305
|
const displayDiff = (_difFrame, _fjdg = ``, _justFrames = g_headerObj.justFrames) => {
|
|
16285
|
-
let diffJDisp = ``;
|
|
16286
16306
|
g_workObj.diffList.push(_difFrame);
|
|
16307
|
+
|
|
16287
16308
|
const difCnt = Math.abs(_difFrame);
|
|
16309
|
+
const diffJ = document.getElementById(`diff${_fjdg}J`);
|
|
16310
|
+
|
|
16311
|
+
let text = ``;
|
|
16312
|
+
let activeClass = ``;
|
|
16313
|
+
|
|
16314
|
+
// 1. 各条件の処理
|
|
16288
16315
|
if (_difFrame > g_judgObj.arrowJ[g_judgPosObj.shobon]) {
|
|
16289
|
-
|
|
16316
|
+
text = `Excessive`;
|
|
16317
|
+
activeClass = g_cssObj.common_Excessive;
|
|
16290
16318
|
g_resultObj.excessive++;
|
|
16291
16319
|
lifeDamage(true);
|
|
16320
|
+
|
|
16292
16321
|
} else if (_difFrame > _justFrames) {
|
|
16293
|
-
|
|
16322
|
+
text = `Fast ${difCnt} Frames`;
|
|
16323
|
+
activeClass = g_cssObj.common_diffFast;
|
|
16294
16324
|
g_resultObj.fast++;
|
|
16295
16325
|
quickRetry(`Fast/Slow`);
|
|
16296
|
-
|
|
16297
|
-
|
|
16326
|
+
|
|
16327
|
+
} else if (_difFrame < _justFrames * -1) {
|
|
16328
|
+
text = `Slow ${difCnt} Frames`;
|
|
16329
|
+
activeClass = g_cssObj.common_diffSlow;
|
|
16298
16330
|
g_resultObj.slow++;
|
|
16299
16331
|
quickRetry(`Fast/Slow`);
|
|
16332
|
+
|
|
16333
|
+
}
|
|
16334
|
+
|
|
16335
|
+
// 2. DOMへの反映
|
|
16336
|
+
diffJ.textContent = text;
|
|
16337
|
+
diffJ.classList.value = ``;
|
|
16338
|
+
if (activeClass) {
|
|
16339
|
+
diffJ.classList.add(activeClass);
|
|
16300
16340
|
}
|
|
16301
|
-
document.getElementById(`diff${_fjdg}J`).innerHTML = diffJDisp;
|
|
16302
16341
|
};
|
|
16303
16342
|
|
|
16304
16343
|
/**
|
|
@@ -16368,8 +16407,11 @@ const lifeDamage = (_excessive = false) => {
|
|
|
16368
16407
|
const changeJudgeCharacter = (_name, _character, _fjdg = ``) => {
|
|
16369
16408
|
g_resultObj[_name]++;
|
|
16370
16409
|
g_currentArrows++;
|
|
16371
|
-
document.getElementById(`chara${_fjdg}J`)
|
|
16372
|
-
|
|
16410
|
+
const jdgJ = document.getElementById(`chara${_fjdg}J`);
|
|
16411
|
+
jdgJ.classList.value = ``;
|
|
16412
|
+
jdgJ.classList.add(g_cssObj[`common_${_name}`]);
|
|
16413
|
+
jdgJ.textContent = _character;
|
|
16414
|
+
jdgJ.setAttribute(`cnt`, C_FRM_JDGMOTION);
|
|
16373
16415
|
document.getElementById(`lbl${toCapitalize(_name)}`).textContent = g_resultObj[_name];
|
|
16374
16416
|
};
|
|
16375
16417
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/06/
|
|
8
|
+
* Revised : 2026/06/14 (v48.5.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -424,6 +424,10 @@ const updateWindowSiz = () => {
|
|
|
424
424
|
x: 70, y: 65, w: g_btnWidth() - 120, h: 20, siz: 12, align: C_ALIGN_LEFT,
|
|
425
425
|
},
|
|
426
426
|
|
|
427
|
+
btnKeymodeHelp: {
|
|
428
|
+
x: 150, y: -10, w: 15, h: 30, siz: 16, title: g_msgObj.keymodeHelp,
|
|
429
|
+
border: `solid 1px #666666`, borderRadius: 5,
|
|
430
|
+
},
|
|
427
431
|
lblMusicInfo: {
|
|
428
432
|
x: g_btnX(1 / 4), y: 0, w: g_btnWidth(3 / 4), h: 20, align: C_ALIGN_RIGHT
|
|
429
433
|
},
|
|
@@ -449,6 +453,14 @@ const updateWindowSiz = () => {
|
|
|
449
453
|
lblFadeinBar: {
|
|
450
454
|
x: g_limitObj.setLblLeft, y: 0, type: `range`,
|
|
451
455
|
},
|
|
456
|
+
lnkAdjustment1: {
|
|
457
|
+
x: g_limitObj.setLblLeft, y: -3, w: g_limitObj.setLblWidth, h: g_limitObj.setLblHeight,
|
|
458
|
+
siz: g_limitObj.adjustmentViewSiz,
|
|
459
|
+
},
|
|
460
|
+
lnkAdjustment2: {
|
|
461
|
+
x: g_limitObj.setLblLeft, y: 10, w: g_limitObj.setLblWidth, h: g_limitObj.setLblHeight,
|
|
462
|
+
siz: g_limitObj.adjustmentViewOrgSiz,
|
|
463
|
+
},
|
|
452
464
|
|
|
453
465
|
/** 設定: 譜面明細子画面 */
|
|
454
466
|
lblTooldif: {
|
|
@@ -2717,6 +2729,8 @@ const g_shortcutObj = {
|
|
|
2717
2729
|
ShiftLeft_KeyD: { id: `lnkDifficultyL` },
|
|
2718
2730
|
ShiftRight_KeyD: { id: `lnkDifficultyL` },
|
|
2719
2731
|
KeyD: { id: `lnkDifficultyR` },
|
|
2732
|
+
Slash: { id: `btnKeymodeHelp`, reset: true },
|
|
2733
|
+
F1: { id: `btnKeymodeHelp`, reset: true },
|
|
2720
2734
|
|
|
2721
2735
|
ShiftLeft_ArrowRight: { id: `lnkSpeedR` },
|
|
2722
2736
|
ShiftRight_ArrowRight: { id: `lnkSpeedR` },
|
|
@@ -4860,6 +4874,7 @@ const g_lang_lblNameObj = {
|
|
|
4860
4874
|
|
|
4861
4875
|
helpUrl: `https://github.com/cwtickle/danoniplus/wiki/AboutGameSystem`,
|
|
4862
4876
|
securityUrl: `https://github.com/cwtickle/danoniplus/security/policy`,
|
|
4877
|
+
keymodeUrl: `https://github.com/cwtickle/danoniplus/wiki/Keys-`,
|
|
4863
4878
|
},
|
|
4864
4879
|
En: {
|
|
4865
4880
|
dataDeleteOFFDesc: `Select the type of data you wish to delete and press "Reset".`,
|
|
@@ -4922,6 +4937,7 @@ const g_lang_lblNameObj = {
|
|
|
4922
4937
|
|
|
4923
4938
|
helpUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/AboutGameSystem`,
|
|
4924
4939
|
securityUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/SecurityPolicy`,
|
|
4940
|
+
keymodeUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/Keys-`,
|
|
4925
4941
|
},
|
|
4926
4942
|
};
|
|
4927
4943
|
|
|
@@ -4972,6 +4988,8 @@ const g_lang_msgObj = {
|
|
|
4972
4988
|
fadein: `譜面を途中から再生します。\n途中から開始した場合はハイスコアを保存しません。`,
|
|
4973
4989
|
volume: `ゲーム内の音量を設定します。`,
|
|
4974
4990
|
|
|
4991
|
+
keymodeHelp: `現在選択中の譜面のキータイプの説明ページへリンクします(外部リンク)`,
|
|
4992
|
+
|
|
4975
4993
|
graph: `譜面密度や速度変化状況、\n譜面の難易度などの情報を表示します。`,
|
|
4976
4994
|
dataSave: `ハイスコア、リバース設定、\nキーコンフィグの保存の有無を設定します。`,
|
|
4977
4995
|
toDisplay: `プレイ画面上のオブジェクトの\n表示・非表示(一部透明度)を設定します。`,
|
|
@@ -5078,6 +5096,8 @@ const g_lang_msgObj = {
|
|
|
5078
5096
|
fadein: `Plays the chart from the middle.\nIf you start in the middle, the high score will not be saved.`,
|
|
5079
5097
|
volume: `Set the in-game volume.`,
|
|
5080
5098
|
|
|
5099
|
+
keymodeHelp: `Go to the explanation page for the key type of the currently selected chart (External Link).`,
|
|
5100
|
+
|
|
5081
5101
|
graph: `Displays detailed information about the chart, such as chart's density status, sequences' velocity changes, and chart's difficulty.`,
|
|
5082
5102
|
dataSave: `Set whether to save the high score, reverse setting, and key config.`,
|
|
5083
5103
|
toDisplay: `Set the display or non-display (partial transparency) of objects on the play screen.`,
|