danoniplus 34.3.2 → 34.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 CHANGED
@@ -4,12 +4,12 @@
4
4
  *
5
5
  * Source by tickle
6
6
  * Created : 2018/10/08
7
- * Revised : 2023/10/21
7
+ * Revised : 2023/10/31
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 34.3.2`;
12
- const g_revisedDate = `2023/10/21`;
11
+ const g_version = `Ver 34.4.1`;
12
+ const g_revisedDate = `2023/10/31`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -536,6 +536,21 @@ const blockCode = _setCode => !C_BLOCK_KEYS.includes(_setCode);
536
536
  /* ショートカット制御 */
537
537
  /*-----------------------------------------------------------*/
538
538
 
539
+ /**
540
+ * キーを押した状態を格納
541
+ * (KeyboardEvent.codeが空のときは、別キーとして扱う)
542
+ * @param {object} _evt
543
+ * @param {boolean} _keyHitFlg
544
+ */
545
+ const switchKeyHit = (_evt, _keyHitFlg = false) => {
546
+ if (_evt.code === ``) {
547
+ g_inputKeyBuffer[''] = false;
548
+ g_inputKeyBuffer[_evt.key === `Shift` ? g_kCdNameObj.shiftRKey : g_kCdNameObj.unknownKey] = _keyHitFlg;
549
+ } else {
550
+ g_inputKeyBuffer[_evt.code] = _keyHitFlg;
551
+ }
552
+ }
553
+
539
554
  /**
540
555
  * キーを押したときの動作(汎用)
541
556
  * @param {object} _evt
@@ -551,7 +566,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
551
566
  if (_evt.repeat && (g_unrepeatObj.page.includes(_displayName) || g_unrepeatObj.key.includes(setCode))) {
552
567
  return blockCode(setCode);
553
568
  }
554
- g_inputKeyBuffer[setCode] = true;
569
+ switchKeyHit(_evt, true);
555
570
 
556
571
  // 対象ボタンを検索
557
572
  const scLists = Object.keys(g_shortcutObj[_displayName]).filter(keys => {
@@ -562,7 +577,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
562
577
  if (scLists.length > 0) {
563
578
  // リンク先にジャンプする場合はonkeyUpイベントが動かないため、事前にキー状態をリセット
564
579
  if (g_shortcutObj[_displayName][scLists[0]].reset) {
565
- g_inputKeyBuffer[setCode] = false;
580
+ switchKeyHit(_evt);
566
581
  }
567
582
  // 対象ボタン処理を実行
568
583
  const targetId = document.getElementById(g_shortcutObj[_displayName][scLists[0]].id);
@@ -571,7 +586,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
571
586
  }
572
587
  return blockCode(setCode);
573
588
  }
574
- _func(setCode);
589
+ _func(setCode, _evt.key);
575
590
  return blockCode(setCode);
576
591
  };
577
592
 
@@ -3890,7 +3905,21 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
3890
3905
  g_keyObj[`minWidth${newKey}`] = _dosObj[`minWidth${newKey}`] ?? g_keyObj[`minWidth${newKey}`] ?? g_keyObj.minWidthDefault;
3891
3906
 
3892
3907
  // キーコンフィグ (keyCtrlX_Y)
3893
- g_keyObj.minPatterns = newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, { errCd: `E_0104`, baseCopyFlg: true });
3908
+ g_keyObj.minPatterns = newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, {
3909
+ errCd: `E_0104`, baseCopyFlg: true,
3910
+ loopFunc: (k, keyheader) => {
3911
+ const addShiftRKey = (_pattern = ``) => {
3912
+ const keyCtrls = g_keyObj[`${keyheader}_${k + dfPtnNum}${_pattern}`];
3913
+ for (let j = 0; j < keyCtrls.length; j++) {
3914
+ if (keyCtrls[j].includes(g_kCdObj.shiftRkey) && !keyCtrls[j].includes(g_kCdObj.shiftRAltKey)) {
3915
+ keyCtrls[j].push(g_kCdObj.shiftRAltKey);
3916
+ }
3917
+ }
3918
+ };
3919
+ addShiftRKey();
3920
+ addShiftRKey(`d`);
3921
+ },
3922
+ });
3894
3923
 
3895
3924
  // 読込変数の接頭辞 (charaX_Y)
3896
3925
  newKeyMultiParam(newKey, `chara`, toString);
@@ -6216,8 +6245,8 @@ const keyConfigInit = (_kcType = g_kcType) => {
6216
6245
  g_keycons.cursorNum = g_keycons.cursorNumList.findIndex(val => val === g_currentj);
6217
6246
  setKeyConfigCursor();
6218
6247
  }, {
6219
- x: keyconX, y: 50 + C_KYC_REPHEIGHT * k + keyconY,
6220
- w: C_ARW_WIDTH, h: C_KYC_REPHEIGHT, siz: g_limitObj.keySetSiz,
6248
+ x: keyconX - 5, y: 50 + C_KYC_REPHEIGHT * k + keyconY,
6249
+ w: C_ARW_WIDTH + 10, h: C_KYC_REPHEIGHT, siz: g_limitObj.keySetSiz,
6221
6250
  }, g_cssObj.button_Default_NoColor, g_cssObj.title_base)
6222
6251
  );
6223
6252
 
@@ -6726,9 +6755,14 @@ const keyConfigInit = (_kcType = g_kcType) => {
6726
6755
  );
6727
6756
 
6728
6757
  // キーボード押下時処理
6729
- setShortcutEvent(g_currentPage, setCode => {
6758
+ setShortcutEvent(g_currentPage, (kbCode, kbKey) => {
6730
6759
  const keyCdObj = document.querySelector(`#keycon${g_currentj}_${g_currentk}`);
