danoniplus 33.3.0 → 33.4.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2023/08/22
7
+ * Revised : 2023/08/27
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 33.3.0`;
12
- const g_revisedDate = `2023/08/22`;
11
+ const g_version = `Ver 33.4.0`;
12
+ const g_revisedDate = `2023/08/27`;
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
  // 歌詞制御
@@ -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 layer0 = document.querySelector(`#layer0`);
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 layer1 = document.querySelector(`#layer1`);
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
- const layer2 = document.querySelector(`#layer2`);
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
- // ボタン、オブジェクトをクリア (divRoot配下のもの)
1420
- deleteChildspriteAll(`divRoot`);
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
- drawDefaultBackImage(_customDisplayName);
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
- if (document.querySelector(`#layer0`) !== null) {
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
- // CSSスタイルの初期化
1461
- Object.keys(g_cssBkProperties).forEach(prop =>
1462
- document.documentElement.style.setProperty(prop, g_cssBkProperties[prop]));
1450
+ // CSSスタイルの初期化
1451
+ Object.keys(g_cssBkProperties).forEach(prop =>
1452
+ document.documentElement.style.setProperty(prop, g_cssBkProperties[prop]));
1463
1453
 
1464
- Object.keys(g_headerObj).filter(val => val.startsWith(`--`) && hasVal(g_headerObj[val])).forEach(prop =>
1465
- document.documentElement.style.setProperty(prop, getCssCustomProperty(prop, g_headerObj[prop])));
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: 0, y: 70, w: g_sWidth, h: warnHeight, siz: g_limitObj.mainSiz, backgroundColor: _bkColor,
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,8 @@ 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.playingX = g_headerObj.playingX + (g_workObj.nonDefaultSc && g_headerObj.playingLayout ? g_headerObj.scAreaWidth : 0);
8605
8630
 
8606
8631
  if (g_stateObj.dataSaveFlg) {
8607
8632
  // ローカルストレージへAdjustment, HitPosition, Volume設定を保存
@@ -8720,14 +8745,14 @@ const mainInit = _ => {
8720
8745
 
8721
8746
  // ステップゾーン、矢印のメインスプライトを作成
8722
8747
  const mainSprite = createEmptySprite(divRoot, `mainSprite`, {
8723
- x: g_headerObj.playingX, y: g_posObj.stepY - C_STEP_Y, w: g_headerObj.playingWidth, transform: `scale(${g_keyObj.scale})`,
8748
+ x: g_workObj.playingX, y: g_posObj.stepY - C_STEP_Y, w: g_headerObj.playingWidth, transform: `scale(${g_keyObj.scale})`,
8724
8749
  });
8725
8750
 
8726
8751
  // 曲情報・判定カウント用スプライトを作成(メインスプライトより上位)
8727
- const infoSprite = createEmptySprite(divRoot, `infoSprite`, { x: g_headerObj.playingX, w: g_headerObj.playingWidth });
8752
+ const infoSprite = createEmptySprite(divRoot, `infoSprite`, { x: g_workObj.playingX, w: g_headerObj.playingWidth });
8728
8753
 
8729
8754
  // 判定系スプライトを作成(メインスプライトより上位)
8730
- const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, { x: g_headerObj.playingX, w: g_headerObj.playingWidth });
8755
+ const judgeSprite = createEmptySprite(divRoot, `judgeSprite`, { x: g_workObj.playingX, w: g_headerObj.playingWidth });
8731
8756
 
8732
8757
  const tkObj = getKeyInfo();
8733
8758
  const [keyCtrlPtn, keyNum] = [tkObj.keyCtrlPtn, tkObj.keyNum];
@@ -9000,6 +9025,23 @@ const mainInit = _ => {
9000
9025
  createDivCss2Label(`lblTime2`, `/ ${fullTime}`, Object.assign(g_lblPosObj.lblTime2, { display: g_workObj.musicinfoDisp })),
9001
9026
  );
9002
9027
 
9028
+ if (g_workObj.nonDefaultSc) {
9029
+ multiAppend(infoSprite,
9030
+ createDivCss2Label(`lblRetry`, `[${g_lblNameObj.l_retry}]`, Object.assign(g_lblPosObj.lblMainScHeader, { y: g_sHeight - 65 })),
9031
+ );
9032
+ multiAppend(infoSprite,
9033
+ createDivCss2Label(`lblRetrySc`, g_kCd[g_headerObj.keyRetry],
9034
+ Object.assign(g_lblPosObj.lblMainScKey, { y: g_sHeight - 50, fontWeight: g_headerObj.keyRetry === C_KEY_RETRY ? `normal` : `bold` })),
9035
+ );
9036
+ multiAppend(infoSprite,
9037
+ createDivCss2Label(`lblTitleBack`, `[${g_lblNameObj.l_titleBack}]`, Object.assign(g_lblPosObj.lblMainScHeader, { y: g_sHeight - 35 })),
9038
+ );
9039
+ multiAppend(infoSprite,
9040
+ createDivCss2Label(`lblTitleBackSc`, g_isMac ? `Shift+${g_kCd[g_headerObj.keyRetry]}` : g_kCd[g_headerObj.keyTitleBack],
9041
+ Object.assign(g_lblPosObj.lblMainScKey, { y: g_sHeight - 20, fontWeight: g_headerObj.keyTitleBack === C_KEY_TITLEBACK ? `normal` : `bold` })),
9042
+ );
9043
+ }
9044
+
9003
9045
  // ボーダーライン表示
9004
9046
  lifeBorderObj.textContent = g_workObj.lifeBorder;
9005
9047
  if (g_stateObj.lifeBorder === 0 || g_workObj.lifeVal === g_headerObj.maxLifeVal) {
@@ -9021,7 +9063,6 @@ const mainInit = _ => {
9021
9063
  jdgY[0] += g_diffObj.arrowJdgY;
9022
9064
  jdgY[1] += g_diffObj.frzJdgY;
9023
9065
  }
9024
- const jdgCombos = [`kita`, `ii`];
9025
9066
 
9026
9067
  jdgGroups.forEach((jdg, j) => {
9027
9068
  // キャラクタ表示
@@ -9060,7 +9101,7 @@ const mainInit = _ => {
9060
9101
  MCombo: [`combo`, 5], Kita: [`kita`, 7], Iknai: [`iknai`, 8], FCombo: [`combo`, 9],
9061
9102
  };
9062
9103
  Object.keys(jdgMainScoreObj).forEach(jdgScore =>
9063
- infoSprite.appendChild(makeCounterSymbol(`lbl${jdgScore}`, g_headerObj.playingWidth - 110,
9104
+ infoSprite.appendChild(makeCounterSymbol(`lbl${jdgScore}`, g_headerObj.playingWidth - 110 + (g_workObj.nonDefaultSc ? g_headerObj.scAreaWidth : 0),
9064
9105
  g_cssObj[`common_${jdgMainScoreObj[jdgScore][0]}`], jdgMainScoreObj[jdgScore][1] + 1, 0, g_workObj.scoreDisp)));
9065
9106
 
9066
9107
  // パーフェクト演出
@@ -9089,7 +9130,7 @@ const mainInit = _ => {
9089
9130
 
9090
9131
  divRoot.appendChild(
9091
9132
  createDivCss2Label(`lblReady`, readyHtml, {
9092
- x: g_headerObj.playingX + (g_headerObj.playingWidth - g_sWidth) / 2,
9133
+ x: g_workObj.playingX + (g_headerObj.playingWidth - g_sWidth) / 2,
9093
9134
  y: (g_sHeight + g_posObj.stepYR) / 2 - 75,
9094
9135
  w: g_sWidth, h: 50, siz: 40,
9095
9136
  animationDuration: `${g_headerObj.readyAnimationFrame / g_fps}s`,
@@ -9100,7 +9141,7 @@ const mainInit = _ => {
9100
9141
  }
9101
9142
 
9102
9143
  if (getMusicUrl(g_stateObj.scoreId) === `nosound.mp3`) {
9103
- makeInfoWindow(g_msgInfoObj.I_0004, `leftToRightFade`);
9144
+ makeInfoWindow(g_msgInfoObj.I_0004, `leftToRightFade`, { _x: g_workObj.playingX });
9104
9145
  }
9105
9146
 
9106
9147
  // ユーザカスタムイベント(初期)
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/08/03 (v33.1.0)
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/22 (v33.3.0)
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "33.3.0",
3
+ "version": "33.4.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -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
- */
@@ -1,409 +0,0 @@
1
- 'use strict';
2
- /**
3
- * Dancing☆Onigiri 設定用jsファイル
4
- * Template Update: 2023/06/24 (v32.5.0)
5
- *
6
- * このファイルでは、作品全体に対しての初期設定を行うことができます。
7
- * 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
8
- * 例えばこのファイルで g_presetObj.tuning = `onigiri` とすると全ての作品に製作者名として「onigiri」が設定されますが、
9
- * 譜面データ側で |tuning=washoi| とするとその作品には製作者名として「washoi」が設定されます。
10
- */
11
-
12
-
13
- /*
14
- ------------------------------------------------------------------------
15
- 制作者クレジット・基本設定
16
- https://github.com/cwtickle/danoniplus/wiki/dos-s0001-makerInfo
17
- ------------------------------------------------------------------------
18
- */
19
-
20
- /** 譜面製作者名 */
21
- g_presetObj.tuning = `name`;
22
-
23
- /** 譜面製作者URL */
24
- g_presetObj.tuningUrl = `https://www.google.co.jp/`;
25
-
26
- /** 自動横幅拡張設定 (true:有効、false:無効 / デフォルトは true) */
27
- //g_presetObj.autoSpread = false;
28
-
29
- /** 個人サイト別の最小横幅設定 */
30
- //g_presetObj.autoMinWidth = 600;
31
-
32
- /** 個人サイト別のウィンドウ位置 (left:左寄せ, center:中央, right:右寄せ)*/
33
- //g_presetObj.windowAlign = `center`;
34
-
35
- /*
36
- ------------------------------------------------------------------------
37
- カスタムファイル設定
38
- https://github.com/cwtickle/danoniplus/wiki/dos-s0002-customFile
39
- ------------------------------------------------------------------------
40
- */
41
-
42
- /** 既定スキン (デフォルトは default) */
43
- g_presetObj.skinType = `default`;
44
-
45
- /** skinTypeがdefaultのとき、Canvas背景を有効にするかどうかのフラグ (デフォルトは有効(true)。falseで無効化) */
46
- //g_presetObj.bgCanvasUse = false;
47
-
48
- /** 既定カスタムJs (デフォルトは danoni_custom.js) */
49
- //g_presetObj.customJs = `danoni_custom.js,danoni_init.js`;
50
-
51
- /** 既定カスタムCss (デフォルトは指定なし、cssフォルダを参照) */
52
- //g_presetObj.customCss = `danoni_custom.css`;
53
-
54
- /** 背景・マスクモーションで使用する画像パスの指定方法を他の設定に合わせる設定 (trueで有効化) */
55
- //g_presetObj.syncBackPath = true;
56
-
57
- /*
58
- ------------------------------------------------------------------------
59
- ゲージ設定
60
- https://github.com/cwtickle/danoniplus/wiki/dos-s0003-initialGauge
61
- ------------------------------------------------------------------------
62
- */
63
-
64
- /** ゲージ設定(デフォルト)*/
65
- g_presetObj.gauge = {
66
- // Border: 70, // ノルマ制でのボーダーライン、ライフ制にしたい場合は `x` を指定
67
- // Recovery: 2, // 回復量
68
- // Damage: 7, // ダメージ量
69
- // Init: 25, // 初期値
70
- };
71
-
72
- /** ゲージ設定(デフォルト以外)*/
73
- g_presetObj.gaugeCustom = {
74
- Easy: {
75
- Border: 70,
76
- Recovery: 4,
77
- Damage: 7,
78
- Init: 25,
79
- },
80
- Hard: {
81
- Border: `x`,
82
- Recovery: 1,
83
- Damage: 50,
84
- Init: 100,
85
- },
86
- NoRecovery: {
87
- Border: `x`,
88
- Recovery: 0,
89
- Damage: 50,
90
- Init: 100,
91
- },
92
- SuddenDeath: {
93
- Border: `x`,
94
- Recovery: 0,
95
- Damage: setVal(g_rootObj.maxLifeVal, C_VAL_MAXLIFE, C_TYP_FLOAT),
96
- Init: 100,
97
- },
98
- Practice: {
99
- Border: `x`,
100
- Recovery: 0,
101
- Damage: 0,
102
- Init: 50,
103
- }
104
- };
105
-
106
- /**
107
- カスタムゲージ設定(デフォルト)
108
- 'ゲージ名': `回復・ダメージ量設定` の形式で指定します。
109
- (F : 矢印数によらず固定, V: 矢印数により変動)
110
- */
111
- /*
112
- g_presetObj.gaugeList = {
113
- 'Original': `F`,
114
- 'Normal': `V`,
115
- 'Hard': `V`,
116
- };
117
- */
118
-
119
- /**
120
- 空押し判定を行うか
121
- 判定させる場合は true を指定
122
- */
123
- g_presetObj.excessiveJdgUse = true;
124
-
125
-
126
- /*
127
- ------------------------------------------------------------------------
128
- フリーズアロー設定
129
- https://github.com/cwtickle/danoniplus/wiki/dos-s0004-frzArrow
130
- ------------------------------------------------------------------------
131
- */
132
-
133
- /** フリーズアローのデフォルト色セットの利用有無 (true: 使用, false: 矢印色を優先してセット) */
134
- g_presetObj.frzColors = true;
135
-
136
- /**
137
- 矢印色変化に対応してフリーズアロー色を追随する範囲の設定 (Normal: 通常時、Hit: ヒット時)
138
- ※この設定は、g_presetObj.frzColors = false もしくは
139
- 譜面ヘッダー:defaultFrzColorUse=false のときにのみ有効です。
140
- */
141
- //g_presetObj.frzScopeFromAC = [`Normal`, `Hit`];
142
-
143
- /**
144
- フリーズアローの始点で通常矢印の判定を行うか(dotさんソース方式)
145
- 判定させる場合は `true` を指定
146
- */
147
- g_presetObj.frzStartjdgUse = false;
148
-
149
- /*
150
- ------------------------------------------------------------------------
151
- デフォルトデザイン・画像設定
152
- https://github.com/cwtickle/danoniplus/wiki/dos-s0005-defaultDesign
153
- ------------------------------------------------------------------------
154
- */
155
-
156
- // デフォルトのデザインを使用せず、独自のデザインを使用するかを指定
157
- // カスタムデザインにする場合は `true` を指定
158
- g_presetObj.customDesignUse = {
159
- title: false,
160
- titleArrow: false,
161
- titleAnimation: false,
162
- back: false,
163
- backMain: false,
164
- ready: false,
165
- };
166
-
167
- /**
168
- デフォルト画像セットの設定
169
- (セット対象のフォルダ名, 拡張子, 画像回転有無(true or false), Flat時ステップ間隔の順に指定)
170
-
171
- 事前に、[img]フォルダ配下にセット対象のサブフォルダを作成し、その中に一式を入れておく必要あり
172
- 下記の場合は[classic]フォルダに[png]形式の画像一式をデフォルト画像セットとして使用する
173
-
174
- 未指定の場合のデフォルト値は以下の通り
175
- セット対象のフォルダ名:`` (imgフォルダ直下)
176
- 拡張子:`svg`形式
177
- 画像回転有無:true(回転有り)
178
- Flat時ステップ間隔:50(px) ※矢印サイズ
179
- */
180
- //g_presetObj.imageSets = [``, `classic,png`, `classic-thin,png`, `note,svg,false,0`];
181
-
182
- /**
183
- デフォルト画像セット (C_IMG_XXXX, 厳密にはg_imgObj) に対して拡張子の上書きを行うか設定
184
- 文字列の後ろ3文字をカットして、下記の値を適用する。コメントアウトした場合は、上書きを行わない。
185
- `svg`: デフォルト(svg形式)、`png`: 従来画像(png形式)
186
- */
187
- //g_presetObj.overrideExtension = `svg`;
188
-
189
- /**
190
- 追加指定する画像のリスト(サーバ上の場合のみ有効)
191
- ここで設定した画像をimgフォルダに指定した名前で格納しておくことで、
192
- stepRtnX_Yで設定する名前に使用することができる
193
-
194
- `ball`と指定した場合、下記の画像を準備する必要あり
195
- - ball.svg, ballShadow.svg, ballStepHit.svg (g_presetOverrideExtension を pngにすれば、pngに変更可)
196
- */
197
- //g_presetObj.customImageList = [`ball`, `square`];
198
-
199
- /**
200
- * 背景・マスクモーションで利用する「animationFillMode」のデフォルト値
201
- * - none : 初期画像へ戻す
202
- * - forwards : アニメーション100%の状態を維持(デフォルト)
203
- * - backwards : アニメーション 0%の状態に戻す
204
- */
205
- //g_presetObj.animationFillMode = `none`;
206
-
207
-
208
- /*
209
- ------------------------------------------------------------------------
210
- オプション有効化
211
- https://github.com/cwtickle/danoniplus/wiki/dos-s0006-settingUse
212
- ------------------------------------------------------------------------
213
- */
214
-
215
- /**
216
- オプション利用設定(デフォルト)
217
- 一律使用させたくない場合は `false` を指定(デフォルトは `true`)
218
- */
219
- g_presetObj.settingUse = {
220
- motion: `true`,
221
- scroll: `true`,
222
- shuffle: `true`,
223
- autoPlay: `true`,
224
- gauge: `true`,
225
- excessive: `true`,
226
- appearance: `true`,
227
-
228
- // stepZone: `true`,
229
- // judgment: `true`,
230
- // fastSlow: `true`,
231
- // lifeGauge: `true`,
232
- // score: `true`,
233
- // musicInfo: `true`,
234
- // filterLine: `true`,
235
- // speed: `true`,
236
- // color: `true`,
237
- // lyrics: `true`,
238
- // background: `true`,
239
- // arrowEffect: `true`,
240
- // special: `true`,
241
- };
242
-
243
- /*
244
- ------------------------------------------------------------------------
245
- プレイ画面制御
246
- https://github.com/cwtickle/danoniplus/wiki/dos-s0007-viewControl
247
- ------------------------------------------------------------------------
248
- */
249
-
250
- /**
251
- Reverse時の歌詞の自動反転制御設定
252
-
253
- 通常は以下の条件でReverseが指定された場合、歌詞表示を反転します。
254
- この設定をどのように制御するか設定します。
255
- ・上下スクロールを挟まないキーに限定(5key, 7key, 7ikey, 9A/9Bkeyなど)
256
- ・リバース・スクロール拡張用の歌詞表示(wordRev_data / wordAlt_data)が設定されていない作品
257
- ・SETTINGS 画面で Reverse:ON、Scroll:--- (指定なし) を指定してプレイ開始した場合
258
- ・歌詞表示がすべて1段表示の場合
259
-
260
- <設定可能の値>
261
- `auto`(既定):上記ルールに従い設定 / `OFF`: 上記ルールに関わらず反転しない / `ON`: 上記ルールに関わらず反転する
262
- */
263
- //g_presetObj.wordAutoReverse = `auto`;
264
-
265
- /**
266
- * フェードイン時にそれ以前のデータを蓄積しない種別(word, back, mask)を指定
267
- */
268
- g_presetObj.unStockCategories = [];
269
-
270
- /**
271
- * フェードイン時、プリロードを強制削除するリスト(英字は小文字で指定)
272
- * 指定例) back: [`fade`] ※back_dataでアニメーション名に'fade'や'Fade'を含む
273
- */
274
- g_presetObj.stockForceDelList = {
275
- word: [],
276
- back: [],
277
- mask: [],
278
- };
279
-
280
-
281
- /*
282
- ------------------------------------------------------------------------
283
- リザルトデータ
284
- https://github.com/cwtickle/danoniplus/wiki/dos-s0008-resultVals
285
- ------------------------------------------------------------------------
286
- */
287
-
288
- /*
289
- リザルトデータのフォーマット設定
290
- 以下のタグは下記で置き換えられます。
291
- [hashTag] ハッシュタグ
292
- [rank] ランク
293
- [score] スコア
294
- [playStyle] オプション設定
295
- [arrowJdg] 矢印判定数
296
- [frzJdg] フリーズアロー判定数
297
- [maxCombo] マックスコンボ、フリーズコンボ
298
- [url] scoreId付きURL
299
- */
300
- // デフォルトフォーマット
301
- // g_presetObj.resultFormat = `【#danoni[hashTag]】[musicTitle]([keyLabel]) /[maker] /Rank:[rank]/Score:[score]/Playstyle:[playStyle]/[arrowJdg]/[frzJdg]/[maxCombo] [url]`;
302
-
303
- // MFV2さんフォーマット(オプション設定なし・参考)
304
- // g_presetObj.resultFormat = `【#danoni[hashTag]】[musicTitle]/[keyLabel] /[maker] /[rank]/[arrowJdg]/[frzJdg]/Mc[maxCombo]/Sco[score]-[exScore] [url]`;
305
-
306
- /*
307
- リザルトデータ用のカスタム変数群
308
-
309
- プロパティを定義するとそれに応じた変数に置換されます。
310
- 右側に定義する値は、g_resultObj配下に定義する必要があります。
311
-
312
- 例) exScore: `exScores`,
313
- [exScore] -> g_resultObj.exScores
314
- */
315
- g_presetObj.resultVals = {
316
- // exScore: `exScore`,
317
- };
318
-
319
- /*
320
- リザルトカスタムデータの表示設定
321
- g_presetObj.resultVals から、リザルト画像データに表示したい項目を列挙します。
322
- */
323
- //g_presetObj.resultValsView = [`exScore`];
324
-
325
- /*
326
- ------------------------------------------------------------------------
327
- ラベルテキスト・メッセージの上書き
328
- https://github.com/cwtickle/danoniplus/wiki/dos-s0009-labelUpdate
329
- ------------------------------------------------------------------------
330
- */
331
-
332
- /**
333
- * ラベルテキスト (g_lblNameObj) に対応するプロパティを上書きする設定
334
- * ※danoni_setting.js の他、customjsにも利用可
335
- * ※設定可能項目についてはdanoni_constants.jsをご覧ください。
336
- */
337
- g_presetObj.lblName = {
338
- Ja: {
339
-
340
- },
341
- En: {
342
-
343
- },
344
- };
345
-
346
- /**
347
- * オンマウステキスト、確認メッセージ定義 (g_msgObj) に対応するプロパティを上書きする設定
348
- * ※danoni_setting.js の他、customjsにも利用可
349
- * ※設定可能項目についてはdanoni_constants.jsをご覧ください。
350
- */
351
- g_presetObj.msg = {
352
- Ja: {
353
-
354
- },
355
- En: {
356
-
357
- },
358
- };
359
-
360
- /**
361
- * 設定名の上書き可否設定
362
- */
363
- g_presetObj.lblRenames = {
364
- option: true,
365
- settingsDisplay: true,
366
- main: true,
367
- keyConfig: true,
368
- result: true,
369
- };
370
-
371
-
372
- /*
373
- ------------------------------------------------------------------------
374
- カスタムキー定義
375
- https://github.com/cwtickle/danoniplus/wiki/dos-s0010-customKeys
376
- ------------------------------------------------------------------------
377
- */
378
-
379
- /**
380
- * カスタムキー定義(共通)
381
- * 指定方法は作品別にカスタムキーを定義する方法と同じ(ただし、keyExtraList必須)
382
- *
383
- * 定義方法は下記を参照のこと
384
- * https://github.com/cwtickle/danoniplus/wiki/keys
385
- * https://github.com/cwtickle/danoniplus/wiki/tips-0004-extrakeys
386
- */
387
- /*
388
- g_presetObj.keysData = `
389
-
390
- |keyExtraList=6,9v|
391
- |color6=0,1,0,1,0,2$2,0,1,0,1,0|
392
- |chara6=left,leftdia,down,rightdia,right,space$space,left,leftdia,down,rightdia,right|
393
- |div6=6$6|
394
- |stepRtn6=0,45,-90,135,180,onigiri$onigiri,0,45,-90,135,180|
395
- |keyCtrl6=75/0,79/0,76/0,80/0,187/0,32/0$32/0,75/0,79/0,76/0,80/0,187/0|
396
- |shuffle6=1,1,1,1,1,0$0,1,1,1,1,1|
397
-
398
- |chara9v=9B_0$9B_0|
399
- |color9v=1,0,1,0,2,0,1,0,1$9B_0|
400
- |div9v=9$9|
401
- |keyCtrl9v=52/0,82/0,70/0,86/0,32/0,78/0,74/0,73/0,57/0$9B_0|
402
- |pos9v=0,1,2,3,4,5,6,7,8$0,1,2,3,4,5,6,7,8|
403
- |scroll9v=---::1,1,-1,-1,-1,-1,-1,1,1/flat::1,1,1,1,1,1,1,1,1$9B_0|
404
- |shuffle9v=9B_0$9B_0|
405
- |stepRtn9v=90,120,150,180,onigiri,0,30,60,90$9B_0|
406
- |transKey9v=$9B|
407
-
408
- `;
409
- */
@@ -1,410 +0,0 @@
1
- 'use strict';
2
- /**
3
- * Dancing☆Onigiri 設定用jsファイル
4
- * Template Update: 2023/08/22 (v33.3.0)
5
- *
6
- * このファイルでは、作品全体に対しての初期設定を行うことができます。
7
- * 譜面データ側で個別に同様の項目が設定されている場合は、譜面データ側の設定が優先されます。
8
- * 例えばこのファイルで g_presetObj.tuning = `onigiri` とすると全ての作品に製作者名として「onigiri」が設定されますが、
9
- * 譜面データ側で |tuning=washoi| とするとその作品には製作者名として「washoi」が設定されます。
10
- */
11
-
12
-
13
- /*
14
- ------------------------------------------------------------------------
15
- 制作者クレジット・基本設定
16
- https://github.com/cwtickle/danoniplus/wiki/dos-s0001-makerInfo
17
- ------------------------------------------------------------------------
18
- */
19
-
20
- /** 譜面製作者名 */
21
- g_presetObj.tuning = `name`;
22
-
23
- /** 譜面製作者URL */
24
- g_presetObj.tuningUrl = `https://www.google.co.jp/`;
25
-
26
- /** 自動横幅拡張設定 (true:有効、false:無効 / デフォルトは true) */
27
- //g_presetObj.autoSpread = false;
28
-
29
- /** 個人サイト別の最小横幅設定 */
30
- //g_presetObj.autoMinWidth = 600;
31
-
32
- /** 個人サイト別のウィンドウ位置 (left:左寄せ, center:中央, right:右寄せ)*/
33
- //g_presetObj.windowAlign = `center`;
34
-
35
- /*
36
- ------------------------------------------------------------------------
37
- カスタムファイル設定
38
- https://github.com/cwtickle/danoniplus/wiki/dos-s0002-customFile
39
- ------------------------------------------------------------------------
40
- */
41
-
42
- /** 既定スキン (デフォルトは default) */
43
- g_presetObj.skinType = `default`;
44
-
45
- /** skinTypeがdefaultのとき、Canvas背景を有効にするかどうかのフラグ (デフォルトは有効(true)。falseで無効化) */
46
- //g_presetObj.bgCanvasUse = false;
47
-
48
- /** 既定カスタムJs (デフォルトは danoni_custom.js) */
49
- //g_presetObj.customJs = `danoni_custom.js,danoni_init.js`;
50
-
51
- /** 既定カスタムCss (デフォルトは指定なし、cssフォルダを参照) */
52
- //g_presetObj.customCss = `danoni_custom.css`;
53
-
54
- /** 背景・マスクモーションで使用する画像パスの指定方法を他の設定に合わせる設定 (trueで有効化) */
55
- //g_presetObj.syncBackPath = true;
56
-
57
- /*
58
- ------------------------------------------------------------------------
59
- ゲージ設定
60
- https://github.com/cwtickle/danoniplus/wiki/dos-s0003-initialGauge
61
- ------------------------------------------------------------------------
62
- */
63
-
64
- /** ゲージ設定(デフォルト)*/
65
- g_presetObj.gauge = {
66
- // Border: 70, // ノルマ制でのボーダーライン、ライフ制にしたい場合は `x` を指定
67
- // Recovery: 2, // 回復量
68
- // Damage: 7, // ダメージ量
69
- // Init: 25, // 初期値
70
- };
71
-
72
- /** ゲージ設定(デフォルト以外)*/
73
- g_presetObj.gaugeCustom = {
74
- Easy: {
75
- Border: 70,
76
- Recovery: 4,
77
- Damage: 7,
78
- Init: 25,
79
- },
80
- Hard: {
81
- Border: `x`,
82
- Recovery: 1,
83
- Damage: 50,
84
- Init: 100,
85
- },
86
- NoRecovery: {
87
- Border: `x`,
88
- Recovery: 0,
89
- Damage: 50,
90
- Init: 100,
91
- },
92
- SuddenDeath: {
93
- Border: `x`,
94
- Recovery: 0,
95
- Damage: setVal(g_rootObj.maxLifeVal, C_VAL_MAXLIFE, C_TYP_FLOAT),
96
- Init: 100,
97
- },
98
- Practice: {
99
- Border: `x`,
100
- Recovery: 0,
101
- Damage: 0,
102
- Init: 50,
103
- }
104
- };
105
-
106
- /**
107
- カスタムゲージ設定(デフォルト)
108
- 'ゲージ名': `回復・ダメージ量設定` の形式で指定します。
109
- (F : 矢印数によらず固定, V: 矢印数により変動)
110
- */
111
- /*
112
- g_presetObj.gaugeList = {
113
- 'Original': `F`,
114
- 'Normal': `V`,
115
- 'Hard': `V`,
116
- };
117
- */
118
-
119
- /**
120
- 空押し判定を行うか
121
- 判定させる場合は true を指定
122
- */
123
- g_presetObj.excessiveJdgUse = false;
124
-
125
-
126
- /*
127
- ------------------------------------------------------------------------
128
- フリーズアロー設定
129
- https://github.com/cwtickle/danoniplus/wiki/dos-s0004-frzArrow
130
- ------------------------------------------------------------------------
131
- */
132
-
133
- /** フリーズアローのデフォルト色セットの利用有無 (true: 使用, false: 矢印色を優先してセット) */
134
- g_presetObj.frzColors = true;
135
-
136
- /**
137
- 矢印色変化に対応してフリーズアロー色を追随する範囲の設定 (Normal: 通常時、Hit: ヒット時)
138
- ※この設定は、g_presetObj.frzColors = false もしくは
139
- 譜面ヘッダー:defaultFrzColorUse=false のときにのみ有効です。
140
- */
141
- //g_presetObj.frzScopeFromAC = [`Normal`, `Hit`];
142
-
143
- /**
144
- フリーズアローの始点で通常矢印の判定を行うか(dotさんソース方式)
145
- 判定させる場合は true を指定
146
- */
147
- g_presetObj.frzStartjdgUse = false;
148
-
149
- /*
150
- ------------------------------------------------------------------------
151
- デフォルトデザイン・画像設定
152
- https://github.com/cwtickle/danoniplus/wiki/dos-s0005-defaultDesign
153
- ------------------------------------------------------------------------
154
- */
155
-
156
- // デフォルトのデザインを使用せず、独自のデザインを使用するかを指定
157
- // カスタムデザインにする場合は true を指定
158
- g_presetObj.customDesignUse = {
159
- title: false,
160
- titleArrow: false,
161
- titleAnimation: false,
162
- back: false,
163
- backMain: false,
164
- ready: false,
165
- };
166
-
167
- /**
168
- デフォルト画像セットの設定
169
- (セット対象のフォルダ名, 拡張子, 画像回転有無(true or false), Flat時ステップ間隔の順に指定)
170
-
171
- 事前に、[img]フォルダ配下にセット対象のサブフォルダを作成し、その中に一式を入れておく必要あり
172
- 下記の場合は[classic]フォルダに[png]形式の画像一式をデフォルト画像セットとして使用する
173
-
174
- 未指定の場合のデフォルト値は以下の通り
175
- セット対象のフォルダ名:`` (imgフォルダ直下)
176
- 拡張子:`svg`形式
177
- 画像回転有無:true(回転有り)
178
- Flat時ステップ間隔:50(px) ※矢印サイズ
179
- */
180
- //g_presetObj.imageSets = [``, `classic,png`, `classic-thin,png`, `note,svg,false,0`];
181
-
182
- /**
183
- デフォルト画像セット (C_IMG_XXXX, 厳密にはg_imgObj) に対して拡張子の上書きを行うか設定
184
- 文字列の後ろ3文字をカットして、下記の値を適用する。コメントアウトした場合は、上書きを行わない。
185
- `svg`: デフォルト(svg形式)、`png`: 従来画像(png形式)
186
- */
187
- //g_presetObj.overrideExtension = `svg`;
188
-
189
- /**
190
- 追加指定する画像のリスト(サーバ上の場合のみ有効)
191
- ここで設定した画像をimgフォルダに指定した名前で格納しておくことで、
192
- stepRtnX_Yで設定する名前に使用することができる
193
-
194
- `ball`と指定した場合、下記の画像を準備する必要あり
195
- - ball.svg, ballShadow.svg, ballStepHit.svg (g_presetOverrideExtension を pngにすれば、pngに変更可)
196
- */
197
- //g_presetObj.customImageList = [`ball`, `square`];
198
-
199
- /**
200
- * 背景・マスクモーションで利用する「animationFillMode」のデフォルト値
201
- * - none : 初期画像へ戻す
202
- * - forwards : アニメーション100%の状態を維持(デフォルト)
203
- * - backwards : アニメーション 0%の状態に戻す
204
- */
205
- //g_presetObj.animationFillMode = `none`;
206
-
207
-
208
- /*
209
- ------------------------------------------------------------------------
210
- オプション有効化
211
- https://github.com/cwtickle/danoniplus/wiki/dos-s0006-settingUse
212
- ------------------------------------------------------------------------
213
- */
214
-
215
- /**
216
- オプション利用設定(デフォルト)
217
- 一律使用させたくない場合は `false` を指定(デフォルトは `true`)
218
- Display設定の場合は `true,OFF`(設定は有効だが初期値はOFF)といったことができる
219
- */
220
- g_presetObj.settingUse = {
221
- motion: `true`,
222
- scroll: `true`,
223
- shuffle: `true`,
224
- autoPlay: `true`,
225
- gauge: `true`,
226
- excessive: `true`,
227
- appearance: `true`,
228
-
229
- // stepZone: `true`,
230
- // judgment: `true`,
231
- // fastSlow: `true`,
232
- // lifeGauge: `true`,
233
- // score: `true`,
234
- // musicInfo: `true`,
235
- // filterLine: `true`,
236
- // speed: `true`,
237
- // color: `true`,
238
- // lyrics: `true`,
239
- // background: `true`,
240
- // arrowEffect: `true`,
241
- // special: `true`,
242
- };
243
-
244
- /*
245
- ------------------------------------------------------------------------
246
- プレイ画面制御
247
- https://github.com/cwtickle/danoniplus/wiki/dos-s0007-viewControl
248
- ------------------------------------------------------------------------
249
- */
250
-
251
- /**
252
- Reverse時の歌詞の自動反転制御設定
253
-
254
- 通常は以下の条件でReverseが指定された場合、歌詞表示を反転します。
255
- この設定をどのように制御するか設定します。
256
- ・上下スクロールを挟まないキーに限定(5key, 7key, 7ikey, 9A/9Bkeyなど)
257
- ・リバース・スクロール拡張用の歌詞表示(wordRev_data / wordAlt_data)が設定されていない作品
258
- ・SETTINGS 画面で Reverse:ON、Scroll:--- (指定なし) を指定してプレイ開始した場合
259
- ・歌詞表示がすべて1段表示の場合
260
-
261
- <設定可能の値>
262
- `auto`(既定):上記ルールに従い設定 / `OFF`: 上記ルールに関わらず反転しない / `ON`: 上記ルールに関わらず反転する
263
- */
264
- //g_presetObj.wordAutoReverse = `auto`;
265
-
266
- /**
267
- * フェードイン時にそれ以前のデータを蓄積しない種別(word, back, mask)を指定
268
- */
269
- g_presetObj.unStockCategories = [];
270
-
271
- /**
272
- * フェードイン時、プリロードを強制削除するリスト(英字は小文字で指定)
273
- * 指定例) back: [`fade`] ※back_dataでアニメーション名に'fade'や'Fade'を含む
274
- */
275
- g_presetObj.stockForceDelList = {
276
- word: [],
277
- back: [],
278
- mask: [],
279
- };
280
-
281
-
282
- /*
283
- ------------------------------------------------------------------------
284
- リザルトデータ
285
- https://github.com/cwtickle/danoniplus/wiki/dos-s0008-resultVals
286
- ------------------------------------------------------------------------
287
- */
288
-
289
- /*
290
- リザルトデータのフォーマット設定
291
- 以下のタグは下記で置き換えられます。
292
- [hashTag] ハッシュタグ
293
- [rank] ランク
294
- [score] スコア
295
- [playStyle] オプション設定
296
- [arrowJdg] 矢印判定数
297
- [frzJdg] フリーズアロー判定数
298
- [maxCombo] マックスコンボ、フリーズコンボ
299
- [url] scoreId付きURL
300
- */
301
- // デフォルトフォーマット
302
- // g_presetObj.resultFormat = `【#danoni[hashTag]】[musicTitle]([keyLabel]) /[maker] /Rank:[rank]/Score:[score]/Playstyle:[playStyle]/[arrowJdg]/[frzJdg]/[maxCombo] [url]`;
303
-
304
- // MFV2さんフォーマット(オプション設定なし・参考)
305
- // g_presetObj.resultFormat = `【#danoni[hashTag]】[musicTitle]/[keyLabel] /[maker] /[rank]/[arrowJdg]/[frzJdg]/Mc[maxCombo]/Sco[score]-[exScore] [url]`;
306
-
307
- /*
308
- リザルトデータ用のカスタム変数群
309
-
310
- プロパティを定義するとそれに応じた変数に置換されます。
311
- 右側に定義する値は、g_resultObj配下に定義する必要があります。
312
-
313
- 例) exScore: `exScores`,
314
- [exScore] -> g_resultObj.exScores
315
- */
316
- g_presetObj.resultVals = {
317
- // exScore: `exScore`,
318
- };
319
-
320
- /*
321
- リザルトカスタムデータの表示設定
322
- g_presetObj.resultVals から、リザルト画像データに表示したい項目を列挙します。
323
- */
324
- //g_presetObj.resultValsView = [`exScore`];
325
-
326
- /*
327
- ------------------------------------------------------------------------
328
- ラベルテキスト・メッセージの上書き
329
- https://github.com/cwtickle/danoniplus/wiki/dos-s0009-labelUpdate
330
- ------------------------------------------------------------------------
331
- */
332
-
333
- /**
334
- * ラベルテキスト (g_lblNameObj) に対応するプロパティを上書きする設定
335
- * ※danoni_setting.js の他、customjsにも利用可
336
- * ※設定可能項目についてはdanoni_constants.jsをご覧ください。
337
- */
338
- g_presetObj.lblName = {
339
- Ja: {
340
-
341
- },
342
- En: {
343
-
344
- },
345
- };
346
-
347
- /**
348
- * オンマウステキスト、確認メッセージ定義 (g_msgObj) に対応するプロパティを上書きする設定
349
- * ※danoni_setting.js の他、customjsにも利用可
350
- * ※設定可能項目についてはdanoni_constants.jsをご覧ください。
351
- */
352
- g_presetObj.msg = {
353
- Ja: {
354
-
355
- },
356
- En: {
357
-
358
- },
359
- };
360
-
361
- /**
362
- * 設定名の上書き可否設定
363
- */
364
- g_presetObj.lblRenames = {
365
- option: true,
366
- settingsDisplay: true,
367
- main: true,
368
- keyConfig: true,
369
- result: true,
370
- };
371
-
372
-
373
- /*
374
- ------------------------------------------------------------------------
375
- カスタムキー定義
376
- https://github.com/cwtickle/danoniplus/wiki/dos-s0010-customKeys
377
- ------------------------------------------------------------------------
378
- */
379
-
380
- /**
381
- * カスタムキー定義(共通)
382
- * 指定方法は作品別にカスタムキーを定義する方法と同じ(ただし、keyExtraList必須)
383
- *
384
- * 定義方法は下記を参照のこと
385
- * https://github.com/cwtickle/danoniplus/wiki/keys
386
- * https://github.com/cwtickle/danoniplus/wiki/tips-0004-extrakeys
387
- */
388
- /*
389
- g_presetObj.keysData = `
390
-
391
- |keyExtraList=6,9v|
392
- |color6=0,1,0,1,0,2$2,0,1,0,1,0|
393
- |chara6=left,leftdia,down,rightdia,right,space$space,left,leftdia,down,rightdia,right|
394
- |div6=6$6|
395
- |stepRtn6=0,45,-90,135,180,onigiri$onigiri,0,45,-90,135,180|
396
- |keyCtrl6=75/0,79/0,76/0,80/0,187/0,32/0$32/0,75/0,79/0,76/0,80/0,187/0|
397
- |shuffle6=1,1,1,1,1,0$0,1,1,1,1,1|
398
-
399
- |chara9v=9B_0$9B_0|
400
- |color9v=1,0,1,0,2,0,1,0,1$9B_0|
401
- |div9v=9$9|
402
- |keyCtrl9v=52/0,82/0,70/0,86/0,32/0,78/0,74/0,73/0,57/0$9B_0|
403
- |pos9v=0,1,2,3,4,5,6,7,8$0,1,2,3,4,5,6,7,8|
404
- |scroll9v=---::1,1,-1,-1,-1,-1,-1,1,1/flat::1,1,1,1,1,1,1,1,1$9B_0|
405
- |shuffle9v=9B_0$9B_0|
406
- |stepRtn9v=90,120,150,180,onigiri,0,30,60,90$9B_0|
407
- |transKey9v=$9B|
408
-
409
- `;
410
- */