diff --git a/main/main.js b/main/main.js index ab8cca6..32dc9d9 100644 --- a/main/main.js +++ b/main/main.js @@ -1,6 +1,7 @@ const { app, BrowserWindow, ipcMain } = require("electron"); const path = require("path"); const { spawn } = require('child_process') +const fs = require("fs"); // 音效播放器 function playAudioFile(filePath) { @@ -52,6 +53,22 @@ ipcMain.handle('get-sound-path', (_, soundFile) => { } }); +ipcMain.handle('get-sound-files', async () => { + const soundDir = process.env.NODE_ENV === 'development' + ? path.join(__dirname, '../renderer/public/assets/sounds') + : path.join(__dirname, '../renderer/dist/assets/sounds'); + + try { + // 读取目录下的所有文件名 + const files = await fs.promises.readdir(soundDir); + // 筛选出 .mp3 文件并返回 + return files.filter(file => file.endsWith('.mp3')); + } catch (error) { + console.error('无法读取声音目录:', error); + return []; // 如果出错则返回空数组 + } +}); + let mainWindow; function createWindow() { diff --git a/main/preload.js b/main/preload.js index 55f4551..e078257 100644 --- a/main/preload.js +++ b/main/preload.js @@ -9,6 +9,7 @@ contextBridge.exposeInMainWorld('electronAPI', { } }, getSoundPath: (soundFile) => ipcRenderer.invoke('get-sound-path', soundFile), + getSoundFiles: () => ipcRenderer.invoke('get-sound-files'), showTooltip: (text) => ipcRenderer.send('show-tooltip', text), onUpdatePosition: (callback) => { ipcRenderer.on('update-position', (_, position) => callback(position)) diff --git a/renderer/src/App.vue b/renderer/src/App.vue index 2c664e7..5fe61c1 100644 --- a/renderer/src/App.vue +++ b/renderer/src/App.vue @@ -1,34 +1,44 @@