6731
- let setKey = g_kCdN.findIndex(kCd => kCd === setCode);
6760
+ let setKey = g_kCdN.findIndex(kCd => kCd === kbCode);
6761
+
6762
+ // 右シフトキー対応
6763
+ if (setKey === g_kCdObj.unknown && kbKey === `Shift`) {
6764
+ setKey = g_kCdObj.shiftRAltKey;
6765
+ }
6732
6766
 
6733
6767
  // 全角切替、BackSpace、Deleteキー、Escキーは割り当て禁止
6734
6768
  // また、直前と同じキーを押した場合(BackSpaceを除く)はキー操作を無効にする
@@ -8381,11 +8415,12 @@ const pushColors = (_header, _frame, _val, _colorCd, _allFlg) => {
8381
8415
  const ctype = (targetj >= 10 ? `Hit` : `Normal`) + (targetj % 2 === 0 ? `` : `Bar`);
8382
8416
  const colorPos = Math.ceil((targetj % 10 - 1) / 2);
8383
8417
 
8384
- g_keyObj[`color${tkObj.keyCtrlPtn}`].filter(cpattern => colorPos === cpattern)
8385
- .forEach((cpattern, k) => {
8418
+ g_keyObj[`color${tkObj.keyCtrlPtn}`].forEach((cpattern, k) => {
8419
+ if (colorPos === cpattern) {
8386
8420
  initialize(baseHeader + ctype);
8387
8421
  pushColor(baseHeader + ctype, k + addAll);
8388
- });
8422
+ }
8423
+ });
8389
8424
  });
8390
8425
  }
8391
8426
 
