danoniplus 36.5.0 → 36.6.1
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 +53 -23
- package/js/lib/danoni_constants.js +5 -5
- 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 : 2024/06/
|
|
7
|
+
* Revised : 2024/06/20
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 36.
|
|
12
|
-
const g_revisedDate = `2024/06/
|
|
11
|
+
const g_version = `Ver 36.6.1`;
|
|
12
|
+
const g_revisedDate = `2024/06/20`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -6453,7 +6453,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
6453
6453
|
* @param {number} _scrollNum
|
|
6454
6454
|
*/
|
|
6455
6455
|
const changeTmpShuffleNum = (_j, _scrollNum = 1) => {
|
|
6456
|
-
const tmpShuffle = changeTmpData(`shuffle`,
|
|
6456
|
+
const tmpShuffle = changeTmpData(`shuffle`, g_keyObj[`keyCtrl${keyCtrlPtn}`].length - 1, _j, _scrollNum);
|
|
6457
6457
|
document.getElementById(`sArrow${_j}`).textContent = tmpShuffle + 1;
|
|
6458
6458
|
|
|
6459
6459
|
changeShuffleConfigColor(keyCtrlPtn, g_keyObj[`shuffle${keyCtrlPtn}_${g_keycons.shuffleGroupNum}`][_j], _j);
|
|
@@ -8005,6 +8005,19 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8005
8005
|
getRefData(_header, `${_type}_data`)
|
|
8006
8006
|
];
|
|
8007
8007
|
|
|
8008
|
+
/**
|
|
8009
|
+
* 譜面データの優先順配列パターンの取得
|
|
8010
|
+
* @param {string} _type
|
|
8011
|
+
* @param {number} _scoreNo
|
|
8012
|
+
* @returns
|
|
8013
|
+
*/
|
|
8014
|
+
const getPriorityVal = (_type, _scoreNo) => [
|
|
8015
|
+
`${_type}${g_localeObj.val}${_scoreNo}_data`,
|
|
8016
|
+
`${_type}${g_localeObj.val}_data`,
|
|
8017
|
+
`${_type}${_scoreNo}_data`,
|
|
8018
|
+
`${_type}_data`
|
|
8019
|
+
];
|
|
8020
|
+
|
|
8008
8021
|
/**
|
|
8009
8022
|
* 歌詞表示、背景・マスクデータの優先順取得
|
|
8010
8023
|
*/
|
|
@@ -8040,16 +8053,25 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
8040
8053
|
*/
|
|
8041
8054
|
const makeWordData = _scoreNo => {
|
|
8042
8055
|
const wordDataList = [];
|
|
8056
|
+
const wordTargets = [];
|
|
8043
8057
|
let wordReverseFlg = false;
|
|
8044
8058
|
const divideCnt = getKeyInfo().divideCnt;
|
|
8045
|
-
const addDataList = (_type = ``) =>
|
|
8059
|
+
const addDataList = (_type = ``) => wordTargets.push(...getPriorityVal(_type, _scoreNo));
|
|
8046
8060
|
getPriorityHeader().forEach(val => addDataList(val));
|
|
8061
|
+
makeDedupliArray(wordTargets).forEach(val => wordDataList.push(getRefData(`word`, val)));
|
|
8047
8062
|
|
|
8048
8063
|
if (g_stateObj.reverse === C_FLG_ON) {
|
|
8064
|
+
let wordTarget = ``;
|
|
8065
|
+
for (let val of makeDedupliArray(wordTargets)) {
|
|
8066
|
+
if (getRefData(`word`, val) !== undefined) {
|
|
8067
|
+
wordTarget = val;
|
|
8068
|
+
break;
|
|
8069
|
+
}
|
|
8070
|
+
}
|
|
8049
8071
|
|
|
8050
8072
|
// wordRev_dataが指定されている場合はそのままの位置を採用
|
|
8051
8073
|
// word_dataのみ指定されている場合、下記ルールに従って設定
|
|
8052
|
-
if (
|
|
8074
|
+
if (!wordTarget.includes(`Rev`) && g_stateObj.scroll === `---`) {
|
|
8053
8075
|
// Reverse時の歌詞の自動反転制御設定
|
|
8054
8076
|
if (g_headerObj.wordAutoReverse !== `auto`) {
|
|
8055
8077
|
wordReverseFlg = g_headerObj.wordAutoReverse === C_FLG_ON;
|
|
@@ -9011,7 +9033,8 @@ const getArrowSettings = _ => {
|
|
|
9011
9033
|
|
|
9012
9034
|
g_typeLists.frzColor.forEach((frzType, k) => {
|
|
9013
9035
|
g_workObj[`frz${frzType}Colors${type}`][j] = g_headerObj.frzColor[colorj][k] || ``;
|
|
9014
|
-
g_workObj[`dummyFrz${frzType}Colors${type}`][j] =
|
|
9036
|
+
g_workObj[`dummyFrz${frzType}Colors${type}`][j] =
|
|
9037
|
+
frzType.includes(`Shadow`) ? `` : g_headerObj.setDummyColor[colorj] || ``;
|
|
9015
9038
|
});
|
|
9016
9039
|
g_workObj[`frzNormalShadowColors${type}`][j] = g_headerObj.frzShadowColor[colorj][0] || ``;
|
|
9017
9040
|
g_workObj[`frzHitShadowColors${type}`][j] = g_headerObj.frzShadowColor[colorj][1] || ``;
|
|
@@ -9257,8 +9280,8 @@ const mainInit = _ => {
|
|
|
9257
9280
|
const filterCss = g_stateObj.filterLock === C_FLG_OFF ? g_cssObj.life_Failed : g_cssObj.life_Cleared;
|
|
9258
9281
|
[`filterBar0`, `filterBar1`, `borderBar0`, `borderBar1`].forEach(obj =>
|
|
9259
9282
|
mainSprite.appendChild(createColorObject2(obj, g_lblPosObj.filterBar, filterCss)));
|
|
9260
|
-
borderBar0.style.top = wUnit(g_posObj.stepDiffY);
|
|
9261
|
-
borderBar1.style.top = wUnit(g_posObj.stepDiffY + g_posObj.arrowHeight);
|
|
9283
|
+
borderBar0.style.top = wUnit(g_posObj.stepDiffY + g_stateObj.hitPosition);
|
|
9284
|
+
borderBar1.style.top = wUnit(g_posObj.stepDiffY + g_posObj.arrowHeight - g_stateObj.hitPosition);
|
|
9262
9285
|
|
|
9263
9286
|
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
9264
9287
|
mainSprite.appendChild(createDivCss2Label(`filterView`, ``, g_lblPosObj.filterView));
|
|
@@ -9543,8 +9566,17 @@ const mainInit = _ => {
|
|
|
9543
9566
|
);
|
|
9544
9567
|
}
|
|
9545
9568
|
|
|
9569
|
+
const msg = [];
|
|
9546
9570
|
if (getMusicUrl(g_stateObj.scoreId) === `nosound.mp3`) {
|
|
9547
|
-
|
|
9571
|
+
msg.push(g_msgInfoObj.I_0004);
|
|
9572
|
+
}
|
|
9573
|
+
if (g_stateObj.shuffle.indexOf(`Mirror`) !== -1 &&
|
|
9574
|
+
g_stateObj.dataSaveFlg && g_stateObj.autoAll === C_FLG_OFF &&
|
|
9575
|
+
g_keyObj[`shuffle${keyCtrlPtn}`].filter((shuffleGr, j) => shuffleGr !== g_keyObj[`shuffle${keyCtrlPtn}_0d`][j]).length > 0) {
|
|
9576
|
+
msg.push(g_msgInfoObj.I_0005);
|
|
9577
|
+
}
|
|
9578
|
+
if (msg.length > 0) {
|
|
9579
|
+
makeInfoWindow(msg.join(`<br>`), `leftToRightFade`, { _x: g_workObj.playingX, _y: g_headerObj.playingY });
|
|
9548
9580
|
}
|
|
9549
9581
|
|
|
9550
9582
|
// ユーザカスタムイベント(初期)
|
|
@@ -10262,7 +10294,7 @@ const mainInit = _ => {
|
|
|
10262
10294
|
// ダミーフリーズアロー生成
|
|
10263
10295
|
g_workObj.mkDummyFrzArrow[currentFrame]?.forEach(data =>
|
|
10264
10296
|
makeFrzArrow(data, ++dummyFrzCnts[data], `dummyFrz`, g_workObj.dummyFrzNormalColors[data],
|
|
10265
|
-
|
|
10297
|
+
g_workObj.dummyFrzNormalBarColors[data], g_workObj.dummyFrzNormalShadowColors[data]));
|
|
10266
10298
|
|
|
10267
10299
|
// フリーズアロー生成
|
|
10268
10300
|
g_workObj.mkFrzArrow[currentFrame]?.forEach(data =>
|
|
@@ -10437,8 +10469,8 @@ const changeAppearanceFilter = (_appearance, _num = 10) => {
|
|
|
10437
10469
|
$id(`arrowSprite${topNum}`).clipPath = topShape;
|
|
10438
10470
|
$id(`arrowSprite${bottomNum}`).clipPath = bottomShape;
|
|
10439
10471
|
|
|
10440
|
-
$id(`filterBar0`).top = wUnit(g_posObj.arrowHeight * _num / 100);
|
|
10441
|
-
$id(`filterBar1`).top = wUnit(g_posObj.arrowHeight * (100 - _num) / 100);
|
|
10472
|
+
$id(`filterBar0`).top = wUnit(g_posObj.arrowHeight * _num / 100 + g_stateObj.hitPosition);
|
|
10473
|
+
$id(`filterBar1`).top = wUnit(g_posObj.arrowHeight * (100 - _num) / 100 - g_stateObj.hitPosition);
|
|
10442
10474
|
|
|
10443
10475
|
if (g_appearanceRanges.includes(_appearance)) {
|
|
10444
10476
|
$id(`filterView`).top =
|
|
@@ -10565,6 +10597,7 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
10565
10597
|
|
|
10566
10598
|
const styfrzBar = $id(`${_name}Bar${frzNo}`);
|
|
10567
10599
|
const styfrzBtm = $id(`${_name}Btm${frzNo}`);
|
|
10600
|
+
const styfrzTop = $id(`${_name}Top${frzNo}`);
|
|
10568
10601
|
const styfrzTopShadow = $id(`${_name}TopShadow${frzNo}`);
|
|
10569
10602
|
const styfrzBtmShadow = $id(`${_name}BtmShadow${frzNo}`);
|
|
10570
10603
|
|
|
@@ -10601,7 +10634,8 @@ const changeHitFrz = (_j, _k, _name, _difFrame = 0) => {
|
|
|
10601
10634
|
styfrzBar.background = getColor(`HitBar`);
|
|
10602
10635
|
styfrzBtm.top = wUnit(currentFrz.btmY);
|
|
10603
10636
|
styfrzBtm.background = tmpHitColor;
|
|
10604
|
-
|
|
10637
|
+
styfrzTop.top = wUnit(- hitPos);
|
|
10638
|
+
styfrzTopShadow.top = styfrzTop.top;
|
|
10605
10639
|
styfrzBtmShadow.top = styfrzBtm.top;
|
|
10606
10640
|
if (_name === `frz`) {
|
|
10607
10641
|
const tmpShadowColor = getColor(`HitShadow`);
|
|
@@ -10626,17 +10660,11 @@ const changeFailedFrz = (_j, _k) => {
|
|
|
10626
10660
|
$id(`frzHit${_j}`).opacity = 0;
|
|
10627
10661
|
$id(`frzTop${frzNo}`).display = C_DIS_INHERIT;
|
|
10628
10662
|
$id(`frzTop${frzNo}`).background = `#cccccc`;
|
|
10629
|
-
$id(`frzTopShadow${frzNo}`).opacity = 1;
|
|
10630
10663
|
$id(`frzTopShadow${frzNo}`).background = `#333333`;
|
|
10631
10664
|
$id(`frzBtmShadow${frzNo}`).background = `#333333`;
|
|
10632
10665
|
$id(`frzBar${frzNo}`).background = `#999999`;
|
|
10633
10666
|
$id(`frzBar${frzNo}`).opacity = 1;
|
|
10634
10667
|
$id(`frzBtm${frzNo}`).background = `#cccccc`;
|
|
10635
|
-
|
|
10636
|
-
// 判定位置調整分の補正
|
|
10637
|
-
const hitPos = g_workObj.hitPosition * g_workObj.scrollDir[_j];
|
|
10638
|
-
$id(`frzTop${frzNo}`).top = wUnit(- hitPos);
|
|
10639
|
-
$id(`frzTopShadow${frzNo}`).top = wUnit(- hitPos);
|
|
10640
10668
|
};
|
|
10641
10669
|
|
|
10642
10670
|
/**
|
|
@@ -11082,6 +11110,8 @@ const resultInit = _ => {
|
|
|
11082
11110
|
|
|
11083
11111
|
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
11084
11112
|
const transKeyName = (hasVal(g_keyObj[`transKey${keyCtrlPtn}`]) ? `(${g_keyObj[`transKey${keyCtrlPtn}`]})` : ``);
|
|
11113
|
+
const orgShuffleFlg = g_keyObj[`shuffle${keyCtrlPtn}`].filter((shuffleGr, j) => shuffleGr !== g_keyObj[`shuffle${keyCtrlPtn}_0d`][j]).length === 0;
|
|
11114
|
+
const shuffleName = `${getStgDetailName(g_stateObj.shuffle)}${!orgShuffleFlg && !g_stateObj.shuffle.endsWith(`+`) ? getStgDetailName('(S)') : ''}`;
|
|
11085
11115
|
|
|
11086
11116
|
/**
|
|
11087
11117
|
* プレイスタイルのカスタム有無
|
|
@@ -11096,7 +11126,7 @@ const resultInit = _ => {
|
|
|
11096
11126
|
`${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName} ${getStgDetailName('key')} / ${g_headerObj.difLabels[g_stateObj.scoreId]}`,
|
|
11097
11127
|
`${withOptions(g_autoPlaysBase.includes(g_stateObj.autoPlay), true, `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`)}`,
|
|
11098
11128
|
`${withOptions(g_headerObj.makerView, false, `(${g_headerObj.creatorNames[g_stateObj.scoreId]})`)}`,
|
|
11099
|
-
`${withOptions(g_stateObj.shuffle, C_FLG_OFF, `[${
|
|
11129
|
+
`${withOptions(g_stateObj.shuffle, C_FLG_OFF, `[${shuffleName}]`)}`
|
|
11100
11130
|
];
|
|
11101
11131
|
let difData = difDatas.filter(value => value !== ``).join(` `);
|
|
11102
11132
|
const difDataForImage = difDatas.filter((value, j) => value !== `` && j !== 2).join(` `);
|
|
@@ -11241,7 +11271,7 @@ const resultInit = _ => {
|
|
|
11241
11271
|
maxCombo: 0, fmaxCombo: 0, score: 0,
|
|
11242
11272
|
};
|
|
11243
11273
|
|
|
11244
|
-
const highscoreCondition = (g_stateObj.autoAll === C_FLG_OFF && (g_stateObj.shuffle === C_FLG_OFF || mirrorName !== ``));
|
|
11274
|
+
const highscoreCondition = (g_stateObj.autoAll === C_FLG_OFF && (g_stateObj.shuffle === C_FLG_OFF || (mirrorName !== `` && orgShuffleFlg)));
|
|
11245
11275
|
if (highscoreCondition) {
|
|
11246
11276
|
|
|
11247
11277
|
// ハイスコア差分描画
|
|
@@ -11348,7 +11378,7 @@ const resultInit = _ => {
|
|
|
11348
11378
|
const hashTag = (hasVal(g_headerObj.hashTag) ? ` ${g_headerObj.hashTag}` : ``);
|
|
11349
11379
|
let tweetDifData = `${getKeyName(g_headerObj.keyLabels[g_stateObj.scoreId])}${transKeyName}${getStgDetailName('k-')}${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}`;
|
|
11350
11380
|
if (g_stateObj.shuffle !== `OFF`) {
|
|
11351
|
-
tweetDifData += `:${
|
|
11381
|
+
tweetDifData += `:${shuffleName}`;
|
|
11352
11382
|
}
|
|
11353
11383
|
const twiturl = new URL(g_localStorageUrl);
|
|
11354
11384
|
twiturl.searchParams.append(`scoreId`, g_stateObj.scoreId);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2024/06/
|
|
8
|
+
* Revised : 2024/06/08 (v36.6.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -122,9 +122,6 @@ const g_limitObj = {
|
|
|
122
122
|
|
|
123
123
|
// キーコンフィグで表示するカラーピッカー数
|
|
124
124
|
kcColorPickerNum: 5,
|
|
125
|
-
|
|
126
|
-
// キーコンフィグで設定できるシャッフルグループ上限数
|
|
127
|
-
kcShuffleNums: 20,
|
|
128
125
|
};
|
|
129
126
|
|
|
130
127
|
/** 設定項目の位置 */
|
|
@@ -2856,6 +2853,7 @@ const g_lang_msgInfoObj = {
|
|
|
2856
2853
|
I_0002: `入力したキーは割り当てできません。他のキーを指定してください。`,
|
|
2857
2854
|
I_0003: `各譜面の明細情報をクリップボードにコピーしました!`,
|
|
2858
2855
|
I_0004: `musicUrlが設定されていないため、無音モードで再生します`,
|
|
2856
|
+
I_0005: `正規のミラー譜面で無いため、ハイスコアは保存されません`,
|
|
2859
2857
|
},
|
|
2860
2858
|
En: {
|
|
2861
2859
|
W_0001: `Your browser is not guaranteed to work.<br>
|
|
@@ -2905,6 +2903,7 @@ const g_lang_msgInfoObj = {
|
|
|
2905
2903
|
I_0002: `The specified key cannot be assigned. Please specify another key.`,
|
|
2906
2904
|
I_0003: `Charts information is copied to the clipboard!`,
|
|
2907
2905
|
I_0004: `Play in silence mode because "musicUrl" is not set`,
|
|
2906
|
+
I_0005: `Highscore is not saved because not a regular mirrored chart.`,
|
|
2908
2907
|
},
|
|
2909
2908
|
};
|
|
2910
2909
|
|
|
@@ -3042,6 +3041,7 @@ const g_lblNameObj = {
|
|
|
3042
3041
|
'u_Random+': `Random+`,
|
|
3043
3042
|
'u_S-Random': `S-Random`,
|
|
3044
3043
|
'u_S-Random+': `S-Random+`,
|
|
3044
|
+
'u_(S)': `(S)`,
|
|
3045
3045
|
|
|
3046
3046
|
'u_ALL': `ALL`,
|
|
3047
3047
|
'u_Onigiri': `Onigiri`,
|
|
@@ -3129,7 +3129,7 @@ const g_lblNameObj = {
|
|
|
3129
3129
|
* リンク先管理
|
|
3130
3130
|
*/
|
|
3131
3131
|
const g_linkObj = {
|
|
3132
|
-
x: `https://x.com/intent/
|
|
3132
|
+
x: `https://x.com/intent/post`,
|
|
3133
3133
|
discord: `https://discord.gg/5Hxu4wDEZR`,
|
|
3134
3134
|
};
|
|
3135
3135
|
|