danoniplus 48.1.2 → 48.3.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 +273 -125
- package/js/lib/danoni_constants.js +72 -9
- 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/05/
|
|
7
|
+
* Revised : 2026/05/31
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 48.
|
|
12
|
-
const g_revisedDate = `2026/05/
|
|
11
|
+
const g_version = `Ver 48.3.0`;
|
|
12
|
+
const g_revisedDate = `2026/05/31`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -4359,8 +4359,26 @@ const headerConvert = _dosObj => {
|
|
|
4359
4359
|
obj.baseSpeed = 1 + ((g_posObj.distY - (g_posObj.stepY - C_STEP_Y) * 2) / (500 - C_STEP_Y) - 1) * 0.85;
|
|
4360
4360
|
|
|
4361
4361
|
// 矢印・フリーズアロー判定位置補正
|
|
4362
|
+
g_diffObj.arrowJdgX = (isNaN(parseFloat(_dosObj.arrowJdgX)) ? 0 : parseFloat(_dosObj.arrowJdgX));
|
|
4362
4363
|
g_diffObj.arrowJdgY = (isNaN(parseFloat(_dosObj.arrowJdgY)) ? 0 : parseFloat(_dosObj.arrowJdgY));
|
|
4364
|
+
g_diffObj.frzJdgX = (isNaN(parseFloat(_dosObj.frzJdgX)) ? 0 : parseFloat(_dosObj.frzJdgX));
|
|
4363
4365
|
g_diffObj.frzJdgY = (isNaN(parseFloat(_dosObj.frzJdgY)) ? 0 : parseFloat(_dosObj.frzJdgY));
|
|
4366
|
+
g_diffInitObj.arrowJdgX = g_diffObj.arrowJdgX;
|
|
4367
|
+
g_diffInitObj.arrowJdgY = g_diffObj.arrowJdgY;
|
|
4368
|
+
g_diffInitObj.frzJdgX = g_diffObj.frzJdgX;
|
|
4369
|
+
g_diffInitObj.frzJdgY = g_diffObj.frzJdgY;
|
|
4370
|
+
|
|
4371
|
+
// ショートカット表示位置補正
|
|
4372
|
+
g_diffObj.shortcutX = (isNaN(parseFloat(_dosObj.shortcutX)) ? 0 : parseFloat(_dosObj.shortcutX));
|
|
4373
|
+
g_diffObj.shortcutY = (isNaN(parseFloat(_dosObj.shortcutY)) ? 0 : parseFloat(_dosObj.shortcutY));
|
|
4374
|
+
g_diffInitObj.shortcutX = g_diffObj.shortcutX;
|
|
4375
|
+
g_diffInitObj.shortcutY = g_diffObj.shortcutY;
|
|
4376
|
+
|
|
4377
|
+
if (Object.keys(g_diffObj).some(key => g_localStorage[key] !== undefined)) {
|
|
4378
|
+
Object.keys(g_diffObj).forEach(key =>
|
|
4379
|
+
g_diffObj[key] = setIntVal(g_localStorage[key], g_diffObj[key])
|
|
4380
|
+
);
|
|
4381
|
+
}
|
|
4364
4382
|
|
|
4365
4383
|
// musicフォルダ設定
|
|
4366
4384
|
obj.musicFolder = _dosObj.musicFolder ?? (g_remoteFlg ? `${C_MRK_CURRENT_DIRECTORY}../music` : `music`);
|
|
@@ -6734,6 +6752,11 @@ const dataMgtInit = () => {
|
|
|
6734
6752
|
.filter(key => key.startsWith('dm_') && g_stateObj[key] === C_FLG_ON)
|
|
6735
6753
|
.map(key => key.slice(`dm_`.length));
|
|
6736
6754
|
|
|
6755
|
+
if (selectedData.length === 0) {
|
|
6756
|
+
window.alert(g_msgObj.noDataSelected);
|
|
6757
|
+
return;
|
|
6758
|
+
}
|
|
6759
|
+
|
|
6737
6760
|
if (window.confirm(g_msgObj.dataResetConfirm +
|
|
6738
6761
|
`\n\n${selectedData.map(val => `- ${g_msgObj[val] || g_msgObj.keyTypes.split('{0}').join(val)}`).join(`\n`)}`)) {
|
|
6739
6762
|
selectedData.forEach(key => {
|
|
@@ -9106,8 +9129,9 @@ let g_previewLsnrKeys = new Set();
|
|
|
9106
9129
|
|
|
9107
9130
|
/** プレビュー内の各UIオブジェクトの現在座標 */
|
|
9108
9131
|
const g_previewPos = {
|
|
9109
|
-
|
|
9110
|
-
|
|
9132
|
+
arrowJdg: { x: null, y: null }, // 通常判定キャラクタ・コンボ
|
|
9133
|
+
frzJdg: { x: null, y: null }, // フリーズ判定キャラクタ・コンボ
|
|
9134
|
+
shortcut: { x: null, y: null },
|
|
9111
9135
|
};
|
|
9112
9136
|
|
|
9113
9137
|
/**
|
|
@@ -9156,8 +9180,23 @@ const openDisplayPreview = () => {
|
|
|
9156
9180
|
createCss2Button(`btnDisplayPreview2`, `↑ Preview`, _evt => {
|
|
9157
9181
|
toggleDisplayPreview();
|
|
9158
9182
|
}, g_lblPosObj.btnDisplayPreview, g_cssObj.button_Setting),
|
|
9183
|
+
createCss2Button(`btnDisplayReset`, `Reset`, _evt => {
|
|
9184
|
+
if (window.confirm(g_msgObj.displayPreviewResetConfirm)) {
|
|
9185
|
+
Object.assign(g_diffObj, g_diffInitObj);
|
|
9186
|
+
Object.keys(g_diffInitObj).forEach(key => {
|
|
9187
|
+
g_localStorage[key] = g_diffInitObj[key];
|
|
9188
|
+
});
|
|
9189
|
+
Object.keys(g_previewPos).forEach(key => g_previewPos[key] = { x: null, y: null });
|
|
9190
|
+
closeDisplayPreview();
|
|
9191
|
+
openDisplayPreview();
|
|
9192
|
+
}
|
|
9193
|
+
}, g_lblPosObj.btnDisplayReset, g_cssObj.button_Reset),
|
|
9159
9194
|
createDescDiv(`lblDisplayPreviewMsg`, g_lblNameObj.displayPreviewDesc),
|
|
9160
9195
|
);
|
|
9196
|
+
if (g_headerObj.scAreaWidth > 0) {
|
|
9197
|
+
overlay.appendChild(createDescDiv(`lblDisplayPreviewMsg2`, g_lblNameObj.displayPreviewDesc2));
|
|
9198
|
+
}
|
|
9199
|
+
createScText(btnDisplayReset, `DisplayPreviewReset`, { displayName: `displayPreview`, targetLabel: `btnDisplayReset`, x: -15 });
|
|
9161
9200
|
|
|
9162
9201
|
// ============================================================
|
|
9163
9202
|
// プレイ画面フレーム(白枠)
|
|
@@ -9172,7 +9211,6 @@ const openDisplayPreview = () => {
|
|
|
9172
9211
|
x: frameX, y: frameY, w: playW, h: playH,
|
|
9173
9212
|
background: `#111111`,
|
|
9174
9213
|
border: `1px solid #444444`,
|
|
9175
|
-
overflow: `hidden`,
|
|
9176
9214
|
boxSizing: `border-box`,
|
|
9177
9215
|
transform: `scale(${rate})`,
|
|
9178
9216
|
});
|
|
@@ -9268,13 +9306,13 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9268
9306
|
const fX0 = Math.round(_playW / 2 - 120) + (g_diffObj.frzJdgX ?? 0);
|
|
9269
9307
|
const fY0 = Math.round((_playH + (g_posObj?.stepYR ?? 0)) / 2 + 10) + (g_diffObj.frzJdgY ?? 0);
|
|
9270
9308
|
|
|
9271
|
-
const jdgInitX = g_previewPos.
|
|
9272
|
-
const jdgInitY = g_previewPos.
|
|
9273
|
-
const jdgFInitX = g_previewPos.
|
|
9274
|
-
const jdgFInitY = g_previewPos.
|
|
9309
|
+
const jdgInitX = g_previewPos.arrowJdg.x ?? jX0;
|
|
9310
|
+
const jdgInitY = g_previewPos.arrowJdg.y ?? jY0;
|
|
9311
|
+
const jdgFInitX = g_previewPos.frzJdg.x ?? fX0;
|
|
9312
|
+
const jdgFInitY = g_previewPos.frzJdg.y ?? fY0;
|
|
9275
9313
|
|
|
9276
9314
|
// 通常判定グループ
|
|
9277
|
-
buildDraggableJudgGroup(_frame, `
|
|
9315
|
+
buildDraggableJudgGroup(_frame, `arrowJdg`, jdgInitX, jdgInitY, _playW, _playH, {
|
|
9278
9316
|
charaText: d.judgment === C_FLG_ON ? g_lblNameObj.j_ii : ``,
|
|
9279
9317
|
comboText: d.judgment === C_FLG_ON ? `5 Combo!!` : ``,
|
|
9280
9318
|
diffText: `Fast 3 Frames`,
|
|
@@ -9282,7 +9320,7 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9282
9320
|
});
|
|
9283
9321
|
|
|
9284
9322
|
// フリーズ判定グループ
|
|
9285
|
-
buildDraggableJudgGroup(_frame, `
|
|
9323
|
+
buildDraggableJudgGroup(_frame, `frzJdg`, jdgFInitX, jdgFInitY, _playW, _playH, {
|
|
9286
9324
|
charaText: d.judgment === C_FLG_ON ? g_lblNameObj.j_kita : ``,
|
|
9287
9325
|
comboText: d.judgment === C_FLG_ON ? `5 Combo!!` : ``,
|
|
9288
9326
|
diffText: `Fast 2 Frames`,
|
|
@@ -9294,21 +9332,12 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9294
9332
|
// ライフゲージ(左縦帯)
|
|
9295
9333
|
// ============================================================
|
|
9296
9334
|
if (d.lifegauge === C_FLG_OFF) {
|
|
9297
|
-
_frame.appendChild(disableBox(`LifeGauge`,
|
|
9335
|
+
_frame.appendChild(disableBox(`LifeGauge`, g_lblPosObj.previewLifeDisabled));
|
|
9298
9336
|
} else {
|
|
9299
9337
|
multiAppend(_frame,
|
|
9300
|
-
createDivCss2Label(`previewLifeBack`, ``,
|
|
9301
|
-
|
|
9302
|
-
|
|
9303
|
-
}),
|
|
9304
|
-
createDivCss2Label(`previewLifeBar`, ``, {
|
|
9305
|
-
x: 5, y: 50 + (_playH - 100) * 0.3,
|
|
9306
|
-
w: 15, h: (_playH - 100) * 0.7, background: `#006666`,
|
|
9307
|
-
}),
|
|
9308
|
-
createDivCss2Label(`previewLifeNum`, `700`, {
|
|
9309
|
-
x: 0, y: 30, w: 70, h: 20,
|
|
9310
|
-
size: 14, color: `#ffffff`, background: `#006666`, align: `center`,
|
|
9311
|
-
}),
|
|
9338
|
+
createDivCss2Label(`previewLifeBack`, ``, g_lblPosObj.previewLifeBack),
|
|
9339
|
+
createDivCss2Label(`previewLifeBar`, ``, g_lblPosObj.previewLifeBar),
|
|
9340
|
+
createDivCss2Label(`previewLifeNum`, `700`, g_lblPosObj.previewLifeNum),
|
|
9312
9341
|
);
|
|
9313
9342
|
}
|
|
9314
9343
|
|
|
@@ -9316,7 +9345,11 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9316
9345
|
// スコア・判定カウンタ(右端縦列)
|
|
9317
9346
|
// ============================================================
|
|
9318
9347
|
if (d.score === C_FLG_OFF) {
|
|
9319
|
-
_frame.appendChild(disableBox(`Score`,
|
|
9348
|
+
_frame.appendChild(disableBox(`Score`, g_lblPosObj.previewScoreDisabled));
|
|
9349
|
+
|
|
9350
|
+
if (g_stateObj.frzReturn !== C_FLG_OFF) {
|
|
9351
|
+
_frame.appendChild(disableBox(`FrzReturnBar`, g_lblPosObj.previewLifeFrzDisabled));
|
|
9352
|
+
}
|
|
9320
9353
|
} else {
|
|
9321
9354
|
const scoreItems = [
|
|
9322
9355
|
{ color: `#66ffff`, cnt: `5` },
|
|
@@ -9330,7 +9363,7 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9330
9363
|
{ color: `#99ff66`, cnt: `0` },
|
|
9331
9364
|
{ color: `#ffffff`, cnt: `5` },
|
|
9332
9365
|
];
|
|
9333
|
-
const sx = _playW - 110;
|
|
9366
|
+
const sx = _playW - 110 + g_headerObj.scAreaWidth;
|
|
9334
9367
|
scoreItems.forEach((item, i) => {
|
|
9335
9368
|
_frame.appendChild(
|
|
9336
9369
|
createDivCss2Label(`previewScore${i}`, item.cnt || ``, {
|
|
@@ -9339,36 +9372,164 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9339
9372
|
}),
|
|
9340
9373
|
);
|
|
9341
9374
|
});
|
|
9375
|
+
|
|
9376
|
+
// FrzReturn用ゲージ
|
|
9377
|
+
if (g_stateObj.frzReturn !== C_FLG_OFF) {
|
|
9378
|
+
multiAppend(_frame,
|
|
9379
|
+
createDivCss2Label(`previewFrzLifeBack`, ``, g_lblPosObj.previewFrzLifeBack),
|
|
9380
|
+
createDivCss2Label(`previewFrzLifeBar`, ``, g_lblPosObj.previewFrzLifeBar, g_cssObj.life_frzNormal),
|
|
9381
|
+
);
|
|
9382
|
+
}
|
|
9342
9383
|
}
|
|
9343
9384
|
|
|
9344
9385
|
// ============================================================
|
|
9345
9386
|
// 曲名・制作者(左下)
|
|
9346
9387
|
// ============================================================
|
|
9347
9388
|
if (d.musicinfo === C_FLG_OFF) {
|
|
9348
|
-
_frame.appendChild(disableBox(`MusicInfo`,
|
|
9389
|
+
_frame.appendChild(disableBox(`MusicInfo`, g_lblPosObj.previewMusicInfoDisabled));
|
|
9390
|
+
_frame.appendChild(disableBox(`GaugeName`, g_lblPosObj.previewGaugeNameDisabled));
|
|
9349
9391
|
} else {
|
|
9350
|
-
|
|
9351
|
-
|
|
9352
|
-
|
|
9353
|
-
|
|
9392
|
+
const creditName = `Sample Music / Artist Name`;
|
|
9393
|
+
const difName = `[7key / Normal]`;
|
|
9394
|
+
const checkMusicSiz = (_text, _siz) => getFontSize2(_text, g_headerObj.playingWidth - g_headerObj.customViewWidth - 125, { maxSiz: _siz });
|
|
9395
|
+
|
|
9396
|
+
multiAppend(_frame,
|
|
9397
|
+
createDivCss2Label(`previewCredit`, creditName, {
|
|
9398
|
+
...g_lblPosObj.lblCredit, siz: checkMusicSiz(creditName, g_limitObj.musicTitleSiz)
|
|
9354
9399
|
}),
|
|
9355
|
-
createDivCss2Label(`previewDifName`,
|
|
9356
|
-
...g_lblPosObj.
|
|
9400
|
+
createDivCss2Label(`previewDifName`, difName, {
|
|
9401
|
+
...g_lblPosObj.lblDifName, siz: checkMusicSiz(difName, 12)
|
|
9357
9402
|
}),
|
|
9358
9403
|
createDivCss2Label(`previewTime1`, `0:04 /`, {
|
|
9359
|
-
...g_lblPosObj.
|
|
9360
|
-
}),
|
|
9361
|
-
createDivCss2Label(`previewTime2`, `2:54`, {
|
|
9362
|
-
...g_lblPosObj.previewCredit, x: 60, y: _playH - 30, w: 60, h: 20,
|
|
9404
|
+
...g_lblPosObj.lblTime1,
|
|
9363
9405
|
}),
|
|
9406
|
+
createDivCss2Label(`previewTime2`, `2:54`, g_lblPosObj.lblTime2),
|
|
9407
|
+
|
|
9408
|
+
// ゲージ設定名
|
|
9409
|
+
createDivCss2Label(`previewGauge`, `Original`, g_lblPosObj.lblGaugeMode),
|
|
9364
9410
|
)
|
|
9365
9411
|
}
|
|
9412
|
+
|
|
9413
|
+
// ============================================================
|
|
9414
|
+
// ショートカット表示
|
|
9415
|
+
// ============================================================
|
|
9416
|
+
const scGroup = createEmptySprite(_frame, `previewScGroup`, {
|
|
9417
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85 + g_diffObj.shortcutX,
|
|
9418
|
+
y: _playH - 65 + g_diffObj.shortcutY, w: 80, h: 65, pointerEvents: C_DIS_AUTO,
|
|
9419
|
+
});
|
|
9420
|
+
multiAppend(scGroup,
|
|
9421
|
+
createDivCss2Label(`lblRetry`, `[${g_lblNameObj.l_retry}]`, { ...g_lblPosObj.lblMainScHeader, x: 0, y: 0 }),
|
|
9422
|
+
createDivCss2Label(`lblRetrySc`, g_kCd[g_headerObj.keyRetry],
|
|
9423
|
+
{ ...g_lblPosObj.lblMainScKey, x: 0, y: 15, fontWeight: g_headerObj.keyRetry === C_KEY_RETRY ? `normal` : `bold` }),
|
|
9424
|
+
createDivCss2Label(`lblTitleBack`, `[${g_lblNameObj.l_titleBack}]`, { ...g_lblPosObj.lblMainScHeader, x: 0, y: 35 }),
|
|
9425
|
+
createDivCss2Label(`lblTitleBackSc`, g_isMac ? `Shift+${g_kCd[g_headerObj.keyRetry]}` : g_kCd[g_headerObj.keyTitleBack],
|
|
9426
|
+
{ ...g_lblPosObj.lblMainScKey, x: 0, y: 50, fontWeight: g_headerObj.keyTitleBack === C_KEY_TITLEBACK ? `normal` : `bold` }),
|
|
9427
|
+
);
|
|
9428
|
+
const scConfig = {
|
|
9429
|
+
toastTitle: g_lblNameObj.shortcutUpdate,
|
|
9430
|
+
getStdX: (pw) => g_sWidth + g_headerObj.scAreaWidth - 85,
|
|
9431
|
+
getStdY: (ph, syr) => _playH - 65,
|
|
9432
|
+
};
|
|
9433
|
+
makeElementDraggable(scGroup, `shortcut`, _playW, _playH, { w: 80, h: 65 }, scConfig);
|
|
9434
|
+
|
|
9435
|
+
// ユーザカスタムイベント(プレビュー表示用)
|
|
9436
|
+
safeExecuteCustomHooks(`g_customJsObj.displayPreview`, g_customJsObj.displayPreview, _frame, _playW, _playH);
|
|
9437
|
+
};
|
|
9438
|
+
|
|
9439
|
+
/**
|
|
9440
|
+
* 要素をドラッグ可能にする(汎用ユーティリティ)
|
|
9441
|
+
* @param {HTMLElement} _target ドラッグ対象の要素
|
|
9442
|
+
* @param {string} _key 座標保存用のキー(g_previewPosオブジェクトのプロパティ名)
|
|
9443
|
+
* @param {number} _playW 制限範囲の幅
|
|
9444
|
+
* @param {number} _playH 制限範囲の高さ
|
|
9445
|
+
* @param {object} _bounds 要素自体のサイズ { w, h, scale } (はみ出し防止用)
|
|
9446
|
+
* @param {object} _config 座標反映ルールオブジェクト
|
|
9447
|
+
*/
|
|
9448
|
+
const makeElementDraggable = (_target, _key, _playW, _playH, _bounds, _config) => {
|
|
9449
|
+
let dragging = false;
|
|
9450
|
+
let dragStartX = 0, dragStartY = 0;
|
|
9451
|
+
let elemStartX = 0, elemStartY = 0;
|
|
9452
|
+
|
|
9453
|
+
const boundsW = _bounds?.w ?? _target.offsetWidth ?? 0;
|
|
9454
|
+
const boundsH = _bounds?.h ?? _target.offsetHeight ?? 0;
|
|
9455
|
+
const scale = _bounds?.scale ?? 0.8;
|
|
9456
|
+
|
|
9457
|
+
// ドラッグハンドル(薄い枠)を作成
|
|
9458
|
+
const handleId = _target.id ? `handle_${_target.id}` : `dragHandle_${Math.random().toString(36).slice(2, 9)}`;
|
|
9459
|
+
_target.style.cursor = `grab`;
|
|
9460
|
+
|
|
9461
|
+
createEmptySprite(_target, handleId, {
|
|
9462
|
+
x: 0, y: 0, w: boundsW, h: boundsH,
|
|
9463
|
+
border: `1px dashed rgba(255,255,255,0.3)`,
|
|
9464
|
+
boxSizing: `border-box`, borderRadius: `2px`,
|
|
9465
|
+
background: `rgba(255,255,255,0.04)`,
|
|
9466
|
+
});
|
|
9467
|
+
|
|
9468
|
+
const keyDown = addPreviewListener(_target, `pointerdown`, _evt => {
|
|
9469
|
+
dragging = true;
|
|
9470
|
+
dragStartX = _evt.clientX;
|
|
9471
|
+
dragStartY = _evt.clientY;
|
|
9472
|
+
elemStartX = parseInt(_target.style.left, 10) || 0;
|
|
9473
|
+
elemStartY = parseInt(_target.style.top, 10) || 0;
|
|
9474
|
+
_target.style.cursor = `grabbing`;
|
|
9475
|
+
_target.setPointerCapture(_evt.pointerId);
|
|
9476
|
+
_evt.stopPropagation();
|
|
9477
|
+
});
|
|
9478
|
+
|
|
9479
|
+
const keyMove = addPreviewListener(_target, `pointermove`, _evt => {
|
|
9480
|
+
if (!dragging) return;
|
|
9481
|
+
|
|
9482
|
+
// 1. マウスの実際の移動量を計算
|
|
9483
|
+
const mouseDx = _evt.clientX - dragStartX;
|
|
9484
|
+
const mouseDy = _evt.clientY - dragStartY;
|
|
9485
|
+
|
|
9486
|
+
// 2. 【最重要】スケール逆算して、縮小空間内の移動量に変換
|
|
9487
|
+
const dx = mouseDx / scale;
|
|
9488
|
+
const dy = mouseDy / scale;
|
|
9489
|
+
|
|
9490
|
+
// 3. 境界値制限
|
|
9491
|
+
const minX = g_headerObj.playingLayout ? -g_headerObj.scAreaWidth : 0;
|
|
9492
|
+
const newX = Math.max(minX, Math.min(_playW + g_headerObj.scAreaWidth - boundsW, elemStartX + dx));
|
|
9493
|
+
const newY = Math.max(0, Math.min(_playH - boundsH, elemStartY + dy));
|
|
9494
|
+
|
|
9495
|
+
_target.style.left = wUnit(newX);
|
|
9496
|
+
_target.style.top = wUnit(newY);
|
|
9497
|
+
_evt.stopPropagation();
|
|
9498
|
+
});
|
|
9499
|
+
|
|
9500
|
+
const keyUp = addPreviewListener(_target, `pointerup`, _evt => {
|
|
9501
|
+
if (!dragging) return;
|
|
9502
|
+
dragging = false;
|
|
9503
|
+
_target.style.cursor = `grab`;
|
|
9504
|
+
|
|
9505
|
+
const finalX = parseInt(_target.style.left, 10) || 0;
|
|
9506
|
+
const finalY = parseInt(_target.style.top, 10) || 0;
|
|
9507
|
+
|
|
9508
|
+
if (g_previewPos[_key]) {
|
|
9509
|
+
g_previewPos[_key].x = finalX;
|
|
9510
|
+
g_previewPos[_key].y = finalY;
|
|
9511
|
+
}
|
|
9512
|
+
if (_config) {
|
|
9513
|
+
applyElementPositionToGame(finalX, finalY, _config, _key);
|
|
9514
|
+
}
|
|
9515
|
+
_evt.stopPropagation();
|
|
9516
|
+
});
|
|
9517
|
+
|
|
9518
|
+
addPreviewListener(_target, `pointercancel`, _evt => {
|
|
9519
|
+
dragging = false;
|
|
9520
|
+
_target.style.cursor = `grab`;
|
|
9521
|
+
});
|
|
9522
|
+
|
|
9523
|
+
// 既存の管理用属性(必要に応じて)
|
|
9524
|
+
_target.setAttribute(`lsnrkey`, keyMove);
|
|
9525
|
+
_target.setAttribute(`lsnrkeyTS`, keyDown);
|
|
9526
|
+
_target.setAttribute(`lsnrkeyTE`, keyUp);
|
|
9366
9527
|
};
|
|
9367
9528
|
|
|
9368
9529
|
/**
|
|
9369
9530
|
* ドラッグ可能な判定グループを生成する
|
|
9370
9531
|
* @param {HTMLElement} _parent 親要素
|
|
9371
|
-
* @param {string} _groupId `
|
|
9532
|
+
* @param {string} _groupId `arrowJdg` または `frzJdg`
|
|
9372
9533
|
* @param {number} _initX 初期X座標(frame相対)
|
|
9373
9534
|
* @param {number} _initY 初期Y座標(frame相対)
|
|
9374
9535
|
* @param {number} _playW プレイ幅
|
|
@@ -9376,11 +9537,14 @@ const buildPreviewUI = (_frame, _playW, _playH) => {
|
|
|
9376
9537
|
* @param {object} _opts 表示テキスト・色オプション
|
|
9377
9538
|
*/
|
|
9378
9539
|
const buildDraggableJudgGroup = (_parent, _groupId, _initX, _initY, _playW, _playH, _opts) => {
|
|
9540
|
+
const groupW = 370;
|
|
9541
|
+
const groupH = 51;
|
|
9379
9542
|
|
|
9380
9543
|
const group = createEmptySprite(_parent, `previewGrp_${_groupId}`, {
|
|
9381
|
-
x: _initX, y: _initY, w:
|
|
9544
|
+
x: _initX, y: _initY, w: groupW, h: groupH, pointerEvents: C_DIS_AUTO,
|
|
9382
9545
|
});
|
|
9383
9546
|
|
|
9547
|
+
// 内包要素の生成 (省略:元のコードの multiAppend 部分と同一)
|
|
9384
9548
|
multiAppend(
|
|
9385
9549
|
group,
|
|
9386
9550
|
// キャラクタ
|
|
@@ -9400,93 +9564,55 @@ const buildDraggableJudgGroup = (_parent, _groupId, _initX, _initY, _playW, _pla
|
|
|
9400
9564
|
}),
|
|
9401
9565
|
);
|
|
9402
9566
|
|
|
9403
|
-
//
|
|
9404
|
-
|
|
9405
|
-
|
|
9406
|
-
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9414
|
-
|
|
9415
|
-
|
|
9416
|
-
|
|
9417
|
-
|
|
9418
|
-
dragStartY = _evt.clientY;
|
|
9419
|
-
elemStartX = parseInt(group.style.left, 10);
|
|
9420
|
-
elemStartY = parseInt(group.style.top, 10);
|
|
9421
|
-
group.style.cursor = `grabbing`;
|
|
9422
|
-
group.setPointerCapture(_evt.pointerId);
|
|
9423
|
-
_evt.stopPropagation();
|
|
9424
|
-
});
|
|
9425
|
-
const keyMove = addPreviewListener(group, `pointermove`, _evt => {
|
|
9426
|
-
if (!dragging) return;
|
|
9427
|
-
const dx = _evt.clientX - dragStartX;
|
|
9428
|
-
const dy = _evt.clientY - dragStartY;
|
|
9429
|
-
const newX = Math.max(0, Math.min(_playW - 370, elemStartX + dx));
|
|
9430
|
-
const newY = Math.max(0, Math.min(_playH - 50, elemStartY + dy));
|
|
9431
|
-
group.style.left = wUnit(newX);
|
|
9432
|
-
group.style.top = wUnit(newY);
|
|
9433
|
-
_evt.stopPropagation();
|
|
9434
|
-
});
|
|
9435
|
-
const keyUp = addPreviewListener(group, `pointerup`, _evt => {
|
|
9436
|
-
if (!dragging) return;
|
|
9437
|
-
dragging = false;
|
|
9438
|
-
group.style.cursor = `grab`;
|
|
9439
|
-
|
|
9440
|
-
const finalX = parseInt(group.style.left, 10);
|
|
9441
|
-
const finalY = parseInt(group.style.top, 10);
|
|
9442
|
-
|
|
9443
|
-
// ---- 座標をグローバル状態とゲーム本体に反映 ----
|
|
9444
|
-
g_previewPos[_groupId].x = finalX;
|
|
9445
|
-
g_previewPos[_groupId].y = finalY;
|
|
9446
|
-
applyJudgPositionToGame(_groupId, finalX, finalY);
|
|
9567
|
+
// ============================================================
|
|
9568
|
+
// 判定グループ固有の「座標反映ルール」を定義
|
|
9569
|
+
// ============================================================
|
|
9570
|
+
const configMap = {
|
|
9571
|
+
arrowJdg: {
|
|
9572
|
+
toastTitle: g_lblNameObj.arrowJdgUpdate,
|
|
9573
|
+
getStdX: (pw) => Math.round(pw / 2 - 220),
|
|
9574
|
+
getStdY: (ph, syr) => Math.round((ph + syr) / 2 - 60),
|
|
9575
|
+
},
|
|
9576
|
+
frzJdg: {
|
|
9577
|
+
toastTitle: g_lblNameObj.frzJdgUpdate,
|
|
9578
|
+
getStdX: (pw) => Math.round(pw / 2 - 120),
|
|
9579
|
+
getStdY: (ph, syr) => Math.round((ph + syr) / 2 + 10),
|
|
9580
|
+
}
|
|
9581
|
+
};
|
|
9447
9582
|
|
|
9448
|
-
|
|
9449
|
-
});
|
|
9450
|
-
// pointerup が届かないケースを拾う
|
|
9451
|
-
addPreviewListener(group, `pointercancel`, _evt => {
|
|
9452
|
-
dragging = false;
|
|
9453
|
-
group.style.cursor = `grab`;
|
|
9454
|
-
});
|
|
9455
|
-
group.setAttribute(`lsnrkey`, keyMove);
|
|
9456
|
-
group.setAttribute(`lsnrkeyTS`, keyDown);
|
|
9457
|
-
group.setAttribute(`lsnrkeyTE`, keyUp);
|
|
9583
|
+
// 汎用ドラッグ及びドラッグ枠作成、差分適用処理
|
|
9584
|
+
makeElementDraggable(group, _groupId, _playW, _playH, { w: groupW, h: groupH }, configMap[_groupId]);
|
|
9458
9585
|
};
|
|
9459
9586
|
|
|
9460
9587
|
/**
|
|
9461
|
-
*
|
|
9462
|
-
* @param {
|
|
9463
|
-
* @param {number}
|
|
9464
|
-
* @param {
|
|
9588
|
+
* ドラッグ結果の座標をゲーム本体の設定に汎用的に反映する
|
|
9589
|
+
* @param {number} _x 確定したframe相対X
|
|
9590
|
+
* @param {number} _y 確定したframe相対Y
|
|
9591
|
+
* @param {object} _config 反映用の設定オブジェクト
|
|
9592
|
+
* @param {string} _key 保存用キー(g_diffObjのプロパティ名の接頭辞)
|
|
9465
9593
|
*/
|
|
9466
|
-
const
|
|
9594
|
+
const applyElementPositionToGame = (_x, _y, _config, _key) => {
|
|
9595
|
+
const playW = g_headerObj.playingWidth || g_sWidth;
|
|
9467
9596
|
const playH = g_headerObj.playingHeight || g_sHeight;
|
|
9468
9597
|
const stepYR = g_posObj?.stepYR ?? 0;
|
|
9469
9598
|
|
|
9470
|
-
//
|
|
9471
|
-
|
|
9472
|
-
|
|
9473
|
-
|
|
9474
|
-
//
|
|
9475
|
-
|
|
9476
|
-
|
|
9477
|
-
|
|
9478
|
-
|
|
9479
|
-
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9484
|
-
|
|
9485
|
-
|
|
9486
|
-
|
|
9487
|
-
g_diffObj.frzJdgX = _x - stdX;
|
|
9488
|
-
g_diffObj.frzJdgY = _y - stdY;
|
|
9489
|
-
showToast(`${g_lblNameObj.frzJdgUpdate}: dX=${g_diffObj.frzJdgX}, dY=${g_diffObj.frzJdgY}`);
|
|
9599
|
+
// 1. 各要素固有の「標準座標(基準点)」を計算
|
|
9600
|
+
const stdX = _config.getStdX(playW);
|
|
9601
|
+
const stdY = _config.getStdY(playH, stepYR);
|
|
9602
|
+
|
|
9603
|
+
// 2. オフセット(差分)を計算
|
|
9604
|
+
const diffX = _x - stdX;
|
|
9605
|
+
const diffY = _y - stdY;
|
|
9606
|
+
|
|
9607
|
+
// 3. 指定された保存先にオフセットを格納
|
|
9608
|
+
g_diffObj[`${_key}X`] = diffX;
|
|
9609
|
+
g_diffObj[`${_key}Y`] = diffY;
|
|
9610
|
+
g_localStorage[`${_key}X`] = diffX;
|
|
9611
|
+
g_localStorage[`${_key}Y`] = diffY;
|
|
9612
|
+
|
|
9613
|
+
// 4. トースト表示 (通知が不要な要素なら省略可能にする)
|
|
9614
|
+
if (_config.toastTitle) {
|
|
9615
|
+
showToast(`${_config.toastTitle}: dX=${diffX}, dY=${diffY}`);
|
|
9490
9616
|
}
|
|
9491
9617
|
};
|
|
9492
9618
|
|
|
@@ -13828,6 +13954,9 @@ const getArrowSettings = () => {
|
|
|
13828
13954
|
if (g_headerObj.scAreaWidth === 0 && (g_headerObj.keyRetry !== g_headerObj.keyRetryDef2 || g_headerObj.keyTitleBack !== g_headerObj.keyTitleBackDef2)) {
|
|
13829
13955
|
g_workObj.nonDefaultSc = false;
|
|
13830
13956
|
}
|
|
13957
|
+
if (g_diffObj.shortcutX !== 0 || g_diffObj.shortcutY !== 0) {
|
|
13958
|
+
g_workObj.nonDefaultSc = true;
|
|
13959
|
+
}
|
|
13831
13960
|
|
|
13832
13961
|
g_workObj.backX = (g_workObj.nonDefaultSc && g_headerObj.playingLayout ? g_headerObj.scAreaWidth : 0);
|
|
13833
13962
|
g_workObj.playingX = g_headerObj.playingX + g_workObj.backX;
|
|
@@ -14259,6 +14388,9 @@ const mainInit = () => {
|
|
|
14259
14388
|
x: 0, y: 30, w: 70, h: 20, siz: g_limitObj.jdgCntsSiz, display: g_workObj.lifegaugeDisp,
|
|
14260
14389
|
}, lblInitColor),
|
|
14261
14390
|
|
|
14391
|
+
// ゲージ種類
|
|
14392
|
+
createDivCss2Label(`lblGaugeMode`, g_stateObj.gauge, { ...g_lblPosObj.lblGaugeMode, display: g_workObj.musicinfoDisp }),
|
|
14393
|
+
|
|
14262
14394
|
// ライフ背景
|
|
14263
14395
|
createColorObject2(`lifeBackObj`, { ...g_lblPosObj.lifeBackObj, display: g_workObj.lifegaugeDisp }, g_cssObj.life_Background),
|
|
14264
14396
|
|
|
@@ -14300,12 +14432,28 @@ const mainInit = () => {
|
|
|
14300
14432
|
|
|
14301
14433
|
if (g_workObj.nonDefaultSc) {
|
|
14302
14434
|
multiAppend(infoSprite,
|
|
14303
|
-
createDivCss2Label(`lblRetry`, `[${g_lblNameObj.l_retry}]`, {
|
|
14304
|
-
|
|
14305
|
-
|
|
14306
|
-
|
|
14307
|
-
|
|
14308
|
-
|
|
14435
|
+
createDivCss2Label(`lblRetry`, `[${g_lblNameObj.l_retry}]`, {
|
|
14436
|
+
...g_lblPosObj.lblMainScHeader,
|
|
14437
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85 + g_diffObj.shortcutX,
|
|
14438
|
+
y: g_headerObj.playingHeight - 65 + g_diffObj.shortcutY,
|
|
14439
|
+
}),
|
|
14440
|
+
createDivCss2Label(`lblRetrySc`, g_kCd[g_headerObj.keyRetry], {
|
|
14441
|
+
...g_lblPosObj.lblMainScKey,
|
|
14442
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85 + g_diffObj.shortcutX,
|
|
14443
|
+
y: g_headerObj.playingHeight - 50 + g_diffObj.shortcutY,
|
|
14444
|
+
fontWeight: g_headerObj.keyRetry === C_KEY_RETRY ? `normal` : `bold`,
|
|
14445
|
+
}),
|
|
14446
|
+
createDivCss2Label(`lblTitleBack`, `[${g_lblNameObj.l_titleBack}]`, {
|
|
14447
|
+
...g_lblPosObj.lblMainScHeader,
|
|
14448
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85 + g_diffObj.shortcutX,
|
|
14449
|
+
y: g_headerObj.playingHeight - 35 + g_diffObj.shortcutY,
|
|
14450
|
+
}),
|
|
14451
|
+
createDivCss2Label(`lblTitleBackSc`, g_isMac ? `Shift+${g_kCd[g_headerObj.keyRetry]}` : g_kCd[g_headerObj.keyTitleBack], {
|
|
14452
|
+
...g_lblPosObj.lblMainScKey,
|
|
14453
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85 + g_diffObj.shortcutX,
|
|
14454
|
+
y: g_headerObj.playingHeight - 20 + g_diffObj.shortcutY,
|
|
14455
|
+
fontWeight: g_headerObj.keyTitleBack === C_KEY_TITLEBACK ? `normal` : `bold`,
|
|
14456
|
+
}),
|
|
14309
14457
|
);
|
|
14310
14458
|
}
|
|
14311
14459
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2026/05/
|
|
8
|
+
* Revised : 2026/05/31 (v48.3.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -543,11 +543,49 @@ const updateWindowSiz = () => {
|
|
|
543
543
|
x: g_btnX() + Math.floor((g_btnWidth() - 80) / 2), y: 3, w: 80, h: 18, siz: 11,
|
|
544
544
|
title: g_msgObj.displayPreview,
|
|
545
545
|
},
|
|
546
|
+
btnDisplayReset: {
|
|
547
|
+
x: g_btnX() + g_btnWidth() - 80, y: 3, w: 80, h: 18, siz: 11,
|
|
548
|
+
},
|
|
546
549
|
lblDisplayPreviewMsg: {
|
|
547
550
|
x: g_btnX(), y: g_sHeight - 40, w: g_btnWidth(), h: 20, siz: 14,
|
|
548
551
|
},
|
|
549
|
-
|
|
550
|
-
|
|
552
|
+
lblDisplayPreviewMsg2: {
|
|
553
|
+
x: g_btnX(), y: g_sHeight - 25, w: g_btnWidth(), h: 20, siz: 14,
|
|
554
|
+
},
|
|
555
|
+
previewScoreDisabled: {
|
|
556
|
+
x: g_headerObj.playingWidth - 80, y: 20, w: 70, h: 200,
|
|
557
|
+
},
|
|
558
|
+
previewLifeDisabled: {
|
|
559
|
+
x: 5, y: 50, w: 15, h: g_headerObj.playingHeight - 100,
|
|
560
|
+
},
|
|
561
|
+
previewLifeFrzDisabled: {
|
|
562
|
+
x: 0, y: 70, w: 5, h: g_headerObj.playingHeight - 120,
|
|
563
|
+
},
|
|
564
|
+
previewMusicInfoDisabled: {
|
|
565
|
+
x: 5, y: g_headerObj.playingHeight - 50, w: g_headerObj.playingWidth - 125, h: 40,
|
|
566
|
+
},
|
|
567
|
+
previewGaugeNameDisabled: {
|
|
568
|
+
x: 0, y: 10, w: 110, h: 18,
|
|
569
|
+
},
|
|
570
|
+
previewLifeBack: {
|
|
571
|
+
x: 5, y: 50, w: 15, h: g_headerObj.playingHeight - 100,
|
|
572
|
+
background: `#333333`, border: `1px solid #555555`,
|
|
573
|
+
},
|
|
574
|
+
previewLifeBar: {
|
|
575
|
+
x: 5, y: 50 + (g_headerObj.playingHeight - 100) * 0.3,
|
|
576
|
+
w: 15, h: (g_headerObj.playingHeight - 100) * 0.7, background: `#006666`,
|
|
577
|
+
},
|
|
578
|
+
previewLifeNum: {
|
|
579
|
+
x: 0, y: 30, w: 70, h: 20,
|
|
580
|
+
siz: g_limitObj.jdgCntsSiz, color: `#ffffff`, background: `#006666`, align: C_ALIGN_CENTER,
|
|
581
|
+
},
|
|
582
|
+
previewFrzLifeBack: {
|
|
583
|
+
x: 0, y: 50, w: 5, h: g_headerObj.playingHeight - 100,
|
|
584
|
+
background: `#333333`, border: `1px solid #555555`,
|
|
585
|
+
},
|
|
586
|
+
previewFrzLifeBar: {
|
|
587
|
+
x: 0, y: 50 + (g_headerObj.playingHeight - 100) * 0.7,
|
|
588
|
+
w: 5, h: (g_headerObj.playingHeight - 100) * 0.3,
|
|
551
589
|
},
|
|
552
590
|
|
|
553
591
|
/** キーコンフィグ画面 */
|
|
@@ -640,7 +678,7 @@ const updateWindowSiz = () => {
|
|
|
640
678
|
x: -8, y: -8, w: C_ARW_WIDTH + 16, h: C_ARW_WIDTH + 16,
|
|
641
679
|
},
|
|
642
680
|
lblframe: {
|
|
643
|
-
x: 0, y: 0, w: 100, h: 30, siz:
|
|
681
|
+
x: 0, y: 0, w: 100, h: 30, siz: 18,
|
|
644
682
|
},
|
|
645
683
|
lblCredit: {
|
|
646
684
|
x: 125, y: g_headerObj.playingHeight - 30, w: g_headerObj.playingWidth - 125, h: 20, align: C_ALIGN_LEFT,
|
|
@@ -654,6 +692,9 @@ const updateWindowSiz = () => {
|
|
|
654
692
|
lblTime2: {
|
|
655
693
|
x: 60, y: g_headerObj.playingHeight - 30, w: 60, h: 20, siz: g_limitObj.mainSiz,
|
|
656
694
|
},
|
|
695
|
+
lblGaugeMode: {
|
|
696
|
+
x: 5, y: 18, w: 100, h: 20, siz: 11, align: C_ALIGN_LEFT,
|
|
697
|
+
},
|
|
657
698
|
lifeBackObj: {
|
|
658
699
|
x: 5, y: 50, w: 15, h: g_headerObj.playingHeight - 100, styleName: `lifeBar`,
|
|
659
700
|
},
|
|
@@ -1293,7 +1334,8 @@ const g_settings = {
|
|
|
1293
1334
|
customKey: 0,
|
|
1294
1335
|
others: 0,
|
|
1295
1336
|
},
|
|
1296
|
-
environments: [`adjustment`, `volume`, `colorType`, `appearance`, `opacity`, `hitPosition
|
|
1337
|
+
environments: [`adjustment`, `volume`, `colorType`, `appearance`, `opacity`, `hitPosition`,
|
|
1338
|
+
`arrowJdgX`, `arrowJdgY`, `frzJdgX`, `frzJdgY`, `shortcutX`, `shortcutY`],
|
|
1297
1339
|
keyStorages: [`reverse`, `keyCtrl`, `keyCtrlPtn`, `shuffle`, `color`, `stepRtn`],
|
|
1298
1340
|
colorStorages: [`setColor`, `setShadowColor`, `frzColor`, `frzShadowColor`],
|
|
1299
1341
|
|
|
@@ -2296,6 +2338,17 @@ const g_diffObj = {
|
|
|
2296
2338
|
frzJdgX: 0,
|
|
2297
2339
|
arrowJdgY: 0,
|
|
2298
2340
|
frzJdgY: 0,
|
|
2341
|
+
shortcutX: 0,
|
|
2342
|
+
shortcutY: 0,
|
|
2343
|
+
};
|
|
2344
|
+
|
|
2345
|
+
const g_diffInitObj = {
|
|
2346
|
+
arrowJdgX: 0,
|
|
2347
|
+
frzJdgX: 0,
|
|
2348
|
+
arrowJdgY: 0,
|
|
2349
|
+
frzJdgY: 0,
|
|
2350
|
+
shortcutX: 0,
|
|
2351
|
+
shortcutY: 0,
|
|
2299
2352
|
};
|
|
2300
2353
|
|
|
2301
2354
|
// キーコンフィグカーソル
|
|
@@ -2947,6 +3000,7 @@ const g_shortcutObj = {
|
|
|
2947
3000
|
},
|
|
2948
3001
|
displayPreview: {
|
|
2949
3002
|
KeyP: { id: `btnDisplayPreview2` },
|
|
3003
|
+
KeyR: { id: `btnDisplayReset` },
|
|
2950
3004
|
Escape: { id: `btnBack` },
|
|
2951
3005
|
Space: { id: `btnKeyConfig` },
|
|
2952
3006
|
Enter: { id: `btnPlay` },
|
|
@@ -4750,9 +4804,11 @@ const g_lang_lblNameObj = {
|
|
|
4750
4804
|
transKeyDesc: `別キーモードではキーコンフィグ、ColorType等は保存されません`,
|
|
4751
4805
|
colorTypeDesc: `現在のColorTypeの設定では、色変化(Display:Color)は自動的にOFFになります`,
|
|
4752
4806
|
sdShortcutDesc: `Hid+/Sud+時ショートカット:「pageUp」カバーを上へ / 「pageDown」下へ`,
|
|
4753
|
-
displayPreviewDesc:
|
|
4807
|
+
displayPreviewDesc: `判定キャラクタ部分、ショートカット表示はドラッグで移動するとその位置に補正されます`,
|
|
4808
|
+
displayPreviewDesc2: `枠外への移動はショートカットがデフォルトと異なるか、位置が通常と異なる場合のみ有効です`,
|
|
4754
4809
|
arrowJdgUpdate: `矢印判定の座標を更新`,
|
|
4755
4810
|
frzJdgUpdate: `フリーズアロー判定の座標を更新`,
|
|
4811
|
+
shortcutUpdate: `ショートカット表示の座標を更新`,
|
|
4756
4812
|
resultImageDesc: `画像を右クリックしてコピーできます`,
|
|
4757
4813
|
|
|
4758
4814
|
s_level: `Level`,
|
|
@@ -4810,9 +4866,11 @@ const g_lang_lblNameObj = {
|
|
|
4810
4866
|
transKeyDesc: `Key config, Color type, etc. are not saved in another key mode`,
|
|
4811
4867
|
colorTypeDesc: `With the current ColorType setting, color change (Display:Color) will be automatically turned OFF.`,
|
|
4812
4868
|
sdShortcutDesc: `When "Hidden+" or "Sudden+" select, "pageUp" cover up / "pageDown" cover down`,
|
|
4813
|
-
displayPreviewDesc: `If you drag the judgment character section, it will be adjusted to that position.`,
|
|
4869
|
+
displayPreviewDesc: `If you drag the judgment character section or shortcut display, it will be adjusted to that position.`,
|
|
4870
|
+
displayPreviewDesc2: `Moving outside the frame is only effective when the shortcut display position differs from the default.`,
|
|
4814
4871
|
arrowJdgUpdate: `Update the coordinates (arrow)`,
|
|
4815
4872
|
frzJdgUpdate: `Update the coordinates (freeze)`,
|
|
4873
|
+
shortcutUpdate: `Update the coordinates (shortcut)`,
|
|
4816
4874
|
resultImageDesc: `You can copy the image by right-clicking on it.`,
|
|
4817
4875
|
|
|
4818
4876
|
s_level: `Level`,
|
|
@@ -4876,13 +4934,14 @@ const g_lang_msgObj = {
|
|
|
4876
4934
|
github: `Dancing☆Onigiri (CW Edition)のGitHubページへ移動します。`,
|
|
4877
4935
|
security: `Dancing☆Onigiri (CW Edition)のサポート情報ページへ移動します。`,
|
|
4878
4936
|
|
|
4879
|
-
environment:
|
|
4937
|
+
environment: `以下の設定を初期化します。\n - Adjustment, Volume, ColorType, Appearance, Opacity, HitPosition, 判定キャラクタ位置, ショートカット表示位置`,
|
|
4880
4938
|
highscores: `全譜面のハイスコアを初期化します。\n個別に初期化したい場合はSettings画面より行ってください。`,
|
|
4881
4939
|
customKey: `カスタムキーに関する全ての保存データを消去します。\n下記のKeyDataから個別に消去可能できないときに使用してください。`,
|
|
4882
4940
|
others: `標準以外に関する保存データを消去します。`,
|
|
4883
4941
|
keyTypes: `Key: {0} の保存データ(個別の色設定を除く)を消去します。`,
|
|
4884
4942
|
|
|
4885
4943
|
dataResetConfirm: `選択したローカル設定をクリアします。よろしいですか?`,
|
|
4944
|
+
noDataSelected: `消去するデータが選択されていません。`,
|
|
4886
4945
|
dataRestoreConfirm: `ローカル設定を前回の状態に戻します(1回限り)。よろしいですか?\n消去した設定によっては今の設定が上書きされることがあります。`,
|
|
4887
4946
|
safeModeONConfirm: `セーフモードを解除して、ローカルストレージ情報を利用します。\nよろしいですか?`,
|
|
4888
4947
|
safeModeOFFConfirm: `セーフモードを設定して、ローカルストレージを使わずにリロードします。\nよろしいですか?`,
|
|
@@ -4957,6 +5016,7 @@ const g_lang_msgObj = {
|
|
|
4957
5016
|
opacity: `判定キャラクタ、コンボ数、Fast/Slowの透明度を設定します。`,
|
|
4958
5017
|
hitPosition: `判定位置にズレを感じる場合、\n数値を変えることで判定の中央位置を1px単位(プラス:手前, マイナス:奥側)で調整することができます。\n早押し・遅押し傾向にある場合に使用します。`,
|
|
4959
5018
|
displayPreview: `プレイ画面上のオブジェクトの表示状態をプレビューします。\n判定キャラクタ部分をドラッグで移動するとその位置に補正されます。`,
|
|
5019
|
+
displayPreviewResetConfirm: `プレイ画面上のオブジェクトの位置を初期状態に戻します。よろしいですか?`,
|
|
4960
5020
|
|
|
4961
5021
|
colorType: `矢印・フリーズアローの配色セットをあらかじめ定義されたリストから選択できます。\nType1~4選択時は色変化が自動でOFFになり、カラーピッカーから好きな色に変更できます。\n[Type0] グラデーション切替, [Type1~4] デフォルトパターン`,
|
|
4962
5022
|
imgType: `矢印・フリーズアローなどのオブジェクトの見た目を変更します。`,
|
|
@@ -4980,13 +5040,14 @@ const g_lang_msgObj = {
|
|
|
4980
5040
|
github: `Go to the GitHub page of Dancing Onigiri "CW Edition".`,
|
|
4981
5041
|
security: `Go to the support information page for Dancing Onigiri "CW Edition".`,
|
|
4982
5042
|
|
|
4983
|
-
environment: `Initialize
|
|
5043
|
+
environment: `Initialize settings below:\n - Adjustment, Volume, ColorType, Appearance, Opacity, HitPosition, judgment character positions and shortcut display position.`,
|
|
4984
5044
|
highscores: `Initializes the high score of all charts. \nIf you want to initialize each chart individually, \nplease do so from the Highscore view in the Settings screen.`,
|
|
4985
5045
|
customKey: `Delete stored data related to all custom keymodes. \nUse this option when you cannot delete individual KeyData from the following KeyData.`,
|
|
4986
5046
|
others: `Delete non-standard stored data.`,
|
|
4987
5047
|
keyTypes: `Deletes the stored data (except color settings) for Key: {0}.`,
|
|
4988
5048
|
|
|
4989
5049
|
dataResetConfirm: `Delete the selected local settings. Is it OK?`,
|
|
5050
|
+
noDataSelected: `No data selected to delete.`,
|
|
4990
5051
|
dataRestoreConfirm: `Restore local settings to previous state (one time only). Is it OK?\nSome deleted settings may overwrite the current settings.`,
|
|
4991
5052
|
safeModeONConfirm: `Exit safe mode and use local storage information. Is it OK?`,
|
|
4992
5053
|
safeModeOFFConfirm: `Set safe mode and reload without local storage. Is it OK?`,
|
|
@@ -5060,6 +5121,7 @@ const g_lang_msgObj = {
|
|
|
5060
5121
|
opacity: `Set the transparency of some objects such as judgment, combo counts, fast and slow`,
|
|
5061
5122
|
hitPosition: `If you feel a discrepancy in the judgment position, \nyou can adjust the center position of the judgment in 1px increments \n (plus: in front, minus: at the back) by changing the numerical value. \nUse this function when there is a tendency to push too fast or too slow.`,
|
|
5062
5123
|
displayPreview: `Preview the display status of objects on the play screen.\nDragging the judgment character section will adjust it to that position.`,
|
|
5124
|
+
displayPreviewResetConfirm: `Reset the position of objects on the play screen to the initial state. Is it OK?`,
|
|
5063
5125
|
|
|
5064
5126
|
colorType: `Change the color scheme set for arrows and freeze-arrows from the predefined set.\nWhen Type1 to 4 is selected, color change is automatically turned off and can be changed to any color from the color picker.\n[Type0] Switch the sequences color gradations, [Type1~4] default color scheme`,
|
|
5065
5127
|
imgType: `Change the appearance of sequences.`,
|
|
@@ -5107,6 +5169,7 @@ const g_customJsObj = {
|
|
|
5107
5169
|
option: [],
|
|
5108
5170
|
difficulty: [],
|
|
5109
5171
|
settingsDisplay: [],
|
|
5172
|
+
displayPreview: [],
|
|
5110
5173
|
exSetting: [],
|
|
5111
5174
|
settingSummary: [],
|
|
5112
5175
|
keyconfig: [],
|