danoniplus 43.1.1 → 43.2.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.
Files changed (2) hide show
  1. package/js/danoni_main.js +65 -11
  2. 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 : 2025/09/21
7
+ * Revised : 2025/12/28
8
8
  *
9
9
  * https://github.com/cwtickle/danoniplus
10
10
  */
11
- const g_version = `Ver 43.1.1`;
12
- const g_revisedDate = `2025/09/21`;
11
+ const g_version = `Ver 43.2.0`;
12
+ const g_revisedDate = `2025/12/28`;
13
13
 
14
14
  // カスタム用バージョン (danoni_custom.js 等で指定可)
15
15
  let g_localVersion = ``;
@@ -2697,7 +2697,7 @@ const initialControl = async () => {
2697
2697
 
2698
2698
  // 未使用のg_keyObjプロパティを削除
2699
2699
  const keyProp = g_keyCopyLists.simple.concat(g_keyCopyLists.multiple, `keyCtrl`, `keyName`, `minWidth`, `ptchara`);
2700
- const delKeyPropList = [`ptchara7`, `keyTransPattern`, `dfPtnNum`, `minKeyCtrlNum`, `minPatterns`];
2700
+ const delKeyPropList = [`ptchara7`, `dfPtnNum`, `minKeyCtrlNum`, `minPatterns`];
2701
2701
  Object.keys(g_keyObj).forEach(key => {
2702
2702
  const type = keyProp.find(prop => key.startsWith(prop)) || ``;
2703
2703
  if (type !== ``) {
@@ -4592,6 +4592,23 @@ const getKeyUnitName = _key => unEscapeHtml(escapeHtml(g_keyObj[`keyName${_key}`
4592
4592
  const getTransKeyName = (_spaceFlg = false) => hasVal(g_keyObj[`transKey${g_keyObj.currentKey}_${g_keyObj.currentPtn}`])
4593
4593
  ? (_spaceFlg ? ` ` : ``) + `(${g_keyObj[`transKey${g_keyObj.currentKey}_${g_keyObj.currentPtn}`]})` : ``;
4594
4594
 
4595
+ /**
4596
+ * ハイスコア定義を行う際のストレージキー名の取得
4597
+ * @param {string} _key
4598
+ * @param {string} _transName
4599
+ * @param {string} _assistFlg
4600
+ * @param {string} _mirrorName
4601
+ * @param {string} _scoreId
4602
+ * @returns {string}
4603
+ */
4604
+ const getStorageKeyName = (_key, _transName, _assistFlg, _mirrorName, _scoreId) => {
4605
+ let scoreName = `${_key}${_transName}${getStgDetailName('k-')}${g_headerObj.difLabels[_scoreId]}${_assistFlg}${_mirrorName}`;
4606
+ if (g_headerObj.makerView) {
4607
+ scoreName += `-${g_headerObj.creatorNames[_scoreId]}`;
4608
+ }
4609
+ return scoreName;
4610
+ };
4611
+
4595
4612
  /**
4596
4613
  * KeyBoardEvent.code の値をCW Edition用のキーコードに変換
4597
4614
  * 簡略指定ができるように、以下の記述を許容
@@ -6861,9 +6878,24 @@ const makeHighScore = _scoreId => {
6861
6878
  const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${getStgDetailName(g_stateObj.autoPlay)}${getStgDetailName('less')}`);
6862
6879
  const mirrorName = (g_stateObj.shuffle === C_FLG_OFF ? `` : `-${g_stateObj.shuffle}`);
6863
6880
  const transKeyName = getTransKeyName();
6864
- let scoreName = `${g_headerObj.keyLabels[_scoreId]}${transKeyName}${getStgDetailName('k-')}${g_headerObj.difLabels[_scoreId]}${assistFlg}${mirrorName}`;
6865
- if (g_headerObj.makerView) {
6866
- scoreName += `-${g_headerObj.creatorNames[_scoreId]}`;
6881
+ let scoreName = getStorageKeyName(g_headerObj.keyLabels[_scoreId], transKeyName, assistFlg, mirrorName, _scoreId);
6882
+
6883
+ if (!hasVal(g_localStorage.highscores?.[scoreName])) {
6884
+
6885
+ // 古いキー定義の情報を検索
6886
+ const relatedKeys = Object.entries(g_keyObj.keyTransPattern)
6887
+ .filter(([key, value]) => value === g_headerObj.keyLabels[_scoreId])
6888
+ .map(([key]) => key);
6889
+
6890
+ // 古いキー定義のハイスコアがいる場合は、現行キー定義として表示
6891
+ for (const legacyKey of relatedKeys) {
6892
+ let tmpScoreName = getStorageKeyName(legacyKey, transKeyName, assistFlg, mirrorName, _scoreId);
6893
+ const src = g_localStorage.highscores?.[tmpScoreName];
6894
+ if (hasVal(src)) {
6895
+ g_localStorage.highscores[scoreName] = structuredClone(src);
6896
+ break;
6897
+ }
6898
+ }
6867
6899
  }
6868
6900
 
6869
6901
  const createScoreLabel = (_id, _text, { xPos = 0, yPos = 0, dx = 0, w = 150, h = 17, colorName = _id, align = C_ALIGN_LEFT, overflow = `visible` } = {}) =>
@@ -14004,10 +14036,8 @@ const resultInit = () => {
14004
14036
  // ハイスコア差分計算
14005
14037
  const assistFlg = (g_autoPlaysBase.includes(g_stateObj.autoPlay) ? `` : `-${g_stateObj.autoPlay}less`);
14006
14038
  const mirrorName = (g_stateObj.shuffle.indexOf(`Mirror`) !== -1 ? `-${g_stateObj.shuffle}` : ``);
14007
- let scoreName = `${g_headerObj.keyLabels[g_stateObj.scoreId]}${transKeyName}${getStgDetailName('k-')}${g_headerObj.difLabels[g_stateObj.scoreId]}${assistFlg}${mirrorName}`;
14008
- if (g_headerObj.makerView) {
14009
- scoreName += `-${g_headerObj.creatorNames[g_stateObj.scoreId]}`;
14010
- }
14039
+ let scoreName = getStorageKeyName(g_headerObj.keyLabels[g_stateObj.scoreId], transKeyName, assistFlg, mirrorName, g_stateObj.scoreId);
14040
+
14011
14041
  const highscoreDfObj = {
14012
14042
  ii: 0, shakin: 0, matari: 0, shobon: 0, uwan: 0,
14013
14043
  kita: 0, iknai: 0,
@@ -14038,6 +14068,30 @@ const resultInit = () => {
14038
14068
 
14039
14069
  if (highscoreCondition) {
14040
14070
 
14071
+ // 古いキー定義の情報を検索
14072
+ const relatedKeys = Object.entries(g_keyObj.keyTransPattern)
14073
+ .filter(([key, value]) => value === g_headerObj.keyLabels[g_stateObj.scoreId])
14074
+ .map(([key]) => key);
14075
+
14076
+ // 古いキー定義のスコアデータを現行キー定義に移行
14077
+ for (const legacyKey of relatedKeys) {
14078
+ let tmpScoreName = getStorageKeyName(
14079
+ legacyKey, transKeyName, assistFlg, mirrorName, g_stateObj.scoreId
14080
+ );
14081
+ const src = g_localStorage.highscores?.[tmpScoreName];
14082
+ if (!hasVal(src)) {
14083
+ continue;
14084
+ }
14085
+
14086
+ // 現行キー定義にスコアデータが存在しない場合、移行元のスコアデータをコピー
14087
+ if (!hasVal(g_localStorage.highscores?.[scoreName])) {
14088
+ g_localStorage.highscores[scoreName] = structuredClone(src);
14089
+ }
14090
+
14091
+ // 古いキー定義は見つかった最初の1件のみ移行し、以降は削除
14092
+ delete g_localStorage.highscores[tmpScoreName];
14093
+ }
14094
+
14041
14095
  Object.keys(jdgScoreObj).filter(judge => judge !== ``)
14042
14096
  .forEach(judge => highscoreDfObj[judge] = g_resultObj[judge] -
14043
14097
  (scoreName in g_localStorage.highscores ? g_localStorage.highscores[scoreName][judge] : 0));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "danoniplus",
3
- "version": "43.1.1",
3
+ "version": "43.2.0",
4
4
  "description": "Dancing☆Onigiri (CW Edition) - Web-based Rhythm Game",
5
5
  "main": "./js/danoni_main.js",
6
6
  "scripts": {