danoniplus 44.5.4 → 45.0.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 +26 -27
- package/js/lib/danoni_constants.js +101 -40
- package/js/template/danoni_setting.js +12 -4
- 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
|
|
11
|
+
const g_version = `Ver 45.0.0`;
|
|
12
12
|
const g_revisedDate = `2026/02/26`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
@@ -1687,12 +1687,12 @@ const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth,
|
|
|
1687
1687
|
* @param {number} [object.x=0]
|
|
1688
1688
|
* @returns {HTMLDivElement}
|
|
1689
1689
|
*/
|
|
1690
|
-
const createMultipleSprite = (_baseName, _num, { x = 0 } = {}) => {
|
|
1690
|
+
const createMultipleSprite = (_baseName, _num, { x = 0, priority = g_transPriority.layer } = {}) => {
|
|
1691
1691
|
const sprite = createEmptySprite(divRoot, _baseName);
|
|
1692
1692
|
for (let j = 0; j <= _num; j++) {
|
|
1693
1693
|
createEmptySprite(sprite, `${_baseName}${j}`);
|
|
1694
1694
|
}
|
|
1695
|
-
addX(_baseName, `root`, x);
|
|
1695
|
+
addX(_baseName, `root`, x, { priority });
|
|
1696
1696
|
return sprite;
|
|
1697
1697
|
};
|
|
1698
1698
|
|
|
@@ -7908,9 +7908,7 @@ const createGeneralSetting = (_obj, _settingName, { unitName = ``,
|
|
|
7908
7908
|
const initName = `${getStgDetailName(g_stateObj[_settingName])}${unitName}`;
|
|
7909
7909
|
_obj.appendChild(createLblSetting(settingUpper, adjY, toCapitalize(settingLabel)));
|
|
7910
7910
|
|
|
7911
|
-
if (_settingName ===
|
|
7912
|
-
g_headerObj[`${_settingName}Use`] === undefined || g_headerObj[`${_settingName}Use`]
|
|
7913
|
-
)) {
|
|
7911
|
+
if (g_headerObj[`${_settingName}Use`] === undefined || g_headerObj[`${_settingName}Use`]) {
|
|
7914
7912
|
|
|
7915
7913
|
multiAppend(_obj,
|
|
7916
7914
|
makeSettingLblCssButton(linkId, `${initName}${g_localStorage[_settingName] === g_stateObj[_settingName] ? ' *' : ''}`, 0,
|
|
@@ -8775,7 +8773,7 @@ const keyConfigInit = (_kcType = g_kcType) => {
|
|
|
8775
8773
|
[tkObj.keyCtrlPtn, tkObj.keyNum, tkObj.posMax, tkObj.divideCnt];
|
|
8776
8774
|
|
|
8777
8775
|
g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
|
|
8778
|
-
addTransform(`keyconSprite`, `root`, `scale(${g_keyObj.scale})
|
|
8776
|
+
addTransform(`keyconSprite`, `root`, `scale(${g_keyObj.scale})`, g_transPriority.scale);
|
|
8779
8777
|
keyconSprite.style.height = `${parseFloat(keyconSprite.style.height) / ((1 + g_keyObj.scale) / 2)}px`;
|
|
8780
8778
|
const kWidth = parseInt(keyconSprite.style.width);
|
|
8781
8779
|
changeSetColor();
|
|
@@ -10337,7 +10335,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
10337
10335
|
const dosSpeedData = getRefData(_header, `${_scoreNo}${_footer}`);
|
|
10338
10336
|
const speedData = [];
|
|
10339
10337
|
|
|
10340
|
-
if (hasVal(dosSpeedData) && g_stateObj.
|
|
10338
|
+
if (hasVal(dosSpeedData) && g_stateObj.d_velocity !== C_FLG_OFF) {
|
|
10341
10339
|
const tmpArrayData = splitLF(dosSpeedData);
|
|
10342
10340
|
|
|
10343
10341
|
tmpArrayData.filter(data => hasVal(data)).forEach(tmpData => {
|
|
@@ -10919,11 +10917,11 @@ const getSpeedFactor = _speed => {
|
|
|
10919
10917
|
// ±1 はそのまま返して符号を保持
|
|
10920
10918
|
return _speed;
|
|
10921
10919
|
}
|
|
10922
|
-
if (g_stateObj.
|
|
10920
|
+
if (g_stateObj.d_velocity === `Extreme`) {
|
|
10923
10921
|
// |speed|>1 を強めに、<1 を弱めに
|
|
10924
10922
|
return _speed * (Math.abs(_speed) > 1 ? 1.5 : 0.75);
|
|
10925
10923
|
}
|
|
10926
|
-
if (g_stateObj.
|
|
10924
|
+
if (g_stateObj.d_velocity === `Soft`) {
|
|
10927
10925
|
// 変化幅を緩和(符号は維持)
|
|
10928
10926
|
return (1 + Math.abs(_speed)) / 2 * Math.sign(_speed);
|
|
10929
10927
|
}
|
|
@@ -12086,17 +12084,16 @@ const mainInit = () => {
|
|
|
12086
12084
|
mainSprite.style.transformOrigin = `center 55%`;
|
|
12087
12085
|
}
|
|
12088
12086
|
|
|
12089
|
-
addTransform(`mainSprite`, `root`, `scale(${g_workObj.scale})
|
|
12090
|
-
addXY(`mainSprite`, `root`, g_workObj.playingX, g_posObj.stepY - C_STEP_Y + g_headerObj.playingY);
|
|
12087
|
+
addTransform(`mainSprite`, `root`, `scale(${g_workObj.scale})`, g_transPriority.scale);
|
|
12088
|
+
addXY(`mainSprite`, `root`, g_workObj.playingX, g_posObj.stepY - C_STEP_Y + g_headerObj.playingY, { priority: g_transPriority.base });
|
|
12091
12089
|
|
|
12092
12090
|
// 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
|
|
12093
12091
|
const infoSprite = createEmptySprite(divRoot, `infoSprite`, mainCommonPos);
|
|
12094
|
-
addXY(`infoSprite`, `root`, g_workObj.playingX, g_headerObj.playingY);
|
|
12092
|
+
addXY(`infoSprite`, `root`, g_workObj.playingX, g_headerObj.playingY, { priority: g_transPriority.base });
|
|
12095
12093
|
|
|
12096
12094
|
// 判定系スプライトを作成(メインスプライトより上位)
|
|
12097
12095
|
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, mainCommonPos);
|
|
12098
|
-
addXY(`judgeSprite`, `root`, g_workObj.playingX, g_headerObj.playingY);
|
|
12099
|
-
|
|
12096
|
+
addXY(`judgeSprite`, `root`, g_workObj.playingX, g_headerObj.playingY, { priority: g_transPriority.base });
|
|
12100
12097
|
const tkObj = getKeyInfo();
|
|
12101
12098
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
12102
12099
|
|
|
@@ -12150,7 +12147,7 @@ const mainInit = () => {
|
|
|
12150
12147
|
// StepAreaオプションにより、レイヤーが倍化される場合があるため基準レイヤー数ごとに設定
|
|
12151
12148
|
const transj = j % g_stateObj.layerNumDf;
|
|
12152
12149
|
addTransform(`mainSprite${j}`, `mainSprite${j}`,
|
|
12153
|
-
g_keyObj[`layerTrans${keyCtrlPtn}`]?.[0]?.[Math.floor(transj / 2) * 2 + (transj + Number(g_stateObj.reverse === C_FLG_ON)) % 2]);
|
|
12150
|
+
g_keyObj[`layerTrans${keyCtrlPtn}`]?.[0]?.[Math.floor(transj / 2) * 2 + (transj + Number(g_stateObj.reverse === C_FLG_ON)) % 2], g_transPriority.layer);
|
|
12154
12151
|
|
|
12155
12152
|
stepSprite.push(createEmptySprite(mainSpriteJ, `stepSprite${j}`, mainCommonPos));
|
|
12156
12153
|
arrowSprite.push(createEmptySprite(mainSpriteJ, `arrowSprite${j}`, Object.assign({ y: g_workObj.hitPosition * (j % 2 === 0 ? 1 : -1) }, mainCommonPos)));
|
|
@@ -12202,7 +12199,7 @@ const mainInit = () => {
|
|
|
12202
12199
|
g_stepAreaFunc.get(g_stateObj.stepArea)();
|
|
12203
12200
|
|
|
12204
12201
|
// mainSpriteのtransform追加処理
|
|
12205
|
-
addTransform(`mainSprite`, `playWindow`, g_playWindowFunc.get(g_stateObj.playWindow)());
|
|
12202
|
+
addTransform(`mainSprite`, `playWindow`, g_playWindowFunc.get(g_stateObj.playWindow)(), g_transPriority.playWindow);
|
|
12206
12203
|
|
|
12207
12204
|
// EffectのArrowEffect追加処理
|
|
12208
12205
|
g_effectFunc.get(g_stateObj.effect)();
|
|
@@ -12213,7 +12210,7 @@ const mainInit = () => {
|
|
|
12213
12210
|
|
|
12214
12211
|
// Shaking初期化
|
|
12215
12212
|
if (g_stateObj.shaking !== C_FLG_OFF) {
|
|
12216
|
-
addXY(`mainSprite`, `shaking`, 0, 0);
|
|
12213
|
+
addXY(`mainSprite`, `shaking`, 0, 0, { priority: g_transPriority.shaking });
|
|
12217
12214
|
}
|
|
12218
12215
|
|
|
12219
12216
|
// 現在の矢印・フリーズアローの速度、個別加算速度の初期化 (速度変化時に直す)
|
|
@@ -12916,6 +12913,7 @@ const mainInit = () => {
|
|
|
12916
12913
|
// 現フレーム時の位置
|
|
12917
12914
|
y: firstPosY,
|
|
12918
12915
|
};
|
|
12916
|
+
|
|
12919
12917
|
// 矢印色の設定
|
|
12920
12918
|
// - 枠/塗りつぶし色: g_attrObj[arrowName].Arrow / ArrowShadow
|
|
12921
12919
|
g_typeLists.arrowColor.forEach(val => g_attrObj[arrowName][`Arrow${val}`] = g_workObj[`${_name}${val}Colors`][_j]);
|
|
@@ -13576,19 +13574,20 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
13576
13574
|
$id(`arrowSprite${topNum + j}`).clipPath = topShape;
|
|
13577
13575
|
$id(`arrowSprite${bottomNum + j}`).clipPath = bottomShape;
|
|
13578
13576
|
|
|
13579
|
-
addY(`filterBar${topNum + j}`, `appearance`, parseFloat($id(`arrowSprite${j}`).top) + topDist);
|
|
13580
|
-
addY(`filterBar${bottomNum + j}`, `appearance`, parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist);
|
|
13577
|
+
addY(`filterBar${topNum + j}`, `appearance`, parseFloat($id(`arrowSprite${j}`).top) + topDist, { priority: g_transPriority.layer });
|
|
13578
|
+
addY(`filterBar${bottomNum + j}`, `appearance`, parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist, { priority: g_transPriority.layer });
|
|
13581
13579
|
|
|
13582
13580
|
if (![`Default`, `Halfway`].includes(g_stateObj.stepArea)) {
|
|
13583
|
-
addY(`filterBar${bottomNum + j}_HS`, `appearance`, parseFloat($id(`arrowSprite${j}`).top) + bottomDist);
|
|
13584
|
-
addY(`filterBar${topNum + j}_HS`, `appearance`, parseFloat($id(`arrowSprite${j + 1}`).top) + topDist);
|
|
13581
|
+
addY(`filterBar${bottomNum + j}_HS`, `appearance`, parseFloat($id(`arrowSprite${j}`).top) + bottomDist, { priority: g_transPriority.layer });
|
|
13582
|
+
addY(`filterBar${topNum + j}_HS`, `appearance`, parseFloat($id(`arrowSprite${j + 1}`).top) + topDist, { priority: g_transPriority.layer });
|
|
13585
13583
|
}
|
|
13586
13584
|
}
|
|
13587
13585
|
|
|
13588
13586
|
// フィルターバーのパーセント表示(フィルターバーが複数表示されるなど複雑なため、最初の階層グループの位置に追従)
|
|
13589
13587
|
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
13590
13588
|
const currentBarNum = g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse];
|
|
13591
|
-
|
|
13589
|
+
addY(`filterView`, `appearance`, parseFloat($id(`arrowSprite${currentBarNum % 2}`).top) +
|
|
13590
|
+
(currentBarNum % 2 === 0 ? bottomDist : topDist), { priority: g_transPriority.layer });
|
|
13592
13591
|
filterView.textContent = `${_num}%`;
|
|
13593
13592
|
g_hidSudObj.filterPos = _num;
|
|
13594
13593
|
}
|
|
@@ -13678,12 +13677,12 @@ const changeReturn = (_rad, _axis) => {
|
|
|
13678
13677
|
}
|
|
13679
13678
|
sprite.style.opacity = isBack ? 0.7 : 1;
|
|
13680
13679
|
|
|
13681
|
-
addTransform(`mainSprite`, `frzReturn`, _transform);
|
|
13680
|
+
addTransform(`mainSprite`, `frzReturn`, _transform, g_transPriority.frzReturn);
|
|
13682
13681
|
|
|
13683
13682
|
if (_rad < 360 && g_workObj.frzReturnFlg) {
|
|
13684
13683
|
setTimeout(() => changeReturn(_rad + 4, _axis), 20);
|
|
13685
13684
|
} else {
|
|
13686
|
-
|
|
13685
|
+
delTransform(`mainSprite`, `frzReturn`);
|
|
13687
13686
|
g_workObj.frzReturnFlg = false;
|
|
13688
13687
|
}
|
|
13689
13688
|
}
|
|
@@ -13781,7 +13780,7 @@ const changeScrollArrowDirs = (_frameNum) => {
|
|
|
13781
13780
|
tmpObj.set(g_workObj.dividePos[targetj], g_workObj.mkScrollchArrowLayerTrans[_frameNum][j]);
|
|
13782
13781
|
}
|
|
13783
13782
|
});
|
|
13784
|
-
tmpObj.forEach((val, key, map) => addTransform(`mainSprite${key}`, `scrollch`, val));
|
|
13783
|
+
tmpObj.forEach((val, key, map) => addTransform(`mainSprite${key}`, `scrollch`, val, g_transPriority.layer));
|
|
13785
13784
|
};
|
|
13786
13785
|
|
|
13787
13786
|
/**
|
|
@@ -15132,7 +15131,7 @@ const getSelectedSettingList = (_shuffleName) => {
|
|
|
15132
15131
|
}
|
|
15133
15132
|
|
|
15134
15133
|
let display2Data = [
|
|
15135
|
-
withDisplays(g_stateObj.
|
|
15134
|
+
withDisplays(g_stateObj.d_velocity, C_FLG_ON, g_lblNameObj.rd_Velocity),
|
|
15136
15135
|
withDisplays(g_stateObj.d_color, C_FLG_ON, g_lblNameObj.rd_Color),
|
|
15137
15136
|
withDisplays(g_stateObj.d_lyrics, C_FLG_ON, g_lblNameObj.rd_Lyrics),
|
|
15138
15137
|
withDisplays(g_stateObj.d_background, C_FLG_ON, g_lblNameObj.rd_Background),
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/02/
|
|
8
|
+
* Revised : 2026/02/26 (v45.0.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -1154,7 +1154,7 @@ const g_stateObj = {
|
|
|
1154
1154
|
d_filterline: C_FLG_ON,
|
|
1155
1155
|
|
|
1156
1156
|
d_color: C_FLG_ON,
|
|
1157
|
-
|
|
1157
|
+
d_velocity: C_FLG_ON,
|
|
1158
1158
|
d_arroweffect: C_FLG_ON,
|
|
1159
1159
|
d_lyrics: C_FLG_ON,
|
|
1160
1160
|
d_background: C_FLG_ON,
|
|
@@ -1313,7 +1313,7 @@ const g_settings = {
|
|
|
1313
1313
|
|
|
1314
1314
|
// Display設定の拡張リスト
|
|
1315
1315
|
d_stepZones: [`FlatBar`],
|
|
1316
|
-
|
|
1316
|
+
d_velocitys: [`Extreme`, `Soft`],
|
|
1317
1317
|
|
|
1318
1318
|
displayNum: {
|
|
1319
1319
|
stepZone: 0,
|
|
@@ -1322,7 +1322,7 @@ const g_settings = {
|
|
|
1322
1322
|
lifeGauge: 0,
|
|
1323
1323
|
score: 0,
|
|
1324
1324
|
musicInfo: 0,
|
|
1325
|
-
|
|
1325
|
+
velocity: 0,
|
|
1326
1326
|
color: 0,
|
|
1327
1327
|
lyrics: 0,
|
|
1328
1328
|
background: 0,
|
|
@@ -1388,6 +1388,15 @@ const g_moveSettingWindow = (_changePageFlg = true, _direction = 1) => {
|
|
|
1388
1388
|
const g_transforms = {};
|
|
1389
1389
|
const g_posXs = {};
|
|
1390
1390
|
const g_posYs = {};
|
|
1391
|
+
const g_transPriority = {
|
|
1392
|
+
base: 0,
|
|
1393
|
+
layer: 10,
|
|
1394
|
+
playWindow: 100,
|
|
1395
|
+
stepArea: 110,
|
|
1396
|
+
frzReturn: 120,
|
|
1397
|
+
shaking: 130,
|
|
1398
|
+
scale: 200,
|
|
1399
|
+
};
|
|
1391
1400
|
|
|
1392
1401
|
/**
|
|
1393
1402
|
* idごとのtransformを追加・変更
|
|
@@ -1395,13 +1404,32 @@ const g_posYs = {};
|
|
|
1395
1404
|
* @param {string} _id
|
|
1396
1405
|
* @param {string} _transformId
|
|
1397
1406
|
* @param {string} _transform
|
|
1407
|
+
* @param {number} [_priority=1000] transformの優先度(数値が小さいほど優先される。デフォルトは1000)
|
|
1398
1408
|
*/
|
|
1399
|
-
const addTransform = (_id, _transformId, _transform) => {
|
|
1409
|
+
const addTransform = (_id, _transformId, _transform, _priority = 1000) => {
|
|
1400
1410
|
if (g_transforms[_id] === undefined) {
|
|
1401
1411
|
g_transforms[_id] = new Map();
|
|
1402
1412
|
}
|
|
1403
|
-
g_transforms[_id].set(_transformId, _transform);
|
|
1404
|
-
$id(_id).transform = Array.from(g_transforms[_id].values())
|
|
1413
|
+
g_transforms[_id].set(_transformId, { transform: _transform, priority: _priority });
|
|
1414
|
+
$id(_id).transform = Array.from(g_transforms[_id].values())
|
|
1415
|
+
.sort((a, b) => b.priority - a.priority)
|
|
1416
|
+
.map(v => v.transform)
|
|
1417
|
+
.join(` `);
|
|
1418
|
+
};
|
|
1419
|
+
|
|
1420
|
+
/**
|
|
1421
|
+
* id, transformIdに合致するtransformの削除
|
|
1422
|
+
* @param {string} _id
|
|
1423
|
+
* @param {string} _transformId
|
|
1424
|
+
*/
|
|
1425
|
+
const delTransform = (_id, _transformId) => {
|
|
1426
|
+
if (g_transforms[_id]) {
|
|
1427
|
+
g_transforms[_id].delete(_transformId);
|
|
1428
|
+
$id(_id).transform = Array.from(g_transforms[_id].values())
|
|
1429
|
+
.sort((a, b) => b.priority - a.priority)
|
|
1430
|
+
.map(v => v.transform)
|
|
1431
|
+
.join(` `);
|
|
1432
|
+
}
|
|
1405
1433
|
};
|
|
1406
1434
|
|
|
1407
1435
|
/**
|
|
@@ -1427,7 +1455,7 @@ const resetTransform = () => {
|
|
|
1427
1455
|
* @returns {string}
|
|
1428
1456
|
*/
|
|
1429
1457
|
const getTransform = (_id, _transformId) => {
|
|
1430
|
-
return g_transforms[_id]?.
|
|
1458
|
+
return g_transforms[_id]?.get(_transformId)?.transform || ``;
|
|
1431
1459
|
};
|
|
1432
1460
|
|
|
1433
1461
|
/**
|
|
@@ -1435,10 +1463,11 @@ const getTransform = (_id, _transformId) => {
|
|
|
1435
1463
|
* @param {string} _id
|
|
1436
1464
|
* @param {string} _typeId
|
|
1437
1465
|
* @param {number} [_x=0]
|
|
1438
|
-
* @param {boolean} [
|
|
1466
|
+
* @param {boolean} [overwrite=false]
|
|
1467
|
+
* @param {number} [priority=1000] transformの優先度(数値が小さいほど優先される。デフォルトは1000)
|
|
1439
1468
|
*/
|
|
1440
|
-
const addX = (_id, _typeId, _x = 0,
|
|
1441
|
-
if (
|
|
1469
|
+
const addX = (_id, _typeId, _x = 0, { overwrite = false, priority = 1000 } = {}) => {
|
|
1470
|
+
if (overwrite) {
|
|
1442
1471
|
delete g_posXs?.[_id];
|
|
1443
1472
|
}
|
|
1444
1473
|
if (g_posXs[_id] === undefined) {
|
|
@@ -1446,7 +1475,7 @@ const addX = (_id, _typeId, _x = 0, _overwrite = false) => {
|
|
|
1446
1475
|
}
|
|
1447
1476
|
if (g_posXs[_id].get(_typeId) !== _x) {
|
|
1448
1477
|
g_posXs[_id].set(_typeId, _x);
|
|
1449
|
-
|
|
1478
|
+
addTransform(_id, `posX`, `translateX(${sumData(Array.from(g_posXs[_id].values()))}px)`, priority);
|
|
1450
1479
|
}
|
|
1451
1480
|
};
|
|
1452
1481
|
|
|
@@ -1455,10 +1484,11 @@ const addX = (_id, _typeId, _x = 0, _overwrite = false) => {
|
|
|
1455
1484
|
* @param {string} _id
|
|
1456
1485
|
* @param {string} _typeId
|
|
1457
1486
|
* @param {number} [_y=0]
|
|
1458
|
-
* @param {boolean} [
|
|
1487
|
+
* @param {boolean} [overwrite=false]
|
|
1488
|
+
* @param {number} [priority=1000] transformの優先度(数値が小さいほど優先される。デフォルトは1000)
|
|
1459
1489
|
*/
|
|
1460
|
-
const addY = (_id, _typeId, _y = 0,
|
|
1461
|
-
if (
|
|
1490
|
+
const addY = (_id, _typeId, _y = 0, { overwrite = false, priority = 1000 } = {}) => {
|
|
1491
|
+
if (overwrite) {
|
|
1462
1492
|
delete g_posYs?.[_id];
|
|
1463
1493
|
}
|
|
1464
1494
|
if (g_posYs[_id] === undefined) {
|
|
@@ -1466,7 +1496,7 @@ const addY = (_id, _typeId, _y = 0, _overwrite = false) => {
|
|
|
1466
1496
|
}
|
|
1467
1497
|
if (g_posYs[_id].get(_typeId) !== _y) {
|
|
1468
1498
|
g_posYs[_id].set(_typeId, _y);
|
|
1469
|
-
|
|
1499
|
+
addTransform(_id, `posY`, `translateY(${sumData(Array.from(g_posYs[_id].values()))}px)`, priority);
|
|
1470
1500
|
}
|
|
1471
1501
|
};
|
|
1472
1502
|
|
|
@@ -1476,8 +1506,14 @@ const addY = (_id, _typeId, _y = 0, _overwrite = false) => {
|
|
|
1476
1506
|
* @param {string} _typeId
|
|
1477
1507
|
*/
|
|
1478
1508
|
const delX = (_id, _typeId) => {
|
|
1509
|
+
if (g_posXs[_id] === undefined) return;
|
|
1479
1510
|
g_posXs[_id]?.delete(_typeId);
|
|
1480
|
-
|
|
1511
|
+
if (g_posXs[_id].size === 0) {
|
|
1512
|
+
delTransform(_id, `posX`);
|
|
1513
|
+
return;
|
|
1514
|
+
}
|
|
1515
|
+
const priority = g_transforms[_id]?.get(`posX`)?.priority ?? 1000;
|
|
1516
|
+
addTransform(_id, `posX`, `translateX(${sumData(Array.from(g_posXs[_id].values()))}px)`, priority);
|
|
1481
1517
|
};
|
|
1482
1518
|
|
|
1483
1519
|
/**
|
|
@@ -1486,8 +1522,14 @@ const delX = (_id, _typeId) => {
|
|
|
1486
1522
|
* @param {string} _typeId
|
|
1487
1523
|
*/
|
|
1488
1524
|
const delY = (_id, _typeId) => {
|
|
1525
|
+
if (g_posYs[_id] === undefined) return;
|
|
1489
1526
|
g_posYs[_id]?.delete(_typeId);
|
|
1490
|
-
|
|
1527
|
+
if (g_posYs[_id].size === 0) {
|
|
1528
|
+
delTransform(_id, `posY`);
|
|
1529
|
+
return;
|
|
1530
|
+
}
|
|
1531
|
+
const priority = g_transforms[_id]?.get(`posY`)?.priority ?? 1000;
|
|
1532
|
+
addTransform(_id, `posY`, `translateY(${sumData(Array.from(g_posYs[_id].values()))}px)`, priority);
|
|
1491
1533
|
};
|
|
1492
1534
|
|
|
1493
1535
|
/**
|
|
@@ -1496,11 +1538,30 @@ const delY = (_id, _typeId) => {
|
|
|
1496
1538
|
* @param {string} _typeId
|
|
1497
1539
|
* @param {number} _x
|
|
1498
1540
|
* @param {number} _y
|
|
1499
|
-
* @param {boolean} [
|
|
1541
|
+
* @param {boolean} [overwrite=false]
|
|
1542
|
+
* @param {number} [priority=1000] transformの優先度(数値が小さいほど優先される。デフォルトは1000)
|
|
1500
1543
|
*/
|
|
1501
|
-
const addXY = (_id, _typeId, _x = 0, _y = 0,
|
|
1502
|
-
addX(_id, _typeId, _x,
|
|
1503
|
-
addY(_id, _typeId, _y,
|
|
1544
|
+
const addXY = (_id, _typeId, _x = 0, _y = 0, { overwrite = false, priority = 1000 } = {}) => {
|
|
1545
|
+
addX(_id, _typeId, _x, { overwrite, priority });
|
|
1546
|
+
addY(_id, _typeId, _y, { overwrite, priority });
|
|
1547
|
+
};
|
|
1548
|
+
|
|
1549
|
+
/**
|
|
1550
|
+
* 座標を回転させた場合の変換処理
|
|
1551
|
+
* @param {number} _x
|
|
1552
|
+
* @param {number} _y
|
|
1553
|
+
* @param {number} _angleDeg
|
|
1554
|
+
* @returns {object} {x: number, y: number}
|
|
1555
|
+
*/
|
|
1556
|
+
const rotateXY = (_x, _y, _angleDeg) => {
|
|
1557
|
+
const rad = _angleDeg * Math.PI / 180;
|
|
1558
|
+
const cos = Math.cos(rad);
|
|
1559
|
+
const sin = Math.sin(rad);
|
|
1560
|
+
|
|
1561
|
+
const rx = _x * cos - _y * sin;
|
|
1562
|
+
const ry = _x * sin + _y * cos;
|
|
1563
|
+
|
|
1564
|
+
return { x: rx, y: ry };
|
|
1504
1565
|
};
|
|
1505
1566
|
|
|
1506
1567
|
/**
|
|
@@ -1667,7 +1728,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1667
1728
|
}],
|
|
1668
1729
|
['Mismatched', () => {
|
|
1669
1730
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1670
|
-
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * -15}deg)
|
|
1731
|
+
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * -15}deg)`, g_transPriority.stepArea);
|
|
1671
1732
|
}
|
|
1672
1733
|
if (g_workObj.orgFlatFlg) {
|
|
1673
1734
|
g_arrowGroupSprite.forEach(sprite => {
|
|
@@ -1679,7 +1740,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1679
1740
|
}],
|
|
1680
1741
|
['R-Mismatched', () => {
|
|
1681
1742
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1682
|
-
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * 15}deg)
|
|
1743
|
+
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * 15}deg)`, g_transPriority.stepArea);
|
|
1683
1744
|
}
|
|
1684
1745
|
if (g_workObj.orgFlatFlg) {
|
|
1685
1746
|
g_arrowGroupSprite.forEach(sprite => {
|
|
@@ -1698,13 +1759,13 @@ const g_stepAreaFunc = new Map([
|
|
|
1698
1759
|
}],
|
|
1699
1760
|
['X-Flower', () => {
|
|
1700
1761
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1701
|
-
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * -15}deg)
|
|
1762
|
+
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * -15}deg)`, g_transPriority.stepArea);
|
|
1702
1763
|
}
|
|
1703
1764
|
}],
|
|
1704
1765
|
['Alt-Crossing', () => {
|
|
1705
1766
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1706
1767
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * -10}deg) ` +
|
|
1707
|
-
`translateX(${getDirFromLayer(j) * 20}px)
|
|
1768
|
+
`translateX(${getDirFromLayer(j) * 20}px)`, g_transPriority.stepArea);
|
|
1708
1769
|
}
|
|
1709
1770
|
}],
|
|
1710
1771
|
]);
|
|
@@ -1861,7 +1922,7 @@ const g_keycons = {
|
|
|
1861
1922
|
};
|
|
1862
1923
|
|
|
1863
1924
|
let g_displays = [`stepZone`, `judgment`, `fastSlow`, `lifeGauge`, `score`, `musicInfo`, `filterLine`,
|
|
1864
|
-
`
|
|
1925
|
+
`velocity`, `color`, `lyrics`, `background`, `arrowEffect`, `special`];
|
|
1865
1926
|
|
|
1866
1927
|
// ローカルストレージ保存対象
|
|
1867
1928
|
let g_storeSettings = [`adjustment`, `volume`, `appearance`, `opacity`, `hitPosition`];
|
|
@@ -1870,7 +1931,7 @@ let g_storeSettings = [`adjustment`, `volume`, `appearance`, `opacity`, `hitPosi
|
|
|
1870
1931
|
let g_storeSettingsEx = [`d_stepzone`, `d_judgment`, `d_fastslow`, `d_lifegauge`,
|
|
1871
1932
|
`d_score`, `d_musicinfo`, `d_filterline`];
|
|
1872
1933
|
|
|
1873
|
-
let g_canDisabledSettings = [`motion`, `scroll`, `reverse`, `shuffle`, `autoPlay`, `gauge`,
|
|
1934
|
+
let g_canDisabledSettings = [`speed`, `motion`, `scroll`, `reverse`, `shuffle`, `autoPlay`, `gauge`,
|
|
1874
1935
|
`excessive`, `appearance`, `playWindow`, `stepArea`, `frzReturn`, `shaking`, `effect`, `camoufrage`,
|
|
1875
1936
|
`swapping`, `judgRange`, `autoRetry`];
|
|
1876
1937
|
|
|
@@ -2463,8 +2524,8 @@ const g_shortcutObj = {
|
|
|
2463
2524
|
ShiftRight_Digit6: { id: `lnkmusicInfoR` },
|
|
2464
2525
|
ShiftLeft_Digit7: { id: `lnkfilterLineR` },
|
|
2465
2526
|
ShiftRight_Digit7: { id: `lnkfilterLineR` },
|
|
2466
|
-
ShiftLeft_Digit8: { id: `
|
|
2467
|
-
ShiftRight_Digit8: { id: `
|
|
2527
|
+
ShiftLeft_Digit8: { id: `lnkvelocityR` },
|
|
2528
|
+
ShiftRight_Digit8: { id: `lnkvelocityR` },
|
|
2468
2529
|
ShiftLeft_Digit9: { id: `lnkcolorR` },
|
|
2469
2530
|
ShiftRight_Digit9: { id: `lnkcolorR` },
|
|
2470
2531
|
ShiftLeft_Digit0: { id: `lnklyricsR` },
|
|
@@ -2483,7 +2544,7 @@ const g_shortcutObj = {
|
|
|
2483
2544
|
Digit5: { id: `lnkscore` },
|
|
2484
2545
|
Digit6: { id: `lnkmusicInfo` },
|
|
2485
2546
|
Digit7: { id: `lnkfilterLine` },
|
|
2486
|
-
Digit8: { id: `
|
|
2547
|
+
Digit8: { id: `lnkvelocity` },
|
|
2487
2548
|
Digit9: { id: `lnkcolor` },
|
|
2488
2549
|
Digit0: { id: `lnklyrics` },
|
|
2489
2550
|
Semicolon: { id: `lnkbackground` },
|
|
@@ -2504,8 +2565,8 @@ const g_shortcutObj = {
|
|
|
2504
2565
|
ShiftRight_Numpad6: { id: `lnkmusicInfoR` },
|
|
2505
2566
|
ShiftLeft_Numpad7: { id: `lnkfilterLineR` },
|
|
2506
2567
|
ShiftRight_Numpad7: { id: `lnkfilterLineR` },
|
|
2507
|
-
ShiftLeft_Numpad8: { id: `
|
|
2508
|
-
ShiftRight_Numpad8: { id: `
|
|
2568
|
+
ShiftLeft_Numpad8: { id: `lnkvelocityR` },
|
|
2569
|
+
ShiftRight_Numpad8: { id: `lnkvelocityR` },
|
|
2509
2570
|
ShiftLeft_Numpad9: { id: `lnkcolorR` },
|
|
2510
2571
|
ShiftRight_Numpad9: { id: `lnkcolorR` },
|
|
2511
2572
|
ShiftLeft_Numpad0: { id: `lnklyricsR` },
|
|
@@ -2524,7 +2585,7 @@ const g_shortcutObj = {
|
|
|
2524
2585
|
Numpad5: { id: `lnkscore` },
|
|
2525
2586
|
Numpad6: { id: `lnkmusicInfo` },
|
|
2526
2587
|
Numpad7: { id: `lnkfilterLine` },
|
|
2527
|
-
Numpad8: { id: `
|
|
2588
|
+
Numpad8: { id: `lnkvelocity` },
|
|
2528
2589
|
Numpad9: { id: `lnkcolor` },
|
|
2529
2590
|
Numpad0: { id: `lnklyrics` },
|
|
2530
2591
|
NumpadAdd: { id: `lnkbackground` },
|
|
@@ -4091,7 +4152,7 @@ const g_lblNameObj = {
|
|
|
4091
4152
|
d_Score: `Score`,
|
|
4092
4153
|
d_MusicInfo: `MusicInfo`,
|
|
4093
4154
|
d_FilterLine: `FilterLine`,
|
|
4094
|
-
|
|
4155
|
+
d_Velocity: `Velocity`,
|
|
4095
4156
|
d_Color: `Color`,
|
|
4096
4157
|
d_Lyrics: `Lyrics`,
|
|
4097
4158
|
d_Background: `Background`,
|
|
@@ -4218,7 +4279,7 @@ const g_lblNameObj = {
|
|
|
4218
4279
|
'u_Shakin(Great)': `Shakin(Great)`,
|
|
4219
4280
|
'u_Fast/Slow': `Fast/Slow`,
|
|
4220
4281
|
|
|
4221
|
-
'
|
|
4282
|
+
'u_Velocity': `Velocity`,
|
|
4222
4283
|
'u_Density': `Density`,
|
|
4223
4284
|
'u_ToolDif': `DifLevel`,
|
|
4224
4285
|
'u_HighScore': `HighScore`,
|
|
@@ -4264,7 +4325,7 @@ const g_lblNameObj = {
|
|
|
4264
4325
|
rd_Score: `Score`,
|
|
4265
4326
|
rd_MusicInfo: `MusicInfo`,
|
|
4266
4327
|
rd_FilterLine: `Filter`,
|
|
4267
|
-
|
|
4328
|
+
rd_Velocity: `Velocity`,
|
|
4268
4329
|
rd_Color: `Color`,
|
|
4269
4330
|
rd_Lyrics: `Lyrics`,
|
|
4270
4331
|
rd_Background: `Back`,
|
|
@@ -4432,7 +4493,7 @@ const g_lang_msgObj = {
|
|
|
4432
4493
|
d_score: `現時点の判定数を表示`,
|
|
4433
4494
|
d_musicinfo: `音楽情報(時間表示含む)`,
|
|
4434
4495
|
d_filterline: `Hidden+, Sudden+使用時のフィルターの境界線表示`,
|
|
4435
|
-
|
|
4496
|
+
d_velocity: `途中変速、個別加速の有効化設定`,
|
|
4436
4497
|
d_color: `色変化の有効化設定`,
|
|
4437
4498
|
d_lyrics: `歌詞表示の有効化設定`,
|
|
4438
4499
|
d_background: `背景・マスクモーションの有効化設定`,
|
|
@@ -4525,7 +4586,7 @@ const g_lang_msgObj = {
|
|
|
4525
4586
|
d_score: `Display the current number of judgments`,
|
|
4526
4587
|
d_musicinfo: `Display the music credits and current time`,
|
|
4527
4588
|
d_filterline: `Filter border display when using "Hidden+" or "Sudden+"`,
|
|
4528
|
-
|
|
4589
|
+
d_velocity: `Enable velocity change settings`,
|
|
4529
4590
|
d_color: `Enable color change settings`,
|
|
4530
4591
|
d_lyrics: `Enable lyrics display`,
|
|
4531
4592
|
d_background: `Enable background images and animations`,
|
|
@@ -4548,7 +4609,7 @@ const g_lang_msgObj = {
|
|
|
4548
4609
|
judgRange: `Set the allowable range of judgment.\n[Normal] Normal judgment, [Narrow/Hard] Hard judgment, [ExHard] Very hard judgment`,
|
|
4549
4610
|
autoRetry: `Set the conditions for automatic retry.\n[Miss] When missed, [Matari] When good, [Shakin] When great, [FS] When Fast/Slow occurs`,
|
|
4550
4611
|
|
|
4551
|
-
lnkSpeedG: `Displays the
|
|
4612
|
+
lnkSpeedG: `Displays the velocity change status by progression of the chart.`,
|
|
4552
4613
|
lnkDensityG: `Displays the density status of the chart.`,
|
|
4553
4614
|
lnkToolDifG: `Displays the difficulty level of the chart and the distribution of arrows and freeze arrows.`,
|
|
4554
4615
|
lnkHighScoreG: `Displays the high score of the chart.`,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
3
|
* Dancing☆Onigiri 設定用jsファイル
|
|
4
|
-
* Template Update:
|
|
4
|
+
* Template Update: 2026/02/26 (v45.0.0)
|
|
5
5
|
*
|
|
6
6
|
* このファイルでは、作品全体に対しての初期設定を行うことができます。
|
|
7
7
|
* 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
|
|
@@ -185,7 +185,7 @@ g_presetObj.customDesignUse = {
|
|
|
185
185
|
Flat時ステップ間隔:50(px) ※矢印サイズ
|
|
186
186
|
リモート時のディレクトリ:`` (指定なし。自サーバーの画像を使用する)
|
|
187
187
|
*/
|
|
188
|
-
|
|
188
|
+
g_presetObj.imageSets = [``, `classic,png`, `classic-thin,png`, `note,svg,false,0`];
|
|
189
189
|
|
|
190
190
|
/**
|
|
191
191
|
デフォルト画像セット (C_IMG_XXXX, 厳密にはg_imgObj) に対して拡張子の上書きを行うか設定
|
|
@@ -226,6 +226,7 @@ g_presetObj.customDesignUse = {
|
|
|
226
226
|
Display設定の場合は `true,OFF`(設定は有効だが初期値はOFF)といったことができる
|
|
227
227
|
*/
|
|
228
228
|
g_presetObj.settingUse = {
|
|
229
|
+
// speed : `true`,
|
|
229
230
|
motion: `true`,
|
|
230
231
|
scroll: `true`,
|
|
231
232
|
// reverse: `true`,
|
|
@@ -242,7 +243,7 @@ g_presetObj.settingUse = {
|
|
|
242
243
|
// score: `true`,
|
|
243
244
|
// musicInfo: `true`,
|
|
244
245
|
// filterLine: `true`,
|
|
245
|
-
//
|
|
246
|
+
// velocity: `true`,
|
|
246
247
|
// color: `true`,
|
|
247
248
|
// lyrics: `true`,
|
|
248
249
|
// background: `true`,
|
|
@@ -403,10 +404,17 @@ g_presetObj.msg = {
|
|
|
403
404
|
* 設定名の上書き可否設定
|
|
404
405
|
*/
|
|
405
406
|
g_presetObj.lblRenames = {
|
|
407
|
+
// title: true,
|
|
408
|
+
// dataMgt: true,
|
|
409
|
+
// precondition: true,
|
|
406
410
|
option: true,
|
|
411
|
+
difSelector: true,
|
|
407
412
|
settingsDisplay: true,
|
|
408
|
-
|
|
413
|
+
exSetting: true,
|
|
409
414
|
keyConfig: true,
|
|
415
|
+
// loading: true,
|
|
416
|
+
// loadingIos: true,
|
|
417
|
+
main: true,
|
|
410
418
|
result: true,
|
|
411
419
|
};
|
|
412
420
|
|