danoniplus 49.5.0 → 49.6.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 +127 -59
- package/js/lib/danoni_constants.js +31 -31
- 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/08/
|
|
7
|
+
* Revised : 2026/08/16
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 49.
|
|
12
|
-
const g_revisedDate = `2026/08/
|
|
11
|
+
const g_version = `Ver 49.6.0`;
|
|
12
|
+
const g_revisedDate = `2026/08/16`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -384,7 +384,7 @@ const g_convFunc = {
|
|
|
384
384
|
* @param {string} _checkStr
|
|
385
385
|
* @param {string} _default
|
|
386
386
|
* @param {string} [_type='string']
|
|
387
|
-
* @returns
|
|
387
|
+
* @returns {number|boolean|string}
|
|
388
388
|
*/
|
|
389
389
|
const setVal = (_checkStr, _default, _type = C_TYP_STRING) =>
|
|
390
390
|
hasValN(_checkStr) ? g_convFunc[_type](_checkStr, _default) : _default;
|
|
@@ -1570,7 +1570,7 @@ const getFontSize2 = (_str, _maxWidth, { font = getBasicFont(), maxSiz = 14, min
|
|
|
1570
1570
|
};
|
|
1571
1571
|
|
|
1572
1572
|
/**
|
|
1573
|
-
*
|
|
1573
|
+
* 配列中から最も長い文字列を抽出(本体では未使用)
|
|
1574
1574
|
* @param {string[]} _array
|
|
1575
1575
|
* @returns {string}
|
|
1576
1576
|
*/
|
|
@@ -1688,8 +1688,8 @@ const dragDiv = (_divName, { minX = 0, minY = 0, maxX = g_sWidth, maxY = g_sHeig
|
|
|
1688
1688
|
const nextY = div.offsetTop + evt.movementY;
|
|
1689
1689
|
const clampMaxX = (maxX === minX) ? maxX : (maxX - div.offsetWidth);
|
|
1690
1690
|
const clampMaxY = (maxY === minY) ? maxY : (maxY - div.offsetHeight);
|
|
1691
|
-
div.style.left = Math.min(Math.max(nextX, minX), clampMaxX)
|
|
1692
|
-
div.style.top = Math.min(Math.max(nextY, minY), clampMaxY)
|
|
1691
|
+
div.style.left = wUnit(Math.min(Math.max(nextX, minX), clampMaxX));
|
|
1692
|
+
div.style.top = wUnit(Math.min(Math.max(nextY, minY), clampMaxY));
|
|
1693
1693
|
div.style.position = 'absolute';
|
|
1694
1694
|
div.draggable = false;
|
|
1695
1695
|
div.setPointerCapture(evt.pointerId);
|
|
@@ -1826,7 +1826,7 @@ const createMultipleSprite = (_baseName, _num, { x = 0, priority = g_transPriori
|
|
|
1826
1826
|
for (let j = 0; j <= _num; j++) {
|
|
1827
1827
|
createEmptySprite(sprite, `${_baseName}${j}`);
|
|
1828
1828
|
}
|
|
1829
|
-
addTransform(_baseName, `root`, `translateX(${x}
|
|
1829
|
+
addTransform(_baseName, `root`, `translateX(${wUnit(x)})`, priority);
|
|
1830
1830
|
return sprite;
|
|
1831
1831
|
};
|
|
1832
1832
|
|
|
@@ -2296,13 +2296,19 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
|
|
|
2296
2296
|
maxDepth = tmpDepth;
|
|
2297
2297
|
}
|
|
2298
2298
|
|
|
2299
|
+
const colorObjFlg = tmpSpriteData[2]?.startsWith(`[c]`) || false;
|
|
2300
|
+
const transformFlg = tmpSpriteData[2]?.startsWith(`[t]`) || false;
|
|
2299
2301
|
const tmpObj = {
|
|
2300
2302
|
path: escapeHtml(tmpSpriteData[2] ?? ``, g_escapeStr.escapeCode), // 画像パス or テキスト
|
|
2301
2303
|
class: escapeHtml(tmpSpriteData[3] ?? ``), // CSSクラス
|
|
2302
|
-
left:
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2304
|
+
left: transformFlg
|
|
2305
|
+
? setVal(tmpSpriteData[4], 1000, C_TYP_NUMBER) // [t]のみtransformのPriority
|
|
2306
|
+
: setVal(tmpSpriteData[4], `0`).includes(`{`)
|
|
2307
|
+
? `${setVal(tmpSpriteData[4], 0)}`
|
|
2308
|
+
: `{${setVal(tmpSpriteData[4], 0)}}`, // X座標
|
|
2309
|
+
top: setVal(tmpSpriteData[5], `0`).includes(`{`)
|
|
2310
|
+
? `${setVal(tmpSpriteData[5], 0)}`
|
|
2311
|
+
: `{${setVal(tmpSpriteData[5], 0)}}`, // Y座標
|
|
2306
2312
|
width: `${setIntVal(tmpSpriteData[6])}`, // spanタグの場合は font-size
|
|
2307
2313
|
height: `${escapeHtml(tmpSpriteData[7] ?? ``)}`, // spanタグの場合は color(文字列可)
|
|
2308
2314
|
opacity: setVal(tmpSpriteData[8], 1, C_TYP_FLOAT),
|
|
@@ -2319,7 +2325,6 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
|
|
|
2319
2325
|
checkDuplicatedObjects(spriteData[tmpFrame]);
|
|
2320
2326
|
|
|
2321
2327
|
const emptyPatterns = [`[loop]`, `[jump]`];
|
|
2322
|
-
const colorObjFlg = tmpSpriteData[2]?.startsWith(`[c]`) || false;
|
|
2323
2328
|
const spriteFrameData = spriteData[tmpFrame][dataCnts] = {
|
|
2324
2329
|
depth: tmpDepth,
|
|
2325
2330
|
};
|
|
@@ -2327,9 +2332,15 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
|
|
|
2327
2332
|
if (colorObjFlg) {
|
|
2328
2333
|
// [c]始まりの場合、カラーオブジェクト用の作成準備を行う
|
|
2329
2334
|
const data = tmpObj.path.slice(`[c]`.length).split(`/`);
|
|
2335
|
+
let objPart = data[0];
|
|
2336
|
+
if (!isNaN(parseInt(data[0]))) {
|
|
2337
|
+
const keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`;
|
|
2338
|
+
objPart = g_keyObj[`stepRtn${keyCtrlPtn}`][data[0]];
|
|
2339
|
+
spriteFrameData.transform = parseInt(data[0]);
|
|
2340
|
+
}
|
|
2330
2341
|
spriteFrameData.colorObjInfo = {
|
|
2331
2342
|
x: tmpObj.left, y: tmpObj.top, w: tmpObj.width, h: tmpObj.height,
|
|
2332
|
-
rotate: setVal(
|
|
2343
|
+
rotate: setVal(objPart, `0`), opacity: tmpObj.opacity,
|
|
2333
2344
|
background: makeColorGradation(setVal(data[1], `#ffffff`), { _defaultColorgrd: false }),
|
|
2334
2345
|
animationName: tmpObj.animationName,
|
|
2335
2346
|
animationDuration: `${tmpObj.animationDuration}s`,
|
|
@@ -2339,6 +2350,12 @@ const makeSpriteData = (_data, _calcFrame = _frame => _frame) => {
|
|
|
2339
2350
|
if (tmpObj.animationFillMode !== undefined) {
|
|
2340
2351
|
spriteFrameData.colorObjInfo.animationFillMode = tmpObj.animationFillMode;
|
|
2341
2352
|
}
|
|
2353
|
+
} else if (transformFlg) {
|
|
2354
|
+
// [t]始まりの場合、レイヤーに対してtransformを掛ける準備を行う
|
|
2355
|
+
const transformData = tmpObj.path.slice(`[t]`.length);
|
|
2356
|
+
spriteFrameData.transform = transformData || ``;
|
|
2357
|
+
spriteFrameData.transformId = tmpObj.class;
|
|
2358
|
+
spriteFrameData.transPriority = tmpObj.left;
|
|
2342
2359
|
|
|
2343
2360
|
} else if (tmpObj.path === ``) {
|
|
2344
2361
|
spriteFrameData.command = ``;
|
|
@@ -2422,6 +2439,10 @@ const drawBaseSpriteData = (_spriteData, _name, _condition = true) => {
|
|
|
2422
2439
|
}
|
|
2423
2440
|
} else {
|
|
2424
2441
|
if (_condition) {
|
|
2442
|
+
if (_spriteData.colorObjInfo === undefined && _spriteData.transform === undefined) {
|
|
2443
|
+
baseSprite.innerHTML = convertStrToVal(_spriteData.htmlText);
|
|
2444
|
+
return;
|
|
2445
|
+
}
|
|
2425
2446
|
if (_spriteData.colorObjInfo !== undefined) {
|
|
2426
2447
|
const colorObjClass = _spriteData.colorObjClass?.split(`/`) ?? [];
|
|
2427
2448
|
const id = `${_name}${_spriteData.depth}${_spriteData.colorObjId}`;
|
|
@@ -2429,8 +2450,32 @@ const drawBaseSpriteData = (_spriteData, _name, _condition = true) => {
|
|
|
2429
2450
|
baseSprite.appendChild(
|
|
2430
2451
|
createColorObject2(id, _spriteData.colorObjInfo, ...colorObjClass)
|
|
2431
2452
|
);
|
|
2432
|
-
}
|
|
2433
|
-
|
|
2453
|
+
}
|
|
2454
|
+
if (_spriteData.transform !== undefined) {
|
|
2455
|
+
const targetId = `${_name}Sprite${_spriteData.depth}`;
|
|
2456
|
+
|
|
2457
|
+
if (!isNaN(parseInt(_spriteData.transform))) {
|
|
2458
|
+
// PlayWindow由来のtransformを継承(別transformId)
|
|
2459
|
+
const transformId = `${_name}${_spriteData.depth}PlayWindow`;
|
|
2460
|
+
const transformData = getTransform(`mainSprite`, `playWindow`);
|
|
2461
|
+
|
|
2462
|
+
if (hasVal(transformData)) {
|
|
2463
|
+
if (transformData !== getTransform(targetId, transformId)) {
|
|
2464
|
+
addTransform(targetId, transformId, transformData, g_transPriority.playWindow);
|
|
2465
|
+
}
|
|
2466
|
+
} else {
|
|
2467
|
+
delTransform(targetId, transformId);
|
|
2468
|
+
}
|
|
2469
|
+
} else {
|
|
2470
|
+
// 明示指定のtransformを適用
|
|
2471
|
+
const transformId = _spriteData.transformId || `${_name}${_spriteData.depth}`;
|
|
2472
|
+
|
|
2473
|
+
if (hasVal(_spriteData.transform)) {
|
|
2474
|
+
addTransform(targetId, transformId, _spriteData.transform, _spriteData.transPriority);
|
|
2475
|
+
} else {
|
|
2476
|
+
delTransform(targetId, transformId);
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2434
2479
|
}
|
|
2435
2480
|
}
|
|
2436
2481
|
}
|
|
@@ -3507,8 +3552,8 @@ const createSplitCanvases = (_width, _totalHeight) => {
|
|
|
3507
3552
|
cvs.height = logicalH * g_dpr;
|
|
3508
3553
|
|
|
3509
3554
|
// ブラウザ上の表示サイズをセット
|
|
3510
|
-
cvs.style.width =
|
|
3511
|
-
cvs.style.height =
|
|
3555
|
+
cvs.style.width = wUnit(_width);
|
|
3556
|
+
cvs.style.height = wUnit(logicalH);
|
|
3512
3557
|
cvs.style.display = 'block';
|
|
3513
3558
|
|
|
3514
3559
|
const ctx = cvs.getContext('2d');
|
|
@@ -3568,8 +3613,8 @@ const createMinimapHeader = (_config, _keyCtrlPtn, _keyNum) => {
|
|
|
3568
3613
|
// 解像度と表示サイズの設定
|
|
3569
3614
|
canvas.width = logicalWidth * g_dpr;
|
|
3570
3615
|
canvas.height = headerHeight * g_dpr;
|
|
3571
|
-
canvas.style.width =
|
|
3572
|
-
canvas.style.height =
|
|
3616
|
+
canvas.style.width = wUnit(logicalWidth);
|
|
3617
|
+
canvas.style.height = wUnit(headerHeight);
|
|
3573
3618
|
canvas.style.display = 'block';
|
|
3574
3619
|
|
|
3575
3620
|
ctx.scale(g_dpr, g_dpr);
|
|
@@ -4419,8 +4464,8 @@ const headerConvert = _dosObj => {
|
|
|
4419
4464
|
obj.playingY = setIntVal(_dosObj.playingY, g_presetObj.playingY ?? 0);
|
|
4420
4465
|
|
|
4421
4466
|
// ステップゾーン位置
|
|
4422
|
-
g_posObj.stepY = (
|
|
4423
|
-
g_posObj.stepYR = (
|
|
4467
|
+
g_posObj.stepY = setVal(_dosObj.stepY, C_STEP_Y, C_TYP_FLOAT);
|
|
4468
|
+
g_posObj.stepYR = setVal(_dosObj.stepYR, C_STEP_YR, C_TYP_FLOAT);
|
|
4424
4469
|
g_posObj.stepDiffY = g_posObj.stepY - C_STEP_Y;
|
|
4425
4470
|
g_posObj.distY = obj.playingHeight - C_STEP_Y + g_posObj.stepYR;
|
|
4426
4471
|
g_posObj.reverseStepY = g_posObj.distY - g_posObj.stepY - g_posObj.stepDiffY - C_ARW_WIDTH;
|
|
@@ -4431,18 +4476,18 @@ const headerConvert = _dosObj => {
|
|
|
4431
4476
|
obj.baseSpeed = 1 + ((g_posObj.distY - (g_posObj.stepY - C_STEP_Y) * 2) / (500 - C_STEP_Y) - 1) * 0.85;
|
|
4432
4477
|
|
|
4433
4478
|
// 矢印・フリーズアロー判定位置補正
|
|
4434
|
-
g_diffObj.arrowJdgX = (
|
|
4435
|
-
g_diffObj.arrowJdgY = (
|
|
4436
|
-
g_diffObj.frzJdgX = (
|
|
4437
|
-
g_diffObj.frzJdgY = (
|
|
4479
|
+
g_diffObj.arrowJdgX = setVal(_dosObj.arrowJdgX, 0, C_TYP_FLOAT);
|
|
4480
|
+
g_diffObj.arrowJdgY = setVal(_dosObj.arrowJdgY, 0, C_TYP_FLOAT);
|
|
4481
|
+
g_diffObj.frzJdgX = setVal(_dosObj.frzJdgX, 0, C_TYP_FLOAT);
|
|
4482
|
+
g_diffObj.frzJdgY = setVal(_dosObj.frzJdgY, 0, C_TYP_FLOAT);
|
|
4438
4483
|
g_diffInitObj.arrowJdgX = g_diffObj.arrowJdgX;
|
|
4439
4484
|
g_diffInitObj.arrowJdgY = g_diffObj.arrowJdgY;
|
|
4440
4485
|
g_diffInitObj.frzJdgX = g_diffObj.frzJdgX;
|
|
4441
4486
|
g_diffInitObj.frzJdgY = g_diffObj.frzJdgY;
|
|
4442
4487
|
|
|
4443
4488
|
// ショートカット表示位置補正
|
|
4444
|
-
g_diffObj.shortcutX = (
|
|
4445
|
-
g_diffObj.shortcutY = (
|
|
4489
|
+
g_diffObj.shortcutX = setVal(_dosObj.shortcutX, 0, C_TYP_FLOAT);
|
|
4490
|
+
g_diffObj.shortcutY = setVal(_dosObj.shortcutY, 0, C_TYP_FLOAT);
|
|
4446
4491
|
g_diffInitObj.shortcutX = g_diffObj.shortcutX;
|
|
4447
4492
|
g_diffInitObj.shortcutY = g_diffObj.shortcutY;
|
|
4448
4493
|
|
|
@@ -6011,7 +6056,7 @@ const titleInit = (_initFlg = false) => {
|
|
|
6011
6056
|
}, g_lblPosObj.btnComment, g_cssObj.button_Default),
|
|
6012
6057
|
);
|
|
6013
6058
|
if (g_headerObj.musicSelectUse && getQueryParamVal(`scoreId`) === null) {
|
|
6014
|
-
lblComment.style.height =
|
|
6059
|
+
lblComment.style.height = wUnit(g_sHeight - 100);
|
|
6015
6060
|
}
|
|
6016
6061
|
setUserSelect(lblComment.style, `text`);
|
|
6017
6062
|
}
|
|
@@ -6555,7 +6600,7 @@ const changeMSelect = (_num, _initFlg = false) => {
|
|
|
6555
6600
|
g_lblPosObj.lblDifNameInfoM.w, { maxSiz: g_lblPosObj.lblDifNameInfoM.siz }));
|
|
6556
6601
|
lblDiffiInfoM.style.fontSize = lblDifNameInfoM.style.fontSize;
|
|
6557
6602
|
lblNotesInfoM.style.fontSize = lblDifNameInfoM.style.fontSize;
|
|
6558
|
-
lblCommentInfoM.style.top =
|
|
6603
|
+
lblCommentInfoM.style.top = wUnit(getStrHeight(lblDifNameInfoM.innerHTML, parseFloat(lblDifNameInfoM.style.fontSize)));
|
|
6559
6604
|
lblCommentInfoM.innerHTML = convertStrToVal(g_headerObj[`commentVal${g_settings.musicIdxNum}`]);
|
|
6560
6605
|
lblCommentM.scrollTop = 0;
|
|
6561
6606
|
|
|
@@ -8012,12 +8057,12 @@ const drawMinimap = (_scoreId, { _initFlg = false, _fadeinFlg = false } = {}) =>
|
|
|
8012
8057
|
|
|
8013
8058
|
// --- ヘッダー部分 ---
|
|
8014
8059
|
const detailMiniMapHeader = createEmptySprite(detailMiniMap, `detailMiniMapHeader`, g_windowObj.detailMiniMapHeader);
|
|
8015
|
-
$id(`detailMiniMapHeader`).top = (g_stateObj.miniMapRevFlg ? 230 + g_sHeight - 500 : 0)
|
|
8060
|
+
$id(`detailMiniMapHeader`).top = wUnit(g_stateObj.miniMapRevFlg ? 230 + g_sHeight - 500 : 0);
|
|
8016
8061
|
detailMiniMapHeader.appendChild(g_detailObj.scoreMinimapHeader[kPtn]);
|
|
8017
8062
|
|
|
8018
8063
|
// --- メイン(譜面)部分 ---
|
|
8019
8064
|
const detailMiniMapSub = createEmptySprite(detailMiniMap, `detailMiniMapSub`, g_windowObj.detailMiniMapSub);
|
|
8020
|
-
$id(`detailMiniMapSub`).top = (g_stateObj.miniMapRevFlg ? 0 : 15)
|
|
8065
|
+
$id(`detailMiniMapSub`).top = wUnit(g_stateObj.miniMapRevFlg ? 0 : 15);
|
|
8021
8066
|
|
|
8022
8067
|
Object.assign(detailMiniMapSub.style, {
|
|
8023
8068
|
overflowX: 'hidden',
|
|
@@ -9854,17 +9899,16 @@ const showToast = _msg => {
|
|
|
9854
9899
|
if (existing) existing.remove();
|
|
9855
9900
|
|
|
9856
9901
|
const toast = createDivCss2Label(`previewToast`, _msg, {
|
|
9857
|
-
x: g_btnX() + g_btnWidth() / 2, y: 50, w: g_btnWidth() / 2, h: 10,
|
|
9902
|
+
x: g_btnX() + g_btnWidth() / 2, y: 50, w: g_btnWidth() / 2, h: 10, siz: 12,
|
|
9858
9903
|
transform: `translateX(-50%)`,
|
|
9859
9904
|
background: `rgba(0,40,80,0.92)`,
|
|
9860
9905
|
color: `#aaddff`,
|
|
9861
9906
|
border: `1px solid #3366aa`,
|
|
9862
9907
|
borderRadius: `6px`,
|
|
9863
9908
|
padding: `6px 16px`,
|
|
9864
|
-
fontSize: `12px`,
|
|
9865
9909
|
fontFamily: `monospace`,
|
|
9866
9910
|
whiteSpace: `nowrap`,
|
|
9867
|
-
pointerEvents:
|
|
9911
|
+
pointerEvents: C_DIS_NONE,
|
|
9868
9912
|
transition: `opacity 0.4s`,
|
|
9869
9913
|
opacity: `1`,
|
|
9870
9914
|
});
|
|
@@ -10382,14 +10426,20 @@ const keyConfigInit = (_kcType = g_kcType, _initFlg = false) => {
|
|
|
10382
10426
|
|
|
10383
10427
|
/**
|
|
10384
10428
|
* 指定関数群だけを抽出したtransform文字列を作成
|
|
10429
|
+
* @param {string} _cssString
|
|
10430
|
+
* @param {string[]} _funcNames
|
|
10431
|
+
* @returns {string}
|
|
10385
10432
|
*/
|
|
10386
|
-
const extractTransformFuncs = (
|
|
10387
|
-
const pattern = new RegExp(`\\b(${
|
|
10388
|
-
return (
|
|
10433
|
+
const extractTransformFuncs = (_cssString, _funcNames) => {
|
|
10434
|
+
const pattern = new RegExp(`\\b(${_funcNames.join(`|`)})\\([^)]*\\)`, `g`);
|
|
10435
|
+
return (_cssString.match(pattern) || []).join(` `);
|
|
10389
10436
|
};
|
|
10390
10437
|
|
|
10391
10438
|
/**
|
|
10392
10439
|
* 対象レーンのレイヤー番号を取得
|
|
10440
|
+
* @param {number} _j
|
|
10441
|
+
* @param {number} _posj
|
|
10442
|
+
* @returns {number}
|
|
10393
10443
|
*/
|
|
10394
10444
|
const getLayerIdx = (_j, _posj) => {
|
|
10395
10445
|
const baseLayer = g_keyObj[`layerGroup${keyCtrlPtn}`]?.[_j] || 0;
|
|
@@ -10399,6 +10449,8 @@ const keyConfigInit = (_kcType = g_kcType, _initFlg = false) => {
|
|
|
10399
10449
|
|
|
10400
10450
|
/**
|
|
10401
10451
|
* 対象レイヤーの回転変形を取得
|
|
10452
|
+
* @param {string} _keyCtrlPtn
|
|
10453
|
+
* @returns {string[]}
|
|
10402
10454
|
*/
|
|
10403
10455
|
const getLayerRotateParts = _keyCtrlPtn => {
|
|
10404
10456
|
const raw = g_keyObj[`layerTrans${_keyCtrlPtn}`]?.[0] ?? [``, ``, ``, ``];
|
|
@@ -10414,7 +10466,7 @@ const keyConfigInit = (_kcType = g_kcType, _initFlg = false) => {
|
|
|
10414
10466
|
|
|
10415
10467
|
g_keyCopyLists.simpleDef.forEach(header => updateKeyInfo(header, keyCtrlPtn));
|
|
10416
10468
|
addTransform(`keyconSprite`, `root`, `scale(${g_keyObj.scale})`, g_transPriority.scale);
|
|
10417
|
-
keyconSprite.style.height =
|
|
10469
|
+
keyconSprite.style.height = wUnit(parseFloat(keyconSprite.style.height) / ((1 + g_keyObj.scale) / 2));
|
|
10418
10470
|
const kWidth = parseInt(keyconSprite.style.width);
|
|
10419
10471
|
changeSetColor();
|
|
10420
10472
|
|
|
@@ -11228,10 +11280,10 @@ const keyConfigInit = (_kcType = g_kcType, _initFlg = false) => {
|
|
|
11228
11280
|
g_headerObj[`key${selectedKc}Def`] = setKey;
|
|
11229
11281
|
document.getElementById(`sc${selectedKc}`).textContent = getScMsg[selectedKc]();
|
|
11230
11282
|
document.getElementById(`sc${selectedKc}`).style.fontSize =
|
|
11231
|
-
|
|
11283
|
+
wUnit(getFontSize2(getScMsg[selectedKc](), g_btnWidth(5 / 12) - 40, { maxSiz: g_limitObj.mainSiz }));
|
|
11232
11284
|
if (g_isMac) {
|
|
11233
11285
|
scTitleBack.textContent = getScMsg.TitleBack();
|
|
11234
|
-
scTitleBack.style.fontSize =
|
|
11286
|
+
scTitleBack.style.fontSize = wUnit(getFontSize2(getScMsg.TitleBack(), g_btnWidth(5 / 12) - 40, { maxSiz: g_limitObj.mainSiz }));
|
|
11235
11287
|
}
|
|
11236
11288
|
changeConfigColor(document.getElementById(`sc${selectedKc}`),
|
|
11237
11289
|
g_headerObj[`key${selectedKc}`] === g_headerObj[`key${selectedKc}Def2`] ?
|
|
@@ -11321,6 +11373,7 @@ const completeTransKeyPtn = (_keyList) => {
|
|
|
11321
11373
|
});
|
|
11322
11374
|
};
|
|
11323
11375
|
|
|
11376
|
+
// KeyLockボタンを押したときの表示切替
|
|
11324
11377
|
const toggleKcDesc = () => {
|
|
11325
11378
|
if (document.getElementById(`kcDesc`) !== null) {
|
|
11326
11379
|
kcDesc.textContent = getKcDescMsg();
|
|
@@ -11331,11 +11384,13 @@ const toggleKcDesc = () => {
|
|
|
11331
11384
|
}
|
|
11332
11385
|
};
|
|
11333
11386
|
|
|
11387
|
+
// KeyLockボタンの表示文字列を取得
|
|
11334
11388
|
const getKcDescMsg = () =>
|
|
11335
11389
|
g_stateObj.keyLockFlg
|
|
11336
11390
|
? g_lblNameObj.kcNonDesc
|
|
11337
11391
|
: g_lblNameObj.kcDesc.split(`{0}`).join(g_kCd[C_KEY_RETRY]).split(`{1}:`).join(g_isMac ? `` : `Delete:`);
|
|
11338
11392
|
|
|
11393
|
+
// KeyLockボタンで使用する絵文字の取得
|
|
11339
11394
|
const getKeyLockName = () =>
|
|
11340
11395
|
`${g_lblNameObj.b_keyLock}${g_stateObj.keyLockFlg ? g_emojiObj.locked : g_emojiObj.unlocked}`;
|
|
11341
11396
|
|
|
@@ -11661,6 +11716,8 @@ const keyconfigKeyboardPreview = (() => {
|
|
|
11661
11716
|
|
|
11662
11717
|
/**
|
|
11663
11718
|
* Canvasの共通初期化処理
|
|
11719
|
+
* @param {HTMLCanvasElement} canvas
|
|
11720
|
+
* @returns {CanvasRenderingContext2D|null}
|
|
11664
11721
|
*/
|
|
11665
11722
|
const setupCanvasContext = (canvas) => {
|
|
11666
11723
|
if (!canvas) return null;
|
|
@@ -11675,6 +11732,15 @@ const keyconfigKeyboardPreview = (() => {
|
|
|
11675
11732
|
return ctx;
|
|
11676
11733
|
};
|
|
11677
11734
|
|
|
11735
|
+
/**
|
|
11736
|
+
* 円角矩形を描画する
|
|
11737
|
+
* @param {CanvasRenderingContext2D} ctx
|
|
11738
|
+
* @param {number} x
|
|
11739
|
+
* @param {number} y
|
|
11740
|
+
* @param {number} w
|
|
11741
|
+
* @param {number} h
|
|
11742
|
+
* @param {number} r
|
|
11743
|
+
*/
|
|
11678
11744
|
const roundRect = (ctx, x, y, w, h, r) => {
|
|
11679
11745
|
ctx.beginPath();
|
|
11680
11746
|
ctx.moveTo(x + r, y);
|
|
@@ -12617,7 +12683,7 @@ const applyShuffle = (_keyNum, _shuffleGroup, _style) => {
|
|
|
12617
12683
|
* @param {number[]} _group
|
|
12618
12684
|
* @param {number} _i
|
|
12619
12685
|
* @param {number} _divideNum
|
|
12620
|
-
* @returns
|
|
12686
|
+
* @returns {number[][]}
|
|
12621
12687
|
*/
|
|
12622
12688
|
const swapGroupNums = (_style, _group, _i, _divideNum) => {
|
|
12623
12689
|
if (_group.length % _divideNum === 0) {
|
|
@@ -12791,7 +12857,7 @@ const applySRandom = (_keyNum, _shuffleGroup, _arrowHeader, _frzHeader) => {
|
|
|
12791
12857
|
* @param {string} [_dummyNo] ダミー用譜面番号添え字
|
|
12792
12858
|
* @param {string} [_keyCtrlPtn] 選択キー及びパターン
|
|
12793
12859
|
* @param {boolean} [_scoreAnalyzeFlg=false] 譜面詳細データのために必要分で読込を中断
|
|
12794
|
-
* @returns
|
|
12860
|
+
* @returns {object} 矢印・フリーズアロー・速度/色変化データの格納オブジェクト
|
|
12795
12861
|
*/
|
|
12796
12862
|
const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
12797
12863
|
_keyCtrlPtn = `${g_keyObj.currentKey}_${g_keyObj.currentPtn}`, _scoreAnalyzeFlg = false) => {
|
|
@@ -12934,7 +13000,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
12934
13000
|
* - 個別・全体色変化を一体で管理するため通常の配列で返却
|
|
12935
13001
|
* @param {string} _header
|
|
12936
13002
|
* @param {number} _scoreNo
|
|
12937
|
-
* @returns
|
|
13003
|
+
* @returns {any[][]}
|
|
12938
13004
|
*/
|
|
12939
13005
|
const setColor2Data = (_header, _scoreNo) => {
|
|
12940
13006
|
const dosColorData = getRefData(_header, `${_scoreNo}_data`);
|
|
@@ -13067,7 +13133,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
13067
13133
|
* 例) |backA2_data=back_data| -> back_dataで定義された値を使用
|
|
13068
13134
|
* @param {string} _header
|
|
13069
13135
|
* @param {string} _dataName
|
|
13070
|
-
* @returns
|
|
13136
|
+
* @returns {string|undefined}
|
|
13071
13137
|
*/
|
|
13072
13138
|
const getRefData = (_header, _dataName) => {
|
|
13073
13139
|
const data = _dosObj[`${_header}${_dataName}`];
|
|
@@ -13124,7 +13190,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
13124
13190
|
/**
|
|
13125
13191
|
* 歌詞データの分解
|
|
13126
13192
|
* @param {string} _scoreNo
|
|
13127
|
-
* @returns
|
|
13193
|
+
* @returns {string[][]}
|
|
13128
13194
|
*/
|
|
13129
13195
|
const makeWordData = _scoreNo => {
|
|
13130
13196
|
const wordDataList = [];
|
|
@@ -13225,7 +13291,7 @@ const scoreConvert = (_dosObj, _scoreId, _preblankFrame, _dummyNo = ``,
|
|
|
13225
13291
|
* @param {string} _header
|
|
13226
13292
|
* @param {string} _scoreNo 譜面番号
|
|
13227
13293
|
* @param {string[]} [object.resultTypes] リザルトモーションの種類 (result, failedB, failedS)
|
|
13228
|
-
* @returns
|
|
13294
|
+
* @returns {any[][]}
|
|
13229
13295
|
*/
|
|
13230
13296
|
const makeBackgroundData = (_header, _scoreNo, { resultTypes = [] } = {}) => {
|
|
13231
13297
|
const dataList = [];
|
|
@@ -13365,6 +13431,7 @@ const calcLifeVals = _allArrows => {
|
|
|
13365
13431
|
* ライフ回復量・ダメージ量の算出
|
|
13366
13432
|
* @param {number} _val
|
|
13367
13433
|
* @param {number} _allArrows
|
|
13434
|
+
* @returns {number}
|
|
13368
13435
|
*/
|
|
13369
13436
|
const calcLifeVal = (_val, _allArrows) => _val * g_headerObj.maxLifeVal / _allArrows;
|
|
13370
13437
|
|
|
@@ -13484,6 +13551,7 @@ const setSpeedOnFrame = (_speedData, _lastFrame) => {
|
|
|
13484
13551
|
/**
|
|
13485
13552
|
* Motionオプション適用時の矢印別の速度設定
|
|
13486
13553
|
* - 矢印が表示される最大フレーム数を 101フレーム と定義。
|
|
13554
|
+
* @returns {number[]}
|
|
13487
13555
|
*/
|
|
13488
13556
|
const setMotionOnFrame = () => g_motionFunc.get(g_stateObj.motion)(fillArray(101));
|
|
13489
13557
|
|
|
@@ -13828,7 +13896,7 @@ const pushArrows = (_dataObj, _speedOnFrame, _firstArrivalFrame) => {
|
|
|
13828
13896
|
* 歌詞表示、背景・マスク表示のフェードイン時調整処理
|
|
13829
13897
|
* @param {string} _type
|
|
13830
13898
|
* @param {object} _data
|
|
13831
|
-
* @returns
|
|
13899
|
+
* @returns {object}
|
|
13832
13900
|
*/
|
|
13833
13901
|
const calcAnimationData = (_type, _data) => {
|
|
13834
13902
|
|
|
@@ -14761,15 +14829,15 @@ const mainInit = () => {
|
|
|
14761
14829
|
}
|
|
14762
14830
|
|
|
14763
14831
|
addTransform(`mainSprite`, `root`, `scale(${g_workObj.scale})`, g_transPriority.scale);
|
|
14764
|
-
addTransform(`mainSprite`, `main`, `translateX(${g_workObj.playingX}
|
|
14832
|
+
addTransform(`mainSprite`, `main`, `translateX(${wUnit(g_workObj.playingX)}) translateY(${wUnit(g_posObj.stepY - C_STEP_Y + g_headerObj.playingY)})`, g_transPriority.base);
|
|
14765
14833
|
|
|
14766
14834
|
// 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
|
|
14767
14835
|
const infoSprite = createEmptySprite(divRoot, `infoSprite`, mainCommonPos);
|
|
14768
|
-
addTransform(`infoSprite`, `main`, `translateX(${g_workObj.playingX}
|
|
14836
|
+
addTransform(`infoSprite`, `main`, `translateX(${wUnit(g_workObj.playingX)}) translateY(${wUnit(g_headerObj.playingY)})`, g_transPriority.base);
|
|
14769
14837
|
|
|
14770
14838
|
// 判定系スプライトを作成(メインスプライトより上位)
|
|
14771
14839
|
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, mainCommonPos);
|
|
14772
|
-
addTransform(`judgeSprite`, `main`, `translateX(${g_workObj.playingX}
|
|
14840
|
+
addTransform(`judgeSprite`, `main`, `translateX(${wUnit(g_workObj.playingX)}) translateY(${wUnit(g_headerObj.playingY)})`, g_transPriority.base);
|
|
14773
14841
|
const tkObj = getKeyInfo();
|
|
14774
14842
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
14775
14843
|
|
|
@@ -15634,7 +15702,7 @@ const mainInit = () => {
|
|
|
15634
15702
|
const setArrowYCondition = `${String(g_attrObj[arrowName].movLockFlg)}_${String(initManualFlg)}`;
|
|
15635
15703
|
setArrowY.get(setArrowYCondition)(arrowName, firstPosY, stepY);
|
|
15636
15704
|
if (!initManualFlg) {
|
|
15637
|
-
addTransform(arrowName, `rootX`, `translateX(${g_workObj.stepX[_j]}
|
|
15705
|
+
addTransform(arrowName, `rootX`, `translateX(${wUnit(g_workObj.stepX[_j])})`);
|
|
15638
15706
|
}
|
|
15639
15707
|
|
|
15640
15708
|
/**
|
|
@@ -15824,7 +15892,7 @@ const mainInit = () => {
|
|
|
15824
15892
|
const setArrowYCondition = `${String(g_attrObj[frzName].movLockFlg)}_${String(initManualFlg)}`;
|
|
15825
15893
|
setArrowY.get(setArrowYCondition)(frzName, firstPosY, stepY);
|
|
15826
15894
|
if (!initManualFlg) {
|
|
15827
|
-
addTransform(frzName, `rootX`, `translateX(${g_workObj.stepX[_j]}
|
|
15895
|
+
addTransform(frzName, `rootX`, `translateX(${wUnit(g_workObj.stepX[_j])})`);
|
|
15828
15896
|
}
|
|
15829
15897
|
|
|
15830
15898
|
safeExecuteCustomHooks(`g_customJsObj.makeFrzArrow`, g_customJsObj.makeFrzArrow, _attrs, frzName, _name, _arrowCnt);
|
|
@@ -16340,20 +16408,20 @@ const changeAppearanceFilter = (_num = 10) => {
|
|
|
16340
16408
|
$id(`arrowSprite${topNum + j}`).clipPath = topShape;
|
|
16341
16409
|
$id(`arrowSprite${bottomNum + j}`).clipPath = bottomShape;
|
|
16342
16410
|
|
|
16343
|
-
addTransform(`filterBar${topNum + j}`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j}`).top) + topDist}
|
|
16344
|
-
addTransform(`filterBar${bottomNum + j}`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist}
|
|
16411
|
+
addTransform(`filterBar${topNum + j}`, `appearance`, `translateY(${wUnit(parseFloat($id(`arrowSprite${j}`).top) + topDist)})`, g_transPriority.layer);
|
|
16412
|
+
addTransform(`filterBar${bottomNum + j}`, `appearance`, `translateY(${wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) + bottomDist)})`, g_transPriority.layer);
|
|
16345
16413
|
|
|
16346
16414
|
if (doubleFilterFlg) {
|
|
16347
|
-
addTransform(`filterBar${bottomNum + j}_HS`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j}`).top) + bottomDist}
|
|
16348
|
-
addTransform(`filterBar${topNum + j}_HS`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${j + 1}`).top) + topDist}
|
|
16415
|
+
addTransform(`filterBar${bottomNum + j}_HS`, `appearance`, `translateY(${wUnit(parseFloat($id(`arrowSprite${j}`).top) + bottomDist)})`, g_transPriority.layer);
|
|
16416
|
+
addTransform(`filterBar${topNum + j}_HS`, `appearance`, `translateY(${wUnit(parseFloat($id(`arrowSprite${j + 1}`).top) + topDist)})`, g_transPriority.layer);
|
|
16349
16417
|
}
|
|
16350
16418
|
}
|
|
16351
16419
|
|
|
16352
16420
|
// フィルターバーのパーセント表示(フィルターバーが複数表示されるなど複雑なため、最初の階層グループの位置に追従)
|
|
16353
16421
|
if (g_appearanceRanges.includes(g_stateObj.appearance)) {
|
|
16354
16422
|
const currentBarNum = g_hidSudObj.std[g_stateObj.appearance][g_stateObj.reverse];
|
|
16355
|
-
addTransform(`filterView`, `appearance`, `translateY(${parseFloat($id(`arrowSprite${currentBarNum % 2}`).top) +
|
|
16356
|
-
(currentBarNum % 2 === 0 ? bottomDist : topDist)}
|
|
16423
|
+
addTransform(`filterView`, `appearance`, `translateY(${wUnit(parseFloat($id(`arrowSprite${currentBarNum % 2}`).top) +
|
|
16424
|
+
(currentBarNum % 2 === 0 ? bottomDist : topDist))})`, g_transPriority.layer);
|
|
16357
16425
|
filterView.textContent = `${_num}%`;
|
|
16358
16426
|
g_hidSudObj.filterPos = _num;
|
|
16359
16427
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/08/
|
|
8
|
+
* Revised : 2026/08/16 (v49.6.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -163,8 +163,8 @@ const C_TYP_CALC = `calc`;
|
|
|
163
163
|
let [g_sWidth, g_sHeight] = [
|
|
164
164
|
setVal($id(`canvas-frame`).width, 500, C_TYP_FLOAT), setVal($id(`canvas-frame`).height, 500, C_TYP_FLOAT)
|
|
165
165
|
];
|
|
166
|
-
$id(`canvas-frame`).width =
|
|
167
|
-
$id(`canvas-frame`).height =
|
|
166
|
+
$id(`canvas-frame`).width = wUnit(Math.max(g_sWidth, 500));
|
|
167
|
+
$id(`canvas-frame`).height = wUnit(Math.max(g_sHeight, 500));
|
|
168
168
|
$id(`canvas-frame`).margin = C_DIS_AUTO;
|
|
169
169
|
|
|
170
170
|
const g_btnWidth = (_multi = 1) => Math.min(g_sWidth, g_limitObj.btnBaseWidth) * _multi;
|
|
@@ -1615,7 +1615,7 @@ const addX = (_id, _typeId, _x = 0, { overwrite = false, priority = 1000 } = {})
|
|
|
1615
1615
|
}
|
|
1616
1616
|
if (g_posXs[_id].get(_typeId) !== _x) {
|
|
1617
1617
|
g_posXs[_id].set(_typeId, _x);
|
|
1618
|
-
addTransform(_id, `posX`, `translateX(${sumData(Array.from(g_posXs[_id].values()))}
|
|
1618
|
+
addTransform(_id, `posX`, `translateX(${wUnit(sumData(Array.from(g_posXs[_id].values())))})`, priority);
|
|
1619
1619
|
}
|
|
1620
1620
|
};
|
|
1621
1621
|
|
|
@@ -1636,7 +1636,7 @@ const addY = (_id, _typeId, _y = 0, { overwrite = false, priority = 1000 } = {})
|
|
|
1636
1636
|
}
|
|
1637
1637
|
if (g_posYs[_id].get(_typeId) !== _y) {
|
|
1638
1638
|
g_posYs[_id].set(_typeId, _y);
|
|
1639
|
-
addTransform(_id, `posY`, `translateY(${sumData(Array.from(g_posYs[_id].values()))}
|
|
1639
|
+
addTransform(_id, `posY`, `translateY(${wUnit(sumData(Array.from(g_posYs[_id].values())))})`, priority);
|
|
1640
1640
|
}
|
|
1641
1641
|
};
|
|
1642
1642
|
|
|
@@ -1653,7 +1653,7 @@ const delX = (_id, _typeId) => {
|
|
|
1653
1653
|
return;
|
|
1654
1654
|
}
|
|
1655
1655
|
const priority = g_transforms[_id]?.get(`posX`)?.priority ?? 1000;
|
|
1656
|
-
addTransform(_id, `posX`, `translateX(${sumData(Array.from(g_posXs[_id].values()))}
|
|
1656
|
+
addTransform(_id, `posX`, `translateX(${wUnit(sumData(Array.from(g_posXs[_id].values())))})`, priority);
|
|
1657
1657
|
};
|
|
1658
1658
|
|
|
1659
1659
|
/**
|
|
@@ -1669,7 +1669,7 @@ const delY = (_id, _typeId) => {
|
|
|
1669
1669
|
return;
|
|
1670
1670
|
}
|
|
1671
1671
|
const priority = g_transforms[_id]?.get(`posY`)?.priority ?? 1000;
|
|
1672
|
-
addTransform(_id, `posY`, `translateY(${sumData(Array.from(g_posYs[_id].values()))}
|
|
1672
|
+
addTransform(_id, `posY`, `translateY(${wUnit(sumData(Array.from(g_posYs[_id].values())))})`, priority);
|
|
1673
1673
|
};
|
|
1674
1674
|
|
|
1675
1675
|
/**
|
|
@@ -1866,7 +1866,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1866
1866
|
['Halfway', () => {
|
|
1867
1867
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1868
1868
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
1869
|
-
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}
|
|
1869
|
+
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${wUnit(halfwayOffset(j))})`, g_transPriority.stepArea);
|
|
1870
1870
|
}
|
|
1871
1871
|
});
|
|
1872
1872
|
|
|
@@ -1877,7 +1877,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1877
1877
|
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1878
1878
|
addTransform(
|
|
1879
1879
|
`filterBar${j}`, `stepArea`,
|
|
1880
|
-
`translateY(calc(${g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1} * ${halfwayOffset(j)}
|
|
1880
|
+
`translateY(calc(${g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1} * ${wUnit(halfwayOffset(j))}))`,
|
|
1881
1881
|
g_transPriority.stepArea
|
|
1882
1882
|
);
|
|
1883
1883
|
}
|
|
@@ -1888,12 +1888,12 @@ const g_stepAreaFunc = new Map([
|
|
|
1888
1888
|
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1889
1889
|
addTransform(
|
|
1890
1890
|
`filterBar${j}_HS`, `stepArea`,
|
|
1891
|
-
`translateY(calc(${(-1) * (g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1)} * ${halfwayOffset(j)}
|
|
1891
|
+
`translateY(calc(${(-1) * (g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1)} * ${wUnit(halfwayOffset(j))}))`,
|
|
1892
1892
|
g_transPriority.stepArea
|
|
1893
1893
|
);
|
|
1894
1894
|
}
|
|
1895
1895
|
}
|
|
1896
|
-
addTransform(`filterView`, `stepArea`, `translateY(${halfwayOffset(Number(g_settings.reverseNum))}
|
|
1896
|
+
addTransform(`filterView`, `stepArea`, `translateY(${wUnit(halfwayOffset(Number(g_settings.reverseNum)))})`, g_transPriority.stepArea);
|
|
1897
1897
|
}
|
|
1898
1898
|
}],
|
|
1899
1899
|
['Mismatched', () => {
|
|
@@ -1903,7 +1903,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1903
1903
|
if (g_workObj.orgFlatFlg) {
|
|
1904
1904
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1905
1905
|
for (let j = g_stateObj.layerNumDf; j < g_stateObj.layerNum; j++) {
|
|
1906
|
-
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}
|
|
1906
|
+
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${wUnit(halfwayOffset(j))})`, g_transPriority.stepArea);
|
|
1907
1907
|
}
|
|
1908
1908
|
});
|
|
1909
1909
|
|
|
@@ -1914,14 +1914,14 @@ const g_stepAreaFunc = new Map([
|
|
|
1914
1914
|
// Hidden+用のフィルターバー補正
|
|
1915
1915
|
addTransform(
|
|
1916
1916
|
`filterBar${j + Number(g_settings.reverseNum)}_HS`, `stepArea`,
|
|
1917
|
-
`translateY(calc((${getDirFromRev()}) * ${halfwayOffset(j)}
|
|
1917
|
+
`translateY(calc((${getDirFromRev()}) * ${wUnit(halfwayOffset(j))}))`,
|
|
1918
1918
|
g_transPriority.stepArea
|
|
1919
1919
|
);
|
|
1920
1920
|
} else {
|
|
1921
1921
|
// Sudden+用のフィルターバー補正
|
|
1922
1922
|
addTransform(
|
|
1923
1923
|
`filterBar${j - Number(g_settings.reverseNum)}`, `stepArea`,
|
|
1924
|
-
`translateY(calc((${(-1) * getDirFromRev()}) * ${halfwayOffset(j)}
|
|
1924
|
+
`translateY(calc((${(-1) * getDirFromRev()}) * ${wUnit(halfwayOffset(j))}))`,
|
|
1925
1925
|
g_transPriority.stepArea
|
|
1926
1926
|
);
|
|
1927
1927
|
}
|
|
@@ -1936,7 +1936,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1936
1936
|
if (g_workObj.orgFlatFlg) {
|
|
1937
1937
|
g_arrowGroupSprite.forEach(sprite => {
|
|
1938
1938
|
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1939
|
-
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${halfwayOffset(j)}
|
|
1939
|
+
addTransform(`${sprite}${j}`, `stepArea`, `translateY(${wUnit(halfwayOffset(j))})`, g_transPriority.stepArea);
|
|
1940
1940
|
}
|
|
1941
1941
|
});
|
|
1942
1942
|
|
|
@@ -1947,14 +1947,14 @@ const g_stepAreaFunc = new Map([
|
|
|
1947
1947
|
// Hidden+用のフィルターバー補正
|
|
1948
1948
|
addTransform(
|
|
1949
1949
|
`filterBar${j + Number(g_settings.reverseNum)}`, `stepArea`,
|
|
1950
|
-
`translateY(calc((${getDirFromRev()}) * ${halfwayOffset(j)}
|
|
1950
|
+
`translateY(calc((${getDirFromRev()}) * ${wUnit(halfwayOffset(j))}))`,
|
|
1951
1951
|
g_transPriority.stepArea
|
|
1952
1952
|
);
|
|
1953
1953
|
} else {
|
|
1954
1954
|
// Sudden+用のフィルターバー補正
|
|
1955
1955
|
addTransform(
|
|
1956
1956
|
`filterBar${j - Number(g_settings.reverseNum)}_HS`, `stepArea`,
|
|
1957
|
-
`translateY(calc((${(-1) * getDirFromRev()}) * ${halfwayOffset(j)}
|
|
1957
|
+
`translateY(calc((${(-1) * getDirFromRev()}) * ${wUnit(halfwayOffset(j))}))`,
|
|
1958
1958
|
g_transPriority.stepArea
|
|
1959
1959
|
);
|
|
1960
1960
|
}
|
|
@@ -1974,7 +1974,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1974
1974
|
for (let j = 0; j < g_stateObj.layerNumDf; j++) {
|
|
1975
1975
|
addTransform(
|
|
1976
1976
|
`filterBar${j}_HS`, `stepArea`,
|
|
1977
|
-
`translateY(calc((${g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1}) * ${halfwayOffset(j)}
|
|
1977
|
+
`translateY(calc((${g_hidSudObj[g_stateObj.appearance] === 0 ? 1 : -1}) * ${wUnit(halfwayOffset(j))}))`,
|
|
1978
1978
|
g_transPriority.stepArea
|
|
1979
1979
|
);
|
|
1980
1980
|
}
|
|
@@ -1983,7 +1983,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1983
1983
|
for (let j = 0; j < g_stateObj.layerNumDf; j += 2) {
|
|
1984
1984
|
addTransform(
|
|
1985
1985
|
`filterBar${j + Number(g_settings.reverseNum)}_HS`, `stepArea`,
|
|
1986
|
-
`translateY(calc((${getDirFromRev()}) * ${halfwayOffset(j)}
|
|
1986
|
+
`translateY(calc((${getDirFromRev()}) * ${wUnit(halfwayOffset(j))}))`,
|
|
1987
1987
|
g_transPriority.stepArea
|
|
1988
1988
|
);
|
|
1989
1989
|
}
|
|
@@ -1998,7 +1998,7 @@ const g_stepAreaFunc = new Map([
|
|
|
1998
1998
|
['Alt-Crossing', () => {
|
|
1999
1999
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
2000
2000
|
addTransform(`mainSprite${j}`, `stepArea`, `rotate(${getDirFromLayer(j) * -10}deg) ` +
|
|
2001
|
-
`translateX(${getDirFromLayer(j) * 20}
|
|
2001
|
+
`translateX(${wUnit(getDirFromLayer(j) * 20)})`, g_transPriority.stepArea);
|
|
2002
2002
|
}
|
|
2003
2003
|
}],
|
|
2004
2004
|
]);
|
|
@@ -2012,34 +2012,34 @@ const getShakingDist = () => (Math.abs((g_scoreObj.baseFrame / 2) % 100 - 50) -
|
|
|
2012
2012
|
const g_shakingFunc = new Map([
|
|
2013
2013
|
['OFF', () => true],
|
|
2014
2014
|
['Horizontal', (_multi = 1) => {
|
|
2015
|
-
addTransform(`mainSprite`, `shakingX_base`, `translateX(${getShakingDist() * _multi}
|
|
2015
|
+
addTransform(`mainSprite`, `shakingX_base`, `translateX(${wUnit(getShakingDist() * _multi)})`, g_transPriority.shakingX)
|
|
2016
2016
|
}],
|
|
2017
2017
|
['Vertical', (_multi = 1) => {
|
|
2018
|
-
addTransform(`mainSprite`, `shakingY_base`, `translateY(${getShakingDist() / 2 * _multi}
|
|
2018
|
+
addTransform(`mainSprite`, `shakingY_base`, `translateY(${wUnit(getShakingDist() / 2 * _multi)})`, g_transPriority.shakingY)
|
|
2019
2019
|
}],
|
|
2020
2020
|
['X-Horizontal', (_multi = 1) => {
|
|
2021
2021
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
2022
|
-
addTransform(`mainSprite${j}`, `shakingX_layer`, `translateX(${getDirFromLayer(j) * (4 / 3) * getShakingDist() * _multi}
|
|
2022
|
+
addTransform(`mainSprite${j}`, `shakingX_layer`, `translateX(${wUnit(getDirFromLayer(j) * (4 / 3) * getShakingDist() * _multi)})`, g_transPriority.shakingX);
|
|
2023
2023
|
}
|
|
2024
2024
|
}],
|
|
2025
2025
|
['X-Vertical', (_multi = 1) => {
|
|
2026
2026
|
for (let j = 0; j < g_stateObj.layerNum; j++) {
|
|
2027
|
-
addTransform(`mainSprite${j}`, `shakingY_layer`, `translateY(${getDirFromLayer(j) * getShakingDist() * _multi}
|
|
2027
|
+
addTransform(`mainSprite${j}`, `shakingY_layer`, `translateY(${wUnit(getDirFromLayer(j) * getShakingDist() * _multi)})`, g_transPriority.shakingY);
|
|
2028
2028
|
}
|
|
2029
2029
|
}],
|
|
2030
2030
|
['Drunk', (_multi = 1) => {
|
|
2031
2031
|
const dist = getShakingDist();
|
|
2032
2032
|
if (g_workObj.drunkXFlg) {
|
|
2033
2033
|
const deltaX = dist * _multi;
|
|
2034
|
-
addTransform(`mainSprite`, `shakingX_drunk`, `translateX(${deltaX}
|
|
2035
|
-
addTransform(`infoSprite`, `shakingX_drunk`, `translateX(${deltaX}
|
|
2036
|
-
addTransform(`judgeSprite`, `shakingX_drunk`, `translateX(${deltaX}
|
|
2034
|
+
addTransform(`mainSprite`, `shakingX_drunk`, `translateX(${wUnit(deltaX)})`, g_transPriority.shakingX);
|
|
2035
|
+
addTransform(`infoSprite`, `shakingX_drunk`, `translateX(${wUnit(deltaX)})`, g_transPriority.shakingX);
|
|
2036
|
+
addTransform(`judgeSprite`, `shakingX_drunk`, `translateX(${wUnit(deltaX)})`, g_transPriority.shakingX);
|
|
2037
2037
|
}
|
|
2038
2038
|
if (g_workObj.drunkYFlg) {
|
|
2039
2039
|
const deltaY = dist / 2 * _multi;
|
|
2040
|
-
addTransform(`mainSprite`, `shakingY_drunk`, `translateY(${deltaY}
|
|
2041
|
-
addTransform(`infoSprite`, `shakingY_drunk`, `translateY(${deltaY}
|
|
2042
|
-
addTransform(`judgeSprite`, `shakingY_drunk`, `translateY(${deltaY}
|
|
2040
|
+
addTransform(`mainSprite`, `shakingY_drunk`, `translateY(${wUnit(deltaY)})`, g_transPriority.shakingY);
|
|
2041
|
+
addTransform(`infoSprite`, `shakingY_drunk`, `translateY(${wUnit(deltaY)})`, g_transPriority.shakingY);
|
|
2042
|
+
addTransform(`judgeSprite`, `shakingY_drunk`, `translateY(${wUnit(deltaY)})`, g_transPriority.shakingY);
|
|
2043
2043
|
}
|
|
2044
2044
|
// 補正がゼロになったときに軸の移動方法をランダムで決定
|
|
2045
2045
|
if (dist === 0) {
|
|
@@ -2298,7 +2298,7 @@ let g_canDisabledSettings = [`speed`, `motion`, `scroll`, `reverse`, `shuffle`,
|
|
|
2298
2298
|
|
|
2299
2299
|
const g_hidSudFunc = new Map([
|
|
2300
2300
|
['filterPos', _filterPos => `${_filterPos}${g_lblNameObj.percent}`],
|
|
2301
|
-
['range', () =>
|
|
2301
|
+
['range', () => wUnit(Math.round(g_posObj.arrowHeight - g_posObj.stepY))],
|
|
2302
2302
|
['hidden', _filterPos => `${Math.min(Math.round(g_posObj.arrowHeight * (100 - _filterPos) / 100), g_posObj.arrowHeight - g_posObj.stepY)}`],
|
|
2303
2303
|
['sudden', _filterPos => `${Math.max(Math.round(g_posObj.arrowHeight * (100 - _filterPos) / 100) - g_posObj.stepY, 0)}`],
|
|
2304
2304
|
]);
|