danoniplus 34.5.0 → 34.5.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.
Files changed (2) hide show
  1. package/js/danoni_main.js +21 -60
  2. package/package.json +1 -1
package/js/danoni_main.js CHANGED
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 34.5.0`;
11
+ const g_version = `Ver 34.5.1`;
12
12
  const g_revisedDate = `2023/11/05`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
@@ -515,13 +515,14 @@ const nextPos = (_basePos, _num, _length) => (_basePos + _num + _length) % _leng
515
515
 
516
516
  /**
517
517
  * 特定キーコードを置換する処理
518
- * @param {string} _setCode
518
+ * @param {object} _evt
519
519
  */
520
- const transCode = _setCode => {
521
- if ([`Control`, `Shift`, `Alt`].includes(_setCode.slice(0, -5))) {
522
- return _setCode.replaceAll(`Right`, `Left`);
520
+ const transCode = _evt => {
521
+ const evtCode = _evt.code;
522
+ if (evtCode === `` && _evt.key === `Shift`) {
523
+ return `ShiftRight`;
523
524
  }
524
- return _setCode;
525
+ return evtCode;
525
526
  };
526
527
 
527
528
  /**
@@ -535,21 +536,6 @@ const blockCode = _setCode => !C_BLOCK_KEYS.includes(_setCode);
535
536
  /* ショートカット制御 */
536
537
  /*-----------------------------------------------------------*/
537
538
 
538
- /**
539
- * キーを押した状態を格納
540
- * (KeyboardEvent.codeが空のときは、別キーとして扱う)
541
- * @param {object} _evt
542
- * @param {boolean} _keyHitFlg
543
- */
544
- const switchKeyHit = (_evt, _keyHitFlg = false) => {
545
- if (_evt.code === ``) {
546
- g_inputKeyBuffer[''] = false;
547
- g_inputKeyBuffer[_evt.key === `Shift` ? g_kCdNameObj.shiftRKey : g_kCdNameObj.unknownKey] = _keyHitFlg;
548
- } else {
549
- g_inputKeyBuffer[_evt.code] = _keyHitFlg;
550
- }
551
- }
552
-
553
539
  /**
554
540
  * キーを押したときの動作(汎用)
555
541
  * @param {object} _evt
@@ -561,11 +547,11 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
561
547
  if (!_dfEvtFlg) {
562
548
  _evt.preventDefault();
563
549
  }
564
- const setCode = _evt.code;
550
+ const setCode = transCode(_evt);
565
551
  if (_evt.repeat && (g_unrepeatObj.page.includes(_displayName) || g_unrepeatObj.key.includes(setCode))) {
566
552
  return blockCode(setCode);
567
553
  }
568
- switchKeyHit(_evt, true);
554
+ g_inputKeyBuffer[setCode] = true;
569
555
 
570
556
  // 対象ボタンを検索
571
557
  const scLists = Object.keys(g_shortcutObj[_displayName])
@@ -573,7 +559,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
573
559
  if (scLists.length > 0) {
574
560
  // リンク先にジャンプする場合はonkeyUpイベントが動かないため、事前にキー状態をリセット
575
561
  if (g_shortcutObj[_displayName][scLists[0]].reset) {
576
- switchKeyHit(_evt);
562
+ g_inputKeyBuffer[setCode] = false;
577
563
  }
578
564
  // 対象ボタン処理を実行
579
565
  const targetId = document.getElementById(g_shortcutObj[_displayName][scLists[0]].id);
@@ -582,7 +568,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
582
568
  }
583
569
  return blockCode(setCode);
584
570
  }
585
- _func(setCode, _evt.key);
571
+ _func(setCode);
586
572
  return blockCode(setCode);
587
573
  };
588
574
 
@@ -593,7 +579,7 @@ const commonKeyDown = (_evt, _displayName, _func = _code => { }, _dfEvtFlg) => {
593
579
  const commonKeyUp = _evt => {
594
580
  g_inputKeyBuffer[g_kCdNameObj.metaLKey] = false;
595
581
  g_inputKeyBuffer[g_kCdNameObj.metaRKey] = false;
596
- switchKeyHit(_evt);
582
+ g_inputKeyBuffer[transCode(_evt)] = false;
597
583
  };
598
584
 
599
585
  /**
@@ -1386,7 +1372,7 @@ const resetKeyControl = _ => {
1386
1372
  document.onkeyup = _ => { };
1387
1373
  document.onkeydown = evt => {
1388
1374
  evt.preventDefault();
1389
- return blockCode(evt.code);
1375
+ return blockCode(transCode(evt));
1390
1376
  };
1391
1377
  g_inputKeyBuffer = {};
1392
1378
  };
@@ -3892,18 +3878,6 @@ const keysConvert = (_dosObj, { keyExtraList = _dosObj.keyExtraList?.split(`,`)
3892
3878
  // キーコンフィグ (keyCtrlX_Y)
3893
3879
  g_keyObj.minPatterns = newKeyMultiParam(newKey, `keyCtrl`, toKeyCtrlArray, {
3894
3880
  errCd: `E_0104`, baseCopyFlg: true,
3895
- loopFunc: (k, keyheader) => {
3896
- const addShiftRKey = (_pattern = ``) => {
3897
- const keyCtrls = g_keyObj[`${keyheader}_${k + dfPtnNum}${_pattern}`];
3898
- for (let j = 0; j < keyCtrls.length; j++) {
3899
- if (keyCtrls[j].includes(g_kCdObj.shiftRkey) && !keyCtrls[j].includes(g_kCdObj.shiftRAltKey)) {
3900
- keyCtrls[j].push(g_kCdObj.shiftRAltKey);
3901
- }
3902
- }
3903
- };
3904
- addShiftRKey();
3905
- addShiftRKey(`d`);
3906
- },
3907
3881
  });
3908
3882
 
3909
3883
  // 読込変数の接頭辞 (charaX_Y)
@@ -6752,15 +6726,10 @@ const keyConfigInit = (_kcType = g_kcType) => {
6752
6726
  );
6753
6727
 
6754
6728
  // キーボード押下時処理
6755
- setShortcutEvent(g_currentPage, (kbCode, kbKey) => {
6729
+ setShortcutEvent(g_currentPage, (kbCode) => {
6756
6730
  const keyCdObj = document.getElementById(`keycon${g_currentj}_${g_currentk}`);
6757
6731
  let setKey = g_kCdN.findIndex(kCd => kCd === kbCode);
6758
6732
 
6759
- // 右シフトキー対応
6760
- if (setKey === g_kCdObj.unknown && kbKey === `Shift`) {
6761
- setKey = g_kCdObj.shiftRAltKey;
6762
- }
6763
-
6764
6733
  // 全角切替、BackSpace、Deleteキー、Escキーは割り当て禁止
6765
6734
  // また、直前と同じキーを押した場合(BackSpaceを除く)はキー操作を無効にする
6766
6735
  const disabledKeys = [240, 242, 243, 244, 91, 29, 28, 27, 259, g_prevKey];
@@ -8502,13 +8471,6 @@ const getArrowSettings = _ => {
8502
8471
  for (let j = 0; j < g_workObj.keyCtrl.length; j++) {
8503
8472
  for (let k = 0; k < g_workObj.keyCtrl[j].length; k++) {
8504
8473
  g_workObj.keyCtrlN[j][k] = g_kCdN[g_workObj.keyCtrl[j][k]];
8505
-
8506
- // 内部のキーコードにより、KeyboardEvent.codeの値を切り替え
8507
- if (g_workObj.keyCtrl[j][k] === g_kCdObj.unknown) {
8508
- g_workObj.keyCtrlN[j][k] = g_kCdNameObj.unknownKey;
8509
- } else if (g_workObj.keyCtrl[j][k] === g_kCdObj.shiftRAltKey) {
8510
- g_workObj.keyCtrlN[j][k] = g_kCdNameObj.shiftRKey;
8511
- }
8512
8474
  g_workObj.keyHitFlg[j][k] = false;
8513
8475
  }
8514
8476
  }
@@ -9094,12 +9056,11 @@ const mainInit = _ => {
9094
9056
  */
9095
9057
  const mainKeyDownActFunc = {
9096
9058
 
9097
- OFF: (_code, _key) => {
9098
- const convCode = _code || (_key === `Shift` ? g_kCdNameObj.shiftRKey : g_kCdNameObj.unknownKey);
9059
+ OFF: (_code) => {
9099
9060
  const matchKeys = g_workObj.keyCtrlN;
9100
9061
 
9101
9062
  for (let j = 0; j < keyNum; j++) {
9102
- matchKeys[j].filter((key, k) => convCode === key && !g_workObj.keyHitFlg[j][k] && !g_judgObj.lockFlgs[j])
9063
+ matchKeys[j].filter((key, k) => _code === key && !g_workObj.keyHitFlg[j][k] && !g_judgObj.lockFlgs[j])
9103
9064
  .forEach(() => {
9104
9065
  g_judgObj.lockFlgs[j] = true;
9105
9066
  judgeArrow(j);
@@ -9108,19 +9069,19 @@ const mainInit = _ => {
9108
9069
  }
9109
9070
  },
9110
9071
 
9111
- ON: (_keyCode) => { },
9072
+ ON: (_code) => { },
9112
9073
  };
9113
9074
 
9114
9075
  // キー操作イベント
9115
9076
  document.onkeydown = evt => {
9116
9077
  evt.preventDefault();
9117
- const setCode = evt.code;
9078
+ const setCode = transCode(evt);
9118
9079
 
9119
9080
  if (evt.repeat && !g_mainRepeatObj.key.includes(setCode)) {
9120
9081
  return blockCode(setCode);
9121
9082
  }
9122
- switchKeyHit(evt, true);
9123
- mainKeyDownActFunc[g_stateObj.autoAll](setCode, evt.key);
9083
+ g_inputKeyBuffer[setCode] = true;
9084
+ mainKeyDownActFunc[g_stateObj.autoAll](setCode);
9124
9085
 
9125
9086
  // 曲中リトライ、タイトルバック
9126
9087
  if (setCode === g_kCdN[g_headerObj.keyRetry]) {
@@ -9181,7 +9142,7 @@ const mainInit = _ => {
9181
9142
  };
9182
9143
 
9183
9144
  document.onkeyup = evt => {
9184
- switchKeyHit(evt);
9145
+ g_inputKeyBuffer[transCode(evt)] = false;
9185
9146
  mainKeyUpActFunc[g_stateObj.autoAll]();
9186
9147
  };
9187
9148
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "34.5.0",
3
+ "version": "34.5.1",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "index.js",
6
6
  "scripts": {