chore: 支持背景音乐设置
This commit is contained in:
@@ -102,25 +102,15 @@ const getDefaultConfig = () => ({
|
||||
}
|
||||
}
|
||||
},
|
||||
// ========== 音乐配置默认值(和displayConfig同级) ==========
|
||||
music: {
|
||||
enabled: false,
|
||||
filePath: ''
|
||||
},
|
||||
battleEndTime: {
|
||||
date: new Date().toISOString().split('T')[0],
|
||||
time: '00:00:00'
|
||||
},
|
||||
drumConfig: {
|
||||
showDrum: false, // 控制战鼓的显示,默认不显示
|
||||
sound: {
|
||||
volume: 1.0,
|
||||
enabled: false, // 控制声音播放,默认不播放
|
||||
soundSrc: '' // 战鼓声音来源文件路径
|
||||
},
|
||||
animation: {
|
||||
enabled: false
|
||||
},
|
||||
pattern: {
|
||||
strongBeats: [1],
|
||||
totalBeats: 4
|
||||
}
|
||||
},
|
||||
backgroundConfig: {
|
||||
useBackgroundImage: true,
|
||||
backgroundImage: '/battle-background.jpg', // 默认战旗背景图片
|
||||
@@ -332,26 +322,6 @@ export const saveBattleEndTime = async (endTime) => {
|
||||
return await writeConfig(config);
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取战鼓配置
|
||||
* @returns {Object} 战鼓配置
|
||||
*/
|
||||
export const getDrumConfig = async () => {
|
||||
const config = await readConfig();
|
||||
return config.drumConfig || getDefaultConfig().drumConfig;
|
||||
};
|
||||
|
||||
/**
|
||||
* 保存战鼓配置
|
||||
* @param {Object} drumConfig 战鼓配置
|
||||
* @returns {boolean} 是否保存成功
|
||||
*/
|
||||
export const saveDrumConfig = async (drumConfig) => {
|
||||
const config = await readConfig();
|
||||
config.drumConfig = drumConfig;
|
||||
return await writeConfig(config);
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取背景配置
|
||||
* @returns {Object} 背景配置
|
||||
@@ -370,4 +340,97 @@ export const saveBackgroundConfig = async (backgroundConfig) => {
|
||||
const config = await readConfig();
|
||||
config.backgroundConfig = backgroundConfig;
|
||||
return await writeConfig(config);
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取音乐配置
|
||||
* @returns {Object} 音乐配置
|
||||
*/
|
||||
export const getMusicConfig = async () => {
|
||||
const config = await readConfig();
|
||||
return config.music || getDefaultConfig().music;
|
||||
};
|
||||
|
||||
/**
|
||||
* 保存音乐配置
|
||||
* @param {Object} musicConfig 音乐配置
|
||||
* @returns {boolean} 是否保存成功
|
||||
*/
|
||||
export const saveMusicConfig = async (musicConfig) => {
|
||||
const config = await readConfig();
|
||||
config.music = musicConfig;
|
||||
return await writeConfig(config);
|
||||
};
|
||||
|
||||
/**
|
||||
* 上传音乐
|
||||
* @param {File} file 音乐文件
|
||||
* @returns {Object} 上传结果 { success: boolean, filePath?: string, filename?: string, originalName?: string, size?: number, error?: string }
|
||||
*/
|
||||
export const uploadMusic = async (file) => {
|
||||
try {
|
||||
const formData = new FormData();
|
||||
formData.append('music', file);
|
||||
|
||||
const response = await fetch('/api/music', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (response.ok) {
|
||||
return result;
|
||||
} else {
|
||||
throw new Error(result.error || '音乐上传失败');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('上传音乐失败:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除音乐
|
||||
* @param {string} filename 文件名
|
||||
* @returns {Object} 删除结果 { success: boolean, error?: string }
|
||||
*/
|
||||
export const deleteMusic = async (filename) => {
|
||||
try {
|
||||
const response = await fetch(`/api/music/${filename}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (response.ok) {
|
||||
return result;
|
||||
} else {
|
||||
throw new Error(result.error || '音乐删除失败');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('删除音乐失败:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取音乐文件列表
|
||||
* @returns {Object} 列表结果 { success: boolean, files?: Array, error?: string }
|
||||
*/
|
||||
export const getMusicList = async () => {
|
||||
try {
|
||||
const response = await fetch('/api/music');
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (response.ok) {
|
||||
return result;
|
||||
} else {
|
||||
throw new Error(result.error || '获取音乐列表失败');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取音乐列表失败:', error);
|
||||
return { success: false, error: error.message };
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user