danoniplus 46.0.1 → 46.1.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 +46 -20
- package/js/lib/danoni_constants.js +7 -6
- 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/03/
|
|
7
|
+
* Revised : 2026/03/15
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 46.0
|
|
12
|
-
const g_revisedDate = `2026/03/
|
|
11
|
+
const g_version = `Ver 46.1.0`;
|
|
12
|
+
const g_revisedDate = `2026/03/15`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -4682,6 +4682,24 @@ const getKeyName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`]?.[
|
|
|
4682
4682
|
*/
|
|
4683
4683
|
const getKeyUnitName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`]?.[1] ?? `key`));
|
|
4684
4684
|
|
|
4685
|
+
/**
|
|
4686
|
+
* シャッフル名の取得
|
|
4687
|
+
* @returns {string}
|
|
4688
|
+
*/
|
|
4689
|
+
const getShuffleName = () => {
|
|
4690
|
+
const orgShuffleFlg = getOrgShuffleFlg();
|
|
4691
|
+
return `${getStgDetailName(g_stateObj.shuffle)}${!orgShuffleFlg && !g_stateObj.shuffle.endsWith(`+`) ? getStgDetailName('(S)') : ''}`;
|
|
4692
|
+
};
|
|
4693
|
+
|
|
4694
|
+
/**
|
|
4695
|
+
* シャッフルカスタムフラグの取得
|
|
4696
|
+
* @returns {boolean}
|
|
4697
|
+
*/
|
|
4698
|
+
const getOrgShuffleFlg = () => {
|
|
4699
|
+
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
4700
|
+
return g_keyObj[`shuffle${keyCtrlPtn}`].filter((shuffleGr, j) => shuffleGr !== g_keyObj[`shuffle${keyCtrlPtn}_0d`][j]).length === 0;
|
|
4701
|
+
};
|
|
4702
|
+
|
|
4685
4703
|
/**
|
|
4686
4704
|
* 別キーモード時の表示名の取得
|
|
4687
4705
|
* @param {boolean} _spaceFlg
|
|
@@ -6553,10 +6571,8 @@ const visibleSettingSummary = _visible => {
|
|
|
6553
6571
|
|
|
6554
6572
|
const updateSettingSummary = () => {
|
|
6555
6573
|
if (document.getElementById(`settingSumSprite`) === null) return;
|
|
6556
|
-
const
|
|
6557
|
-
const
|
|
6558
|
-
const shuffleName = `${getStgDetailName(g_stateObj.shuffle)}${!orgShuffleFlg && !g_stateObj.shuffle.endsWith(`+`) ? getStgDetailName('(S)') : ''}`;
|
|
6559
|
-
const settingData = getSelectedSettingList(shuffleName);
|
|
6574
|
+
const orgShuffleFlg = getOrgShuffleFlg();
|
|
6575
|
+
const settingData = getSelectedSettingList(orgShuffleFlg);
|
|
6560
6576
|
const estimatedHighscoreCondition = g_stateObj.dataSaveFlg && (g_stateObj.autoPlay !== C_FLG_ALL && g_headerObj.playbackRate === 1 && g_stateObj.fadein < 10 &&
|
|
6561
6577
|
(g_stateObj.shuffle === C_FLG_OFF || (g_stateObj.shuffle.endsWith(`Mirror`) && orgShuffleFlg)));
|
|
6562
6578
|
|
|
@@ -11785,6 +11801,7 @@ const getArrowSettings = () => {
|
|
|
11785
11801
|
// 各種初期化
|
|
11786
11802
|
// g_workObj.frzArrowInitRtnはフリーズアロー(初期表示)としての利用に限定
|
|
11787
11803
|
g_workObj.stepX = [];
|
|
11804
|
+
g_workObj.stepX_df = [];
|
|
11788
11805
|
g_workObj.scrollDir = [];
|
|
11789
11806
|
g_workObj.scrollDirDefault = [];
|
|
11790
11807
|
g_workObj.dividePos = [];
|
|
@@ -11877,7 +11894,12 @@ const getArrowSettings = () => {
|
|
|
11877
11894
|
|
|
11878
11895
|
const posj = g_keyObj[`pos${keyCtrlPtn}`][j];
|
|
11879
11896
|
const colorj = g_keyObj[`color${keyCtrlPtn}`][j];
|
|
11880
|
-
|
|
11897
|
+
let stdPos = posj - ((posj > divideCnt ? posMax : 0) + divideCnt) / 2;
|
|
11898
|
+
|
|
11899
|
+
if (g_stateObj.swapping === `Mirror+`) {
|
|
11900
|
+
g_workObj.stepX_df[j] = g_keyObj.blank * stdPos + (g_headerObj.playingWidth - C_ARW_WIDTH) / 2;
|
|
11901
|
+
stdPos = -stdPos;
|
|
11902
|
+
}
|
|
11881
11903
|
|
|
11882
11904
|
g_workObj.stepX[j] = g_keyObj.blank * stdPos + (g_headerObj.playingWidth - C_ARW_WIDTH) / 2;
|
|
11883
11905
|
const baseLayer = g_keyObj[`layerGroup${keyCtrlPtn}`]?.[j] || 0;
|
|
@@ -11999,7 +12021,11 @@ const getArrowSettings = () => {
|
|
|
11999
12021
|
g_workObj.playingX = g_headerObj.playingX + g_workObj.backX;
|
|
12000
12022
|
|
|
12001
12023
|
// Swapping設定に応じたステップゾーンの入れ替え
|
|
12002
|
-
|
|
12024
|
+
// Mirror+のみ事前にオリジナルの位置を設定済みのためスキップする
|
|
12025
|
+
if (g_workObj.stepX_df.length === 0) {
|
|
12026
|
+
g_workObj.stepX_df = structuredClone(g_workObj.stepX);
|
|
12027
|
+
}
|
|
12028
|
+
if (g_stateObj.swapping.endsWith(`Mirror`)) {
|
|
12003
12029
|
|
|
12004
12030
|
let _style = structuredClone(Object.values(g_workObj.shuffleGroupMap));
|
|
12005
12031
|
if (g_stateObj.swapping === `Mirror`) {
|
|
@@ -12011,7 +12037,6 @@ const getArrowSettings = () => {
|
|
|
12011
12037
|
}
|
|
12012
12038
|
|
|
12013
12039
|
// 入れ替えた結果に合わせてX座標位置を入れ替える
|
|
12014
|
-
g_workObj.stepX_df = structuredClone(g_workObj.stepX);
|
|
12015
12040
|
_style.forEach((_group, _i) => {
|
|
12016
12041
|
_group.forEach((_val, _j) => {
|
|
12017
12042
|
g_workObj.stepX[_group[_j]] = g_workObj.stepX_df[g_workObj.shuffleGroupMap[_i][_j]];
|
|
@@ -12427,7 +12452,7 @@ const mainInit = () => {
|
|
|
12427
12452
|
const musicTitle = (g_headerObj.musicTitles[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.musicTitle) + playbackView;
|
|
12428
12453
|
const artistName = g_headerObj.artistNames[g_headerObj.musicNos[g_stateObj.scoreId]] || g_headerObj.artistName;
|
|
12429
12454
|
const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`);
|
|
12430
|
-
const shuffleName = (g_stateObj.shuffle !== C_FLG_OFF ? `: ${
|
|
12455
|
+
const shuffleName = (g_stateObj.shuffle !== C_FLG_OFF ? `: ${getShuffleName()}` : ``);
|
|
12431
12456
|
|
|
12432
12457
|
// 曲名・アーティスト名、譜面名のサイズ調整
|
|
12433
12458
|
const checkMusicSiz = (_text, _siz) => getFontSize2(_text, g_headerObj.playingWidth - g_headerObj.customViewWidth - 125, { maxSiz: _siz });
|
|
@@ -13656,7 +13681,8 @@ const makeStepZone = (_j, _keyCtrlPtn) => {
|
|
|
13656
13681
|
// 本体
|
|
13657
13682
|
createColorObject2(`step${_j}`, {
|
|
13658
13683
|
rotate: g_workObj.stepRtn[_j], styleName: `Step`, display: g_workObj.stepZoneDisp,
|
|
13659
|
-
}, g_cssObj.
|
|
13684
|
+
}, g_cssObj[`main_step${g_workObj.stepX[_j] === g_workObj.stepX_df[_j] ? 'Default'
|
|
13685
|
+
: g_stateObj.swapping === 'Mirror+' ? 'Shobon' : 'Matari'}`]),
|
|
13660
13686
|
|
|
13661
13687
|
// 空押し
|
|
13662
13688
|
createColorObject2(`stepDiv${_j}`, {
|
|
@@ -14610,11 +14636,10 @@ const resultInit = () => {
|
|
|
14610
14636
|
mTitleForView[j] = g_headerObj.musicTitlesForView[g_headerObj.musicNos[g_stateObj.scoreId]][j] + (j === 1 ? playbackView : ``));
|
|
14611
14637
|
}
|
|
14612
14638
|
|
|
14613
|
-
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
14614
14639
|
const transKeyName = getTransKeyName();
|
|
14615
|
-
const orgShuffleFlg =
|
|
14616
|
-
const shuffleName =
|
|
14617
|
-
const settingData = getSelectedSettingList(
|
|
14640
|
+
const orgShuffleFlg = getOrgShuffleFlg();
|
|
14641
|
+
const shuffleName = getShuffleName();
|
|
14642
|
+
const settingData = getSelectedSettingList(orgShuffleFlg);
|
|
14618
14643
|
|
|
14619
14644
|
const [lblRX, dataRX] = [20, 60];
|
|
14620
14645
|
multiAppend(playDataWindow,
|
|
@@ -15297,10 +15322,10 @@ const resultInit = () => {
|
|
|
15297
15322
|
|
|
15298
15323
|
/**
|
|
15299
15324
|
* 選択した設定の情報を取得
|
|
15300
|
-
* @param {
|
|
15325
|
+
* @param {boolean} _orgShuffleFlg
|
|
15301
15326
|
* @returns {object}
|
|
15302
15327
|
*/
|
|
15303
|
-
const getSelectedSettingList = (
|
|
15328
|
+
const getSelectedSettingList = (_orgShuffleFlg) => {
|
|
15304
15329
|
|
|
15305
15330
|
const transKeyName = getTransKeyName();
|
|
15306
15331
|
/**
|
|
@@ -15323,7 +15348,7 @@ const getSelectedSettingList = (_shuffleName) => {
|
|
|
15323
15348
|
`${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName} ${keyUnitName} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`,
|
|
15324
15349
|
`${withOptions(g_autoPlaysBase.includes(g_stateObj.autoPlay), true, `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`)}`,
|
|
15325
15350
|
`${withOptions(g_headerObj.makerView, false, `(${g_headerObj.creatorNames[g_stateObj.scoreId]})`)}`,
|
|
15326
|
-
`${withOptions(g_stateObj.shuffle, C_FLG_OFF, `[${
|
|
15351
|
+
`${withOptions(g_stateObj.shuffle, C_FLG_OFF, `[${getShuffleName()}]`)}`
|
|
15327
15352
|
];
|
|
15328
15353
|
let difData = difDatas.filter(value => value !== ``).join(` `);
|
|
15329
15354
|
const difDataForImage = difDatas.filter((value, j) => value !== `` && j !== 2).join(` `);
|
|
@@ -15349,7 +15374,8 @@ const getSelectedSettingList = (_shuffleName) => {
|
|
|
15349
15374
|
withOptions(g_stateObj.camoufrageType, C_FLG_HYPHEN,
|
|
15350
15375
|
`${g_stateObj.camoufrage !== C_FLG_OFF ? '' : 'Cmf:'}${getStgDetailName(g_stateObj.camoufrageType)}`)
|
|
15351
15376
|
].filter(value => value !== ``).join(`+`),
|
|
15352
|
-
withOptions(g_stateObj.swapping, C_FLG_OFF,
|
|
15377
|
+
withOptions(g_stateObj.swapping, C_FLG_OFF,
|
|
15378
|
+
`Swap:${getStgDetailName(g_stateObj.swapping)}${!_orgShuffleFlg && !g_stateObj.swapping.endsWith(`+`) ? getStgDetailName(`(S)`) : ``}`),
|
|
15353
15379
|
withOptions(g_stateObj.judgRange, `Normal`, `Judg:${getStgDetailName(g_stateObj.judgRange)}`),
|
|
15354
15380
|
].filter(value => value !== ``).join(`, `);
|
|
15355
15381
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/03/
|
|
8
|
+
* Revised : 2026/03/15 (v46.1.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1367,7 +1367,7 @@ const g_settings = {
|
|
|
1367
1367
|
camoufrageTypes: [C_FLG_HYPHEN, `FrzArrow`],
|
|
1368
1368
|
camoufrageTypeNum: 0,
|
|
1369
1369
|
|
|
1370
|
-
swappings: [C_FLG_OFF, `Mirror`, `X-Mirror`],
|
|
1370
|
+
swappings: [C_FLG_OFF, `Mirror`, `X-Mirror`, `Mirror+`],
|
|
1371
1371
|
swappingNum: 0,
|
|
1372
1372
|
|
|
1373
1373
|
judgRanges: [`Normal`, `Narrow`, `Hard`, `ExHard`],
|
|
@@ -4461,6 +4461,7 @@ const g_lblNameObj = {
|
|
|
4461
4461
|
'u_Random+': `Random+`,
|
|
4462
4462
|
'u_S-Random': `S-Random`,
|
|
4463
4463
|
'u_S-Random+': `S-Random+`,
|
|
4464
|
+
'u_Mirror+': `Mirror+`,
|
|
4464
4465
|
'u_(S)': `(S)`,
|
|
4465
4466
|
|
|
4466
4467
|
'u_ALL': `ALL`,
|
|
@@ -4749,7 +4750,7 @@ const g_lang_msgObj = {
|
|
|
4749
4750
|
scroll: `各レーンのスクロール方向をパターンに沿って設定します。\nReverse:ONでスクロール方向を反転します。`,
|
|
4750
4751
|
shuffle: `譜面を左右反転したり、ランダムにします。\nランダムにした場合は別譜面扱いとなり、ハイスコアは保存されません。`,
|
|
4751
4752
|
autoPlay: `オートプレイや一部キーを自動で打たせる設定を行います。\nオートプレイ時はハイスコアを保存しません。`,
|
|
4752
|
-
gauge: `クリア条件を設定します。\n[Start] ゲージ初期値, [Border] クリア条件(ハイフン時は0),\n[Recovery] 回復量, [Damage] ダメージ量, [Accuracy]
|
|
4753
|
+
gauge: `クリア条件を設定します。\n[Start] ゲージ初期値, [Border] クリア条件(ハイフン時は0),\n[Recovery] 回復量, [Damage] ダメージ量, [Accuracy] クリアに必要な正確率、許容ミス数`,
|
|
4753
4754
|
excessive: `空押し判定を行うか設定します。`,
|
|
4754
4755
|
adjustment: `曲とのタイミングにズレを感じる場合、\n数値を変えることでフレーム単位のズレを直すことができます。\n外側のボタンは5f刻み、真ん中は1f刻み、内側は0.5f刻みで調整できます。`,
|
|
4755
4756
|
fadein: `譜面を途中から再生します。\n途中から開始した場合はハイスコアを保存しません。`,
|
|
@@ -4789,7 +4790,7 @@ const g_lang_msgObj = {
|
|
|
4789
4790
|
effect: `矢印・フリーズアローにエフェクトをかけます。\n[Dizzy/Spin] 矢印が回転します\n[Wave/Storm] 矢印の軌道が左右に揺れます\n[Blinking] 矢印が点滅します\n[Squids] 矢印が伸び縮みします`,
|
|
4790
4791
|
camoufrage: `ステップの見た目が配置は同じでランダムに変わります。`,
|
|
4791
4792
|
camoufrageType: `[FrzArrow] フリーズアローの帯部分を初期表示のみ非表示にし、矢印のみで表示します(ヒット/失敗時は帯を再表示)`,
|
|
4792
|
-
swapping:
|
|
4793
|
+
swapping: `ステップゾーンの位置を入れ替える設定です。\n[Mirror] ステップゾーンの位置をグループ単位で入れ替えます。\n[X-Mirror] ステップゾーンの中央部分のみグループ単位で入れ替えます。\n[Mirror+] ステップゾーンの位置をグループに関係なく全体的に反転します。`,
|
|
4793
4794
|
judgRange: `判定の許容範囲を設定します。\n[Normal] 通常、[Narrow/Hard] 辛判定、[ExHard] 激辛判定`,
|
|
4794
4795
|
autoRetry: `自動リトライの条件を設定します。\n[Miss] ミス時、[Matari] マターリ時、[Shakin] シャキン時、[FS] Fast/Slow発生時`,
|
|
4795
4796
|
|
|
@@ -4846,7 +4847,7 @@ const g_lang_msgObj = {
|
|
|
4846
4847
|
scroll: `Set the scroll direction for each lane according to the pattern.\nIf "Reverse:ON" sets, reverse the scroll direction.`,
|
|
4847
4848
|
shuffle: `Flip the chart left and right or make it random.\nIf you make it random, it will be treated as other charts and the high score will not be saved.`,
|
|
4848
4849
|
autoPlay: `Set to auto play and to hit some keys automatically.\nHigh score is not saved during auto play.`,
|
|
4849
|
-
gauge: `Set the clear condition.\n[Start] initial value, [Border] borderline value (hyphen means zero),\n[Recovery] recovery amount, [Damage] damage amount,\n[Accuracy] accuracy required to clear
|
|
4850
|
+
gauge: `Set the clear condition.\n[Start] initial value, [Border] borderline value (hyphen means zero),\n[Recovery] recovery amount, [Damage] damage amount,\n[Accuracy] accuracy required to clear and the number of allowed mistakes`,
|
|
4850
4851
|
excessive: `Set whether to use excessive miss judgment.`,
|
|
4851
4852
|
adjustment: `If you feel that the timing is out of sync with the music, \nyou can correct the shift in frame units by changing the value.\nThe outer button can be adjusted in 5 frame increments, the middle in 1 frame increments, \nand the inner button in 0.5 frame increments.`,
|
|
4852
4853
|
fadein: `Plays the chart from the middle.\nIf you start in the middle, the high score will not be saved.`,
|
|
@@ -4887,7 +4888,7 @@ const g_lang_msgObj = {
|
|
|
4887
4888
|
effect: `Applies effects to the arrows and freeze arrows.\n[Dizzy/Spin] Arrows rotate.\n[Wave/Storm] Swing from left to right.\n[Blinking] Arrows blink.\n[Squids] Arrows stretch and shrink.`,
|
|
4888
4889
|
camoufrage: `The appearance of the steps changes randomly with the same placement.`,
|
|
4889
4890
|
camoufrageType: `[FrzArrow] Initially hides freeze-arrow bars and displays only the arrow portion (bars reappear on hit/failure)`,
|
|
4890
|
-
swapping: `
|
|
4891
|
+
swapping: `This setting allows you to swap the positions of the step zones.\n[Mirror] Swaps the positions of step zones within each shuffle group. \n[X-Mirror] Swaps only the central portion of step zones within each shuffle group.\n[Mirror+] Flips the position of all step zones, regardless of shuffle groups. `,
|
|
4891
4892
|
judgRange: `Set the allowable range of judgment.\n[Normal] Normal judgment, [Narrow/Hard] Hard judgment, [ExHard] Very hard judgment`,
|
|
4892
4893
|
autoRetry: `Set the conditions for automatic retry.\n[Miss] When missed, [Matari] When good, [Shakin] When great, [FS] When Fast/Slow occurs`,
|
|
4893
4894
|
|