danoniplus 33.3.0 → 33.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/danoni_main.js +118 -76
- package/js/lib/danoni_constants.js +13 -1
- package/js/template/danoni_setting.js +14 -1
- package/package.json +1 -1
- package/js/danoni_custom.js +0 -166
- package/js/danoni_setting.js +0 -409
- package/js/template/danoni_setting-template.js +0 -410
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 : 2023/08/
|
|
7
|
+
* Revised : 2023/08/28
|
|
8
8
|
*
|
|
9
9
|
* https://github.com/cwtickle/danoniplus
|
|
10
10
|
*/
|
|
11
|
-
const g_version = `Ver 33.
|
|
12
|
-
const g_revisedDate = `2023/08/
|
|
11
|
+
const g_version = `Ver 33.4.1`;
|
|
12
|
+
const g_revisedDate = `2023/08/28`;
|
|
13
13
|
|
|
14
14
|
// カスタム用バージョン (danoni_custom.js 等で指定可)
|
|
15
15
|
let g_localVersion = ``;
|
|
@@ -162,6 +162,7 @@ const g_workObj = {
|
|
|
162
162
|
keyHitFlg: [],
|
|
163
163
|
scrollDir: [],
|
|
164
164
|
dividePos: [],
|
|
165
|
+
nonDefaultSc: false,
|
|
165
166
|
};
|
|
166
167
|
|
|
167
168
|
// 歌詞制御
|
|
@@ -1182,10 +1183,10 @@ const createEmptySprite = (_parentObj, _newObjId, { x = 0, y = 0, w = g_sWidth,
|
|
|
1182
1183
|
* @param {string} _baseName
|
|
1183
1184
|
* @param {number} _num
|
|
1184
1185
|
*/
|
|
1185
|
-
const createMultipleSprite = (_baseName, _num) => {
|
|
1186
|
+
const createMultipleSprite = (_baseName, _num, { x = 0 } = {}) => {
|
|
1186
1187
|
const sprite = createEmptySprite(divRoot, `${_baseName}`);
|
|
1187
1188
|
for (let j = 0; j <= _num; j++) {
|
|
1188
|
-
createEmptySprite(sprite, `${_baseName}${j}
|
|
1189
|
+
createEmptySprite(sprite, `${_baseName}${j}`, { x });
|
|
1189
1190
|
}
|
|
1190
1191
|
return sprite;
|
|
1191
1192
|
};
|
|
@@ -1379,21 +1380,27 @@ const resetKeyControl = _ => {
|
|
|
1379
1380
|
const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
1380
1381
|
resetKeyControl();
|
|
1381
1382
|
|
|
1383
|
+
// ボタン、オブジェクトをクリア (divRoot配下のもの)
|
|
1384
|
+
deleteChildspriteAll(`divRoot`);
|
|
1385
|
+
|
|
1386
|
+
// 拡張範囲を取得
|
|
1387
|
+
const diffX = (_customDisplayName === `Main` && g_workObj.nonDefaultSc ?
|
|
1388
|
+
g_headerObj.scAreaWidth * (g_headerObj.playingLayout ? 2 : 1) : 0);
|
|
1389
|
+
|
|
1390
|
+
const getLayerWithClear = (_name) => {
|
|
1391
|
+
const layer = document.getElementById(_name);
|
|
1392
|
+
const ctx = layer.getContext(`2d`);
|
|
1393
|
+
ctx.clearRect(0, 0, layer.width, g_sHeight);
|
|
1394
|
+
return ctx;
|
|
1395
|
+
};
|
|
1396
|
+
|
|
1382
1397
|
if (document.querySelector(`#layer0`) !== null) {
|
|
1383
1398
|
|
|
1384
1399
|
// レイヤー情報取得
|
|
1385
|
-
const
|
|
1386
|
-
const l0ctx = layer0.getContext(`2d`);
|
|
1387
|
-
layer0.width = g_sWidth;
|
|
1388
|
-
|
|
1389
|
-
// 線画、図形をクリア
|
|
1390
|
-
l0ctx.clearRect(0, 0, g_sWidth, g_sHeight);
|
|
1400
|
+
const l0ctx = getLayerWithClear(`layer0`);
|
|
1391
1401
|
|
|
1392
1402
|
if (document.querySelector(`#layer1`) !== null) {
|
|
1393
|
-
const
|
|
1394
|
-
const l1ctx = layer1.getContext(`2d`);
|
|
1395
|
-
layer1.width = g_sWidth;
|
|
1396
|
-
l1ctx.clearRect(0, 0, g_sWidth, g_sHeight);
|
|
1403
|
+
const l1ctx = getLayerWithClear(`layer1`);
|
|
1397
1404
|
|
|
1398
1405
|
// 線画 (title-line)
|
|
1399
1406
|
l1ctx.beginPath();
|
|
@@ -1409,61 +1416,45 @@ const clearWindow = (_redrawFlg = false, _customDisplayName = ``) => {
|
|
|
1409
1416
|
l1ctx.stroke();
|
|
1410
1417
|
}
|
|
1411
1418
|
if (document.querySelector(`#layer2`) !== null) {
|
|
1412
|
-
|
|
1413
|
-
const l2ctx = layer2.getContext(`2d`);
|
|
1414
|
-
layer2.width = g_sWidth;
|
|
1415
|
-
l2ctx.clearRect(0, 0, g_sWidth, g_sHeight);
|
|
1419
|
+
getLayerWithClear(`layer2`);
|
|
1416
1420
|
}
|
|
1417
|
-
}
|
|
1418
1421
|
|
|
1419
|
-
|
|
1420
|
-
|
|
1422
|
+
if (_redrawFlg) {
|
|
1423
|
+
// 画面背景を指定 (background-color)
|
|
1424
|
+
$id(`canvas-frame`).width = `${g_sWidth + diffX}px`;
|
|
1425
|
+
layer0.width = g_sWidth + diffX;
|
|
1426
|
+
const grd = l0ctx.createLinearGradient(0, 0, 0, g_sHeight);
|
|
1427
|
+
if (!g_headerObj[`customBack${_customDisplayName}Use`]) {
|
|
1428
|
+
grd.addColorStop(0, `#000000`);
|
|
1429
|
+
grd.addColorStop(1, `#222222`);
|
|
1430
|
+
l0ctx.fillStyle = grd;
|
|
1431
|
+
l0ctx.fillRect(0, 0, g_sWidth + diffX, g_sHeight);
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1421
1435
|
|
|
1422
1436
|
// 背景を再描画
|
|
1423
1437
|
if (_redrawFlg) {
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
};
|
|
1438
|
+
g_btnAddFunc = {};
|
|
1439
|
+
g_btnDeleteFlg = {};
|
|
1440
|
+
g_cxtAddFunc = {};
|
|
1441
|
+
g_cxtDeleteFlg = {};
|
|
1427
1442
|
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
* @param {string} _key メイン画面かどうか。Main:メイン画面、(空白):それ以外
|
|
1431
|
-
*/
|
|
1432
|
-
const drawDefaultBackImage = _key => {
|
|
1433
|
-
|
|
1434
|
-
g_btnAddFunc = {};
|
|
1435
|
-
g_btnDeleteFlg = {};
|
|
1436
|
-
g_cxtAddFunc = {};
|
|
1437
|
-
g_cxtDeleteFlg = {};
|
|
1443
|
+
if (document.querySelector(`#layer0`) === null ||
|
|
1444
|
+
(!g_headerObj[`customBack${_customDisplayName}Use`] && !g_headerObj.defaultSkinFlg)) {
|
|
1438
1445
|
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
const layer0 = document.querySelector(`#layer0`);
|
|
1442
|
-
const l0ctx = layer0.getContext(`2d`);
|
|
1443
|
-
|
|
1444
|
-
// 画面背景を指定 (background-color)
|
|
1445
|
-
const grd = l0ctx.createLinearGradient(0, 0, 0, g_sHeight);
|
|
1446
|
-
if (!g_headerObj[`customBack${_key}Use`]) {
|
|
1447
|
-
grd.addColorStop(0, `#000000`);
|
|
1448
|
-
grd.addColorStop(1, `#222222`);
|
|
1449
|
-
l0ctx.fillStyle = grd;
|
|
1450
|
-
l0ctx.fillRect(0, 0, g_sWidth, g_sHeight);
|
|
1451
|
-
|
|
1452
|
-
if (!g_headerObj.defaultSkinFlg) {
|
|
1453
|
-
createEmptySprite(divRoot, `divBack`);
|
|
1454
|
-
}
|
|
1446
|
+
$id(`canvas-frame`).width = `${g_sWidth + diffX}px`;
|
|
1447
|
+
createEmptySprite(divRoot, `divBack`, { w: g_sWidth + diffX });
|
|
1455
1448
|
}
|
|
1456
|
-
} else {
|
|
1457
|
-
createEmptySprite(divRoot, `divBack`);
|
|
1458
|
-
}
|
|
1459
1449
|
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1450
|
+
// CSSスタイルの初期化
|
|
1451
|
+
Object.keys(g_cssBkProperties).forEach(prop =>
|
|
1452
|
+
document.documentElement.style.setProperty(prop, g_cssBkProperties[prop]));
|
|
1463
1453
|
|
|
1464
|
-
|
|
1465
|
-
|
|
1454
|
+
Object.keys(g_headerObj).filter(val => val.startsWith(`--`) && hasVal(g_headerObj[val])).forEach(prop =>
|
|
1455
|
+
document.documentElement.style.setProperty(prop, getCssCustomProperty(prop, g_headerObj[prop])));
|
|
1466
1456
|
|
|
1457
|
+
}
|
|
1467
1458
|
};
|
|
1468
1459
|
|
|
1469
1460
|
/**
|
|
@@ -3267,6 +3258,16 @@ const headerConvert = _dosObj => {
|
|
|
3267
3258
|
// プレイ中クレジットを表示しないエリアのサイズ(X方向)
|
|
3268
3259
|
obj.customViewWidth = setVal(_dosObj.customViewWidth ?? _dosObj.customCreditWidth, 0, C_TYP_FLOAT);
|
|
3269
3260
|
|
|
3261
|
+
// ショートカットキーが既定値ではない場合の左右の拡張エリアのサイズ
|
|
3262
|
+
if (hasVal(_dosObj.scArea)) {
|
|
3263
|
+
const tmp = _dosObj.scArea.split(`,`);
|
|
3264
|
+
obj.scAreaWidth = setVal(tmp[0], 0, C_TYP_FLOAT);
|
|
3265
|
+
obj.playingLayout = tmp[1] !== `left`;
|
|
3266
|
+
} else {
|
|
3267
|
+
obj.scAreaWidth = g_presetObj.scAreaWidth ?? 0;
|
|
3268
|
+
obj.playingLayout = g_presetObj.playingLayout ?? true;
|
|
3269
|
+
}
|
|
3270
|
+
|
|
3270
3271
|
// ジャストフレームの設定 (ローカル: 0フレーム, リモートサーバ上: 1フレーム以内)
|
|
3271
3272
|
obj.justFrames = (g_isLocal) ? 0 : 1;
|
|
3272
3273
|
|
|
@@ -3696,6 +3697,22 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3696
3697
|
return _str;
|
|
3697
3698
|
};
|
|
3698
3699
|
|
|
3700
|
+
/**
|
|
3701
|
+
* divMaxX, posXの下段補完処理
|
|
3702
|
+
* ・divXの1番目の指定があるとき、その値を元に下段の位置を補完
|
|
3703
|
+
* 例) |div11x=7,b6|pos11x=0,1,2,3,4,5,6,b0,b1,b5,b6|
|
|
3704
|
+
* -> |div11x=7,13|pos11x=0,1,2,3,4,5,6,7,8,12,13|
|
|
3705
|
+
* @param {number} _num
|
|
3706
|
+
* @param {number} _divNum
|
|
3707
|
+
* @returns
|
|
3708
|
+
*/
|
|
3709
|
+
const getKeyPosNum = (_num, _divNum = 0) => {
|
|
3710
|
+
if (!hasVal(_num) || (!_num.startsWith(`b`) && isNaN(parseFloat(_num)))) {
|
|
3711
|
+
return _num;
|
|
3712
|
+
}
|
|
3713
|
+
return _num.startsWith(`b`) ? parseFloat(_num.slice(1)) + _divNum : parseFloat(_num);
|
|
3714
|
+
}
|
|
3715
|
+
|
|
3699
3716
|
/**
|
|
3700
3717
|
* 新キー用複合パラメータ
|
|
3701
3718
|
* @param {string} _key キー数
|
|
@@ -3891,9 +3908,6 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3891
3908
|
// 矢印の回転量指定、キャラクタパターン (stepRtnX_Y)
|
|
3892
3909
|
newKeyTripleParam(newKey, `stepRtn`);
|
|
3893
3910
|
|
|
3894
|
-
// ステップゾーン位置 (posX_Y)
|
|
3895
|
-
newKeyMultiParam(newKey, `pos`, toFloat);
|
|
3896
|
-
|
|
3897
3911
|
// 各キーの区切り位置 (divX_Y)
|
|
3898
3912
|
_dosObj[`div${newKey}`]?.split(`$`).forEach((tmpDiv, k) => {
|
|
3899
3913
|
const tmpDivPtn = tmpDiv.split(`,`);
|
|
@@ -3909,10 +3923,19 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
|
|
|
3909
3923
|
} else {
|
|
3910
3924
|
// それ以外の場合は指定された値を適用(未指定時はその後で指定)
|
|
3911
3925
|
g_keyObj[`div${ptnName}`] = setVal(tmpDivPtn[0], undefined, C_TYP_NUMBER);
|
|
3912
|
-
g_keyObj[`divMax${ptnName}`] = setVal(tmpDivPtn[1], undefined, C_TYP_FLOAT);
|
|
3926
|
+
g_keyObj[`divMax${ptnName}`] = setVal(getKeyPosNum(tmpDivPtn[1], g_keyObj[`div${ptnName}`]), undefined, C_TYP_FLOAT);
|
|
3913
3927
|
}
|
|
3914
3928
|
});
|
|
3915
3929
|
|
|
3930
|
+
// ステップゾーン位置 (posX_Y)
|
|
3931
|
+
newKeyMultiParam(newKey, `pos`, toFloat, {
|
|
3932
|
+
loopFunc: (k, keyheader) => {
|
|
3933
|
+
g_keyObj[`${keyheader}_${k + dfPtnNum}`].forEach((val, j) => {
|
|
3934
|
+
g_keyObj[`${keyheader}_${k + dfPtnNum}`][j] = getKeyPosNum(String(val), g_keyObj[`div${newKey}_${k + dfPtnNum}`]);
|
|
3935
|
+
});
|
|
3936
|
+
},
|
|
3937
|
+
});
|
|
3938
|
+
|
|
3916
3939
|
// charaX_Y, posX_Y, keyGroupX_Y, divX_Y, divMaxX_Yが未指定の場合はkeyCtrlX_Yを元に適用
|
|
3917
3940
|
for (let k = 0; k < g_keyObj.minPatterns; k++) {
|
|
3918
3941
|
setKeyDfVal(`${newKey}_${k + dfPtnNum}`);
|
|
@@ -4288,8 +4311,8 @@ const makeWarningWindow = (_text = ``, { resetFlg = false, backBtnUse = false }
|
|
|
4288
4311
|
* お知らせウィンドウ(汎用)を表示
|
|
4289
4312
|
* @param {string} _text
|
|
4290
4313
|
*/
|
|
4291
|
-
const makeInfoWindow = (_text, _animationName = ``, _backColor = `#ccccff
|
|
4292
|
-
const lblWarning = setWindowStyle(`<p>${_text}</p>`, _backColor, `#000066`, C_ALIGN_CENTER);
|
|
4314
|
+
const makeInfoWindow = (_text, _animationName = ``, { _backColor = `#ccccff`, _x = 0 } = {}) => {
|
|
4315
|
+
const lblWarning = setWindowStyle(`<p>${_text}</p>`, _backColor, `#000066`, C_ALIGN_CENTER, { _x: _x });
|
|
4293
4316
|
lblWarning.style.pointerEvents = C_DIS_NONE;
|
|
4294
4317
|
|
|
4295
4318
|
if (_animationName !== ``) {
|
|
@@ -4308,7 +4331,7 @@ const makeInfoWindow = (_text, _animationName = ``, _backColor = `#ccccff`) => {
|
|
|
4308
4331
|
* @param {string} _textColor
|
|
4309
4332
|
* @param {string} _align
|
|
4310
4333
|
*/
|
|
4311
|
-
const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT) => {
|
|
4334
|
+
const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT, { _x = 0 } = {}) => {
|
|
4312
4335
|
|
|
4313
4336
|
deleteDiv(divRoot, `lblWarning`);
|
|
4314
4337
|
|
|
@@ -4325,7 +4348,7 @@ const setWindowStyle = (_text, _bkColor, _textColor, _align = C_ALIGN_LEFT) => {
|
|
|
4325
4348
|
const warnHeight = Math.min(150, Math.max(range.getClientRects().length,
|
|
4326
4349
|
_text.split(`<br>`).length + _text.split(`<p>`).length - 1) * 21);
|
|
4327
4350
|
const lbl = createDivCss2Label(`lblWarning`, _text, {
|
|
4328
|
-
x:
|
|
4351
|
+
x: _x, y: 70, w: g_sWidth, h: warnHeight, siz: g_limitObj.mainSiz, backgroundColor: _bkColor,
|
|
4329
4352
|
opacity: 0.9, lineHeight: `15px`, color: _textColor, align: _align, fontFamily: getBasicFont(),
|
|
4330
4353
|
whiteSpace: `normal`,
|
|
4331
4354
|
});
|
|
@@ -8602,6 +8625,9 @@ const getArrowSettings = _ => {
|
|
|
8602
8625
|
g_workObj.lifeVal = Math.floor(g_workObj.lifeInit * 100) / 100;
|
|
8603
8626
|
g_gameOverFlg = false;
|
|
8604
8627
|
g_finishFlg = true;
|
|
8628
|
+
g_workObj.nonDefaultSc = g_headerObj.keyRetry !== C_KEY_RETRY || g_headerObj.keyTitleBack !== C_KEY_TITLEBACK;
|
|
8629
|
+
g_workObj.backX = (g_workObj.nonDefaultSc && g_headerObj.playingLayout ? g_headerObj.scAreaWidth : 0);
|
|
8630
|
+
g_workObj.playingX = g_headerObj.playingX + g_workObj.backX;
|
|
8605
8631
|
|
|
8606
8632
|
if (g_stateObj.dataSaveFlg) {
|
|
8607
8633
|
// ローカルストレージへAdjustment, HitPosition, Volume設定を保存
|
|
@@ -8716,24 +8742,24 @@ const mainInit = _ => {
|
|
|
8716
8742
|
g_workObj.wordFadeFrame = [...Array(wordMaxLen)].fill(0);
|
|
8717
8743
|
|
|
8718
8744
|
// 背景スプライトを作成
|
|
8719
|
-
createMultipleSprite(`backSprite`, g_scoreObj.backMaxDepth);
|
|
8745
|
+
createMultipleSprite(`backSprite`, g_scoreObj.backMaxDepth, { x: g_workObj.backX });
|
|
8720
8746
|
|
|
8721
8747
|
// ステップゾーン、矢印のメインスプライトを作成
|
|
8722
8748
|
const mainSprite = createEmptySprite(divRoot, `mainSprite`, {
|
|
8723
|
-
x:
|
|
8749
|
+
x: g_workObj.playingX, y: g_posObj.stepY - C_STEP_Y, w: g_headerObj.playingWidth, transform: `scale(${g_keyObj.scale})`,
|
|
8724
8750
|
});
|
|
8725
8751
|
|
|
8726
8752
|
// 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
|
|
8727
|
-
const infoSprite = createEmptySprite(divRoot, `infoSprite`, { x:
|
|
8753
|
+
const infoSprite = createEmptySprite(divRoot, `infoSprite`, { x: g_workObj.playingX, w: g_headerObj.playingWidth });
|
|
8728
8754
|
|
|
8729
8755
|
// 判定系スプライトを作成(メインスプライトより上位)
|
|
8730
|
-
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, { x:
|
|
8756
|
+
const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, { x: g_workObj.playingX, w: g_headerObj.playingWidth });
|
|
8731
8757
|
|
|
8732
8758
|
const tkObj = getKeyInfo();
|
|
8733
8759
|
const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
|
|
8734
8760
|
|
|
8735
8761
|
// マスクスプライトを作成 (最上位)
|
|
8736
|
-
createMultipleSprite(`maskSprite`, g_scoreObj.maskMaxDepth);
|
|
8762
|
+
createMultipleSprite(`maskSprite`, g_scoreObj.maskMaxDepth, { x: g_workObj.backX });
|
|
8737
8763
|
|
|
8738
8764
|
// カラー・モーションを適用するオブジェクトの種類
|
|
8739
8765
|
const objList = (g_stateObj.dummyId === `` ? [``] : [`dummy`, ``]);
|
|
@@ -9000,6 +9026,23 @@ const mainInit = _ => {
|
|
|
9000
9026
|
createDivCss2Label(`lblTime2`, `/ ${fullTime}`, Object.assign(g_lblPosObj.lblTime2, { display: g_workObj.musicinfoDisp })),
|
|
9001
9027
|
);
|
|
9002
9028
|
|
|
9029
|
+
if (g_workObj.nonDefaultSc) {
|
|
9030
|
+
multiAppend(infoSprite,
|
|
9031
|
+
createDivCss2Label(`lblRetry`, `[${g_lblNameObj.l_retry}]`, Object.assign(g_lblPosObj.lblMainScHeader, { y: g_sHeight - 65 })),
|
|
9032
|
+
);
|
|
9033
|
+
multiAppend(infoSprite,
|
|
9034
|
+
createDivCss2Label(`lblRetrySc`, g_kCd[g_headerObj.keyRetry],
|
|
9035
|
+
Object.assign(g_lblPosObj.lblMainScKey, { y: g_sHeight - 50, fontWeight: g_headerObj.keyRetry === C_KEY_RETRY ? `normal` : `bold` })),
|
|
9036
|
+
);
|
|
9037
|
+
multiAppend(infoSprite,
|
|
9038
|
+
createDivCss2Label(`lblTitleBack`, `[${g_lblNameObj.l_titleBack}]`, Object.assign(g_lblPosObj.lblMainScHeader, { y: g_sHeight - 35 })),
|
|
9039
|
+
);
|
|
9040
|
+
multiAppend(infoSprite,
|
|
9041
|
+
createDivCss2Label(`lblTitleBackSc`, g_isMac ? `Shift+${g_kCd[g_headerObj.keyRetry]}` : g_kCd[g_headerObj.keyTitleBack],
|
|
9042
|
+
Object.assign(g_lblPosObj.lblMainScKey, { y: g_sHeight - 20, fontWeight: g_headerObj.keyTitleBack === C_KEY_TITLEBACK ? `normal` : `bold` })),
|
|
9043
|
+
);
|
|
9044
|
+
}
|
|
9045
|
+
|
|
9003
9046
|
// ボーダーライン表示
|
|
9004
9047
|
lifeBorderObj.textContent = g_workObj.lifeBorder;
|
|
9005
9048
|
if (g_stateObj.lifeBorder === 0 || g_workObj.lifeVal === g_headerObj.maxLifeVal) {
|
|
@@ -9021,7 +9064,6 @@ const mainInit = _ => {
|
|
|
9021
9064
|
jdgY[0] += g_diffObj.arrowJdgY;
|
|
9022
9065
|
jdgY[1] += g_diffObj.frzJdgY;
|
|
9023
9066
|
}
|
|
9024
|
-
const jdgCombos = [`kita`, `ii`];
|
|
9025
9067
|
|
|
9026
9068
|
jdgGroups.forEach((jdg, j) => {
|
|
9027
9069
|
// キャラクタ表示
|
|
@@ -9060,7 +9102,7 @@ const mainInit = _ => {
|
|
|
9060
9102
|
MCombo: [`combo`, 5], Kita: [`kita`, 7], Iknai: [`iknai`, 8], FCombo: [`combo`, 9],
|
|
9061
9103
|
};
|
|
9062
9104
|
Object.keys(jdgMainScoreObj).forEach(jdgScore =>
|
|
9063
|
-
infoSprite.appendChild(makeCounterSymbol(`lbl${jdgScore}`, g_headerObj.playingWidth - 110,
|
|
9105
|
+
infoSprite.appendChild(makeCounterSymbol(`lbl${jdgScore}`, g_headerObj.playingWidth - 110 + (g_workObj.nonDefaultSc ? g_headerObj.scAreaWidth : 0),
|
|
9064
9106
|
g_cssObj[`common_${jdgMainScoreObj[jdgScore][0]}`], jdgMainScoreObj[jdgScore][1] + 1, 0, g_workObj.scoreDisp)));
|
|
9065
9107
|
|
|
9066
9108
|
// パーフェクト演出
|
|
@@ -9089,7 +9131,7 @@ const mainInit = _ => {
|
|
|
9089
9131
|
|
|
9090
9132
|
divRoot.appendChild(
|
|
9091
9133
|
createDivCss2Label(`lblReady`, readyHtml, {
|
|
9092
|
-
x:
|
|
9134
|
+
x: g_workObj.playingX + (g_headerObj.playingWidth - g_sWidth) / 2,
|
|
9093
9135
|
y: (g_sHeight + g_posObj.stepYR) / 2 - 75,
|
|
9094
9136
|
w: g_sWidth, h: 50, siz: 40,
|
|
9095
9137
|
animationDuration: `${g_headerObj.readyAnimationFrame / g_fps}s`,
|
|
@@ -9100,7 +9142,7 @@ const mainInit = _ => {
|
|
|
9100
9142
|
}
|
|
9101
9143
|
|
|
9102
9144
|
if (getMusicUrl(g_stateObj.scoreId) === `nosound.mp3`) {
|
|
9103
|
-
makeInfoWindow(g_msgInfoObj.I_0004, `leftToRightFade
|
|
9145
|
+
makeInfoWindow(g_msgInfoObj.I_0004, `leftToRightFade`, { _x: g_workObj.playingX });
|
|
9104
9146
|
}
|
|
9105
9147
|
|
|
9106
9148
|
// ユーザカスタムイベント(初期)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Source by tickle
|
|
7
7
|
* Created : 2019/11/19
|
|
8
|
-
* Revised : 2023/08/
|
|
8
|
+
* Revised : 2023/08/27 (v33.4.0)
|
|
9
9
|
*
|
|
10
10
|
* https://github.com/cwtickle/danoniplus
|
|
11
11
|
*/
|
|
@@ -400,6 +400,12 @@ const updateWindowSiz = _ => {
|
|
|
400
400
|
musicInfoOFF: {
|
|
401
401
|
x: 20, animationDuration: `4.0s`, animationName: `leftToRightFade`, animationFillMode: `both`,
|
|
402
402
|
},
|
|
403
|
+
lblMainScHeader: {
|
|
404
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85, w: 80, h: 20, siz: 12, align: C_ALIGN_RIGHT,
|
|
405
|
+
},
|
|
406
|
+
lblMainScKey: {
|
|
407
|
+
x: g_sWidth + g_headerObj.scAreaWidth - 85, w: 80, h: 20, siz: 12, align: C_ALIGN_RIGHT,
|
|
408
|
+
},
|
|
403
409
|
|
|
404
410
|
/** 結果画面 */
|
|
405
411
|
lblRank: {
|
|
@@ -2853,6 +2859,9 @@ const g_lang_lblNameObj = {
|
|
|
2853
2859
|
j_adj: `推定Adj`,
|
|
2854
2860
|
j_excessive: `Excessive`,
|
|
2855
2861
|
|
|
2862
|
+
l_retry: `リトライ`,
|
|
2863
|
+
l_titleBack: `タイトルバック`,
|
|
2864
|
+
|
|
2856
2865
|
helpUrl: `https://github.com/cwtickle/danoniplus/wiki/AboutGameSystem`,
|
|
2857
2866
|
securityUrl: `https://github.com/cwtickle/danoniplus/security/policy`,
|
|
2858
2867
|
},
|
|
@@ -2887,6 +2896,9 @@ const g_lang_lblNameObj = {
|
|
|
2887
2896
|
j_adj: `Est-Adj.`,
|
|
2888
2897
|
j_excessive: `Excessive`,
|
|
2889
2898
|
|
|
2899
|
+
l_retry: `Retry`,
|
|
2900
|
+
l_titleBack: `Go to title`,
|
|
2901
|
+
|
|
2890
2902
|
helpUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/AboutGameSystem`,
|
|
2891
2903
|
securityUrl: `https://github.com/cwtickle/danoniplus-docs/wiki/SecurityPolicy`,
|
|
2892
2904
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
3
|
* Dancing☆Onigiri 設定用jsファイル
|
|
4
|
-
* Template Update: 2023/08/
|
|
4
|
+
* Template Update: 2023/08/27 (v33.4.0)
|
|
5
5
|
*
|
|
6
6
|
* このファイルでは、作品全体に対しての初期設定を行うことができます。
|
|
7
7
|
* 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
|
|
@@ -278,6 +278,19 @@ g_presetObj.stockForceDelList = {
|
|
|
278
278
|
mask: [],
|
|
279
279
|
};
|
|
280
280
|
|
|
281
|
+
/**
|
|
282
|
+
* ショートカットキーが既定と異なる場合に表示する
|
|
283
|
+
* ショートカットキーエリア用に、プレイ時のみ左右に拡張するサイズの設定
|
|
284
|
+
* - 表示内容が収まるサイズは80px
|
|
285
|
+
* - 下記のplayingLayoutの設定により拡張幅が変わる (center: 左右両方拡張, left: 右のみ拡張)
|
|
286
|
+
*/
|
|
287
|
+
//g_presetObj.scAreaWidth = 80;
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* プレイ画面の表示レイアウト (既定: center)
|
|
291
|
+
* - 現状影響する範囲は「scAreaWidth」の設定のみ
|
|
292
|
+
*/
|
|
293
|
+
//g_presetObj.playingLayout = `left`;
|
|
281
294
|
|
|
282
295
|
/*
|
|
283
296
|
------------------------------------------------------------------------
|
package/package.json
CHANGED
package/js/danoni_custom.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
/**
|
|
3
|
-
* Dancing☆Onigiri カスタム用jsファイル
|
|
4
|
-
* その1:共通設定用
|
|
5
|
-
*
|
|
6
|
-
* このファイルは、作品個別に設定できる項目となっています。
|
|
7
|
-
* 譜面データ側で下記のように作品別の外部jsファイルを指定することで、
|
|
8
|
-
* danoni_main.js の中身を変えることなく設定が可能です。
|
|
9
|
-
*
|
|
10
|
-
* 設定例:
|
|
11
|
-
* |customjs=danoni_custom-003.js|
|
|
12
|
-
*
|
|
13
|
-
* ・グローバル変数、div要素、関数は danoni_main.js のものがそのまま利用できます。
|
|
14
|
-
* ・danoni_main.jsの変数を直接書き換えると、動かなくなることがあります。
|
|
15
|
-
* こまめのバックアップをおススメします。
|
|
16
|
-
* ・ラベルなどのdiv要素を作る場合、「divRoot」の下にappendChild(div要素を追加)することで
|
|
17
|
-
* 画面遷移したときにきれいに消してくれます。
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* ローディング中処理
|
|
22
|
-
* @param {event} _event ローディングプロパティ
|
|
23
|
-
* _event.loaded 読込済バイト数
|
|
24
|
-
* _event.total 読込総バイト数
|
|
25
|
-
*/
|
|
26
|
-
function customLoadingProgress(_event) {
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* タイトル画面 [Scene: Title / Melon]
|
|
32
|
-
*/
|
|
33
|
-
function customTitleInit() {
|
|
34
|
-
|
|
35
|
-
// バージョン表記
|
|
36
|
-
g_localVersion = ``;
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* 譜面選択(Difficultyボタン)時カスタム処理
|
|
42
|
-
* @param {boolean} _initFlg 譜面変更フラグ (true:譜面変更選択時 / false:画面遷移による移動時)
|
|
43
|
-
* @param {boolean} _canLoadDifInfoFlg 譜面初期化フラグ (true:譜面設定を再読込 / false:譜面設定を引き継ぐ)
|
|
44
|
-
*/
|
|
45
|
-
function customSetDifficulty(_initFlg, _canLoadDifInfoFlg) {
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* タイトル画面(フレーム毎表示) [Scene: Title / Melon]
|
|
51
|
-
*/
|
|
52
|
-
function customTitleEnterFrame() {
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* オプション画面(初期表示) [Scene: Option / Lime]
|
|
58
|
-
*/
|
|
59
|
-
function customOptionInit() {
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* 表示変更(初期表示) [Scene: Settings-Display / Lemon]
|
|
65
|
-
*/
|
|
66
|
-
function customSettingsDisplayInit() {
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* キーコンフィグ画面(初期表示) [Scene: KeyConfig / Orange]
|
|
72
|
-
*/
|
|
73
|
-
function customKeyConfigInit() {
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* 譜面読込画面 [Scene: Loading / Strawberry]
|
|
79
|
-
* - この画面のみ、画面表示がありません。
|
|
80
|
-
* - 処理が完了すると、自動的にメイン画面へ遷移します。
|
|
81
|
-
*/
|
|
82
|
-
function customLoadingInit() {
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* メイン画面(初期表示) [Scene: Main / Banana]
|
|
88
|
-
*/
|
|
89
|
-
function customMainInit() {
|
|
90
|
-
|
|
91
|
-
// ここにカスタム処理を記述する
|
|
92
|
-
g_resultObj.exScore = 4000;
|
|
93
|
-
g_resultObj.extra = `test`;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* メイン画面(フレーム毎表示) [Scene: Main / Banana]
|
|
98
|
-
*/
|
|
99
|
-
function customMainEnterFrame() {
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* 結果画面(初期表示) [Scene: Result / Grape]
|
|
105
|
-
*/
|
|
106
|
-
function customResultInit() {
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* 結果画面(フレーム毎表示) [Scene: Result / Grape]
|
|
112
|
-
*/
|
|
113
|
-
function customResultEnterFrame() {
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* 判定カスタム処理 (引数は共通で1つ保持)
|
|
119
|
-
* @param {number} difFrame タイミング誤差(フレーム数)
|
|
120
|
-
*/
|
|
121
|
-
/*
|
|
122
|
-
// イイ
|
|
123
|
-
function customJudgeIi(difFrame){
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
// シャキン
|
|
128
|
-
function customJudgeShakin(difFrame){
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// マターリ
|
|
133
|
-
function customJudgeMatari(difFrame){
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
// ショボーン
|
|
138
|
-
function customJudgeShobon(difFrame){
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
// ウワァン
|
|
143
|
-
function customJudgeUwan(difFrame){
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// キター
|
|
148
|
-
function customJudgeKita(difFrame){
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// イクナイ
|
|
153
|
-
function customJudgeIknai(difFrame){
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// ダミー矢印
|
|
158
|
-
function customJudgeDummyArrow(difFrame){
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// ダミーフリーズアロー
|
|
163
|
-
function customJudgeDummyFrz(difFrame){
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
*/
|