@@ -8501,6 +8536,13 @@ const getArrowSettings = _ => {
8501
8536
  for (let j = 0; j < g_workObj.keyCtrl.length; j++) {
8502
8537
  for (let k = 0; k < g_workObj.keyCtrl[j].length; k++) {
8503
8538
  g_workObj.keyCtrlN[j][k] = g_kCdN[g_workObj.keyCtrl[j][k]];
8539
+
8540
+ // 内部のキーコードにより、KeyboardEvent.codeの値を切り替え
8541
+ if (g_workObj.keyCtrl[j][k] === g_kCdObj.unknown) {
8542
+ g_workObj.keyCtrlN[j][k] = g_kCdNameObj.unknownKey;
8543
+ } else if (g_workObj.keyCtrl[j][k] === g_kCdObj.shiftRAltKey) {
8544
+ g_workObj.keyCtrlN[j][k] = g_kCdNameObj.shiftRKey;
8545
+ }
8504
8546
  g_workObj.keyHitFlg[j][k] = false;
8505
8547
  }
8506
8548
  }
@@ -9091,11 +9133,12 @@ const mainInit = _ => {
9091
9133
  */
9092
9134
  const mainKeyDownActFunc = {
9093
9135
 
9094
- OFF: (_keyCode) => {
9136
+ OFF: (_code, _key) => {
9137
+ const convCode = (_code === `` ? (_key === `Shift` ? g_kCdNameObj.shiftRKey : g_kCdNameObj.unknownKey) : _code);
9095
9138
  const matchKeys = g_workObj.keyCtrlN;
9096
9139
 
9097
9140
  for (let j = 0; j < keyNum; j++) {
9098
- matchKeys[j].filter((key, k) => _keyCode === key && !g_workObj.keyHitFlg[j][k] && !g_judgObj.lockFlgs[j])
9141
+ matchKeys[j].filter((key, k) => convCode === key && !g_workObj.keyHitFlg[j][k] && !g_judgObj.lockFlgs[j])
9099
9142
  .forEach(() => {
9100
9143
  g_judgObj.lockFlgs[j] = true;
9101
9144
  judgeArrow(j);
@@ -9115,9 +9158,8 @@ const mainInit = _ => {
9115
9158
  if (evt.repeat && !g_mainRepeatObj.key.includes(setCode)) {
9116
9159
  return blockCode(setCode);
9117
9160
  }
9118
-
9119
- g_inputKeyBuffer[setCode] = true;
9120
- mainKeyDownActFunc[g_stateObj.autoAll](setCode);
9161
+ switchKeyHit(evt, true);
9162
+ mainKeyDownActFunc[g_stateObj.autoAll](setCode, evt.key);
9121
9163
 
9122
9164
  // 曲中リトライ、タイトルバック
9123
9165
  if (setCode === g_kCdN[g_headerObj.keyRetry]) {
@@ -9178,8 +9220,7 @@ const mainInit = _ => {
9178
9220
  };
9179
9221
 
9180
9222
  document.onkeyup = evt => {
9181
- const setCode = evt.code;
9182
- g_inputKeyBuffer[setCode] = false;
9223
+ switchKeyHit(evt);
9183
9224
  mainKeyUpActFunc[g_stateObj.autoAll]();
9184
9225
  };
9185
9226
 
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Source by tickle
7
7
  * Created : 2019/11/19
8
- * Revised : 2023/10/01 (v34.2.0)
8
+ * Revised : 2023/10/31 (v34.4.1)
9
9
  *
10
10
  * https://github.com/cwtickle/danoniplus
11
11
  */
@@ -112,7 +112,7 @@ const g_limitObj = {
112
112
  titleSiz: 32,
113
113
  mainSiz: 14,
114
114
  musicTitleSiz: 13,
115
- keySetSiz: 16,
115
+ keySetSiz: 15,
116
116
  };
117
117
 
118
118
  /** 設定項目の位置 */
@@ -1234,6 +1234,8 @@ g_kCd[240] = `CapsLk`;
1234
1234
  g_kCd[256] = `R)Shift`;
1235
1235
  g_kCd[257] = `R)Ctrl`;
1236
1236
  g_kCd[258] = `R)Alt`;
1237
+ g_kCd[259] = `Window`;
1238
+ g_kCd[260] = `R-Shift`;
1237
1239
 
1238
1240
  // 従来のキーコードとの変換用
1239
1241
  g_kCdN[0] = `- - -`; // 無効値
@@ -1352,12 +1354,20 @@ g_kCdN[256] = `ShiftRight`;
1352
1354
  g_kCdN[257] = `ControlRight`;
1353
1355
  g_kCdN[258] = `AltRight`;
1354
1356
  g_kCdN[259] = `MetaRight`;
1357
+ g_kCdN[260] = ``;
1355
1358
 
1356
1359
  const g_kCdNameObj = {
1357
1360
  shiftLKey: `ShiftLeft`,
1358
1361
  shiftRKey: `ShiftRight`,
1359
1362
  metaLKey: `MetaLeft`,
1360
1363
  metaRKey: `MetaRight`,
1364
+ unknownKey: `Unknown`,
1365
+ };
1366
+
1367
+ const g_kCdObj = {
1368
+ unknown: 1,
1369
+ shiftRkey: 256,
1370
+ shiftRAltKey: 260,
1361
1371
  };
1362
1372
 
1363
1373
  // 画面別ショートカット
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "34.3.2",
3
+ "version": "34.4.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {