Переглянути джерело

feat: 增加对slide_bone的key修改

lvkun996 6 місяців тому
батько
коміт
93433fa7b8

+ 9 - 0
src/controller/CardController.ts

@@ -29,6 +29,15 @@ export class CardController {
     [2, '提示']
   ])
 
+  static slideKnobMap = new Map([
+    ['red', { key: 'R', number: 6 }],
+    ['green', { key: 'G', number: 1 }],
+    ['blue', { key: 'B', number: 2 }],
+    ['yellow', { key: 'Y', number: 4 }],
+    ['tangerine', { key: 'T', number: 3 }],
+    ['purple', { key: 'P', number: 5 }]
+  ])
+
   static cardButtonRowMap = new Map([
     [1, 'A'],
     [2, 'B'],

+ 19 - 5
src/pages/card/components/config-button.vue

@@ -41,6 +41,7 @@
 <script lang="ts" setup>
 import { message } from 'ant-design-vue'
 import { reactive, ref, watch } from 'vue'
+import { CardController } from '@/controller'
 
 interface IProps {
   config: API.CardJson
@@ -156,11 +157,24 @@ function generateButtonJson () {
       const selected = slide_knob['score' + row] === value
       // 找到当前颜色的key
       const colorObj = colors.find(c => c.value === value)
-      result[colorKey].push({
-        music_name: 'hnyx.mp3',
-        is_break: 1,
-        key: selected ? (colorObj?.key || '') : ''
-      })
+
+      if (selected) {
+        //
+        // new Array(6 - row)
+        const key = [0, 0, 0, 0, 0, 0]
+        key.splice(row - 1, 1, CardController.slideKnobMap.get(colorKey)!.number)
+        result[colorKey].push({
+          music_name: 'hnyx.mp3',
+          is_break: 1,
+          key: key.reverse().join('')
+        })
+      } else {
+        result[colorKey].push({
+          music_name: 'hnyx.mp3',
+          is_break: 1,
+          key: ''
+        })
+      }
     }
   })
 

+ 2 - 2
src/pages/card/components/select-audio-new.vue

@@ -72,8 +72,8 @@
             <div class="audio-info">
               <div class="audio-name">{{ audio.title }}</div>
               <div class="audio-status">
-                <span v-if="audioManager.isAudioCached(audio.url)" class="cached-tag">已缓存</span>
-                <span v-else class="loading-tag">需加载</span>
+                <!-- <span v-if="audioManager.isAudioCached(audio.url)" class="cached-tag">已缓存</span>
+                <span v-else class="loading-tag">需加载</span> -->
               </div>
             </div>
             <div class="audio-controls">

+ 9 - 6
src/pages/card/index.vue

@@ -335,12 +335,15 @@ const handleCardTemplateDelete = (ids) => {
 }
 
 const handleOperation = ({ ids }: {ids: number[]}) => {
-  openState.configCardOpen = true
-  cardJson.touch_key!.forEach(item => {
-    if (ids.includes(item.id)) {
-      item.selected = !item.selected
-    }
-  })
+  if (openState.configCardOpen) {
+     cardJson.touch_key!.forEach(item => {
+       if (ids.includes(item.id)) {
+         item.selected = !item.selected
+       }
+     })
+  } else {
+    openState.configCardOpen = true
+  }
 }
 
 const handleCardTypeSelect = () => {