feat: properly handle form_x type background

This commit is contained in:
Haoyu Xu
2025-11-15 21:17:07 +08:00
parent 610df3df0d
commit 14509596a1
5 changed files with 296 additions and 44 deletions

View File

@@ -1 +1 @@
[{"id":"bg_rhodes_day","intro":"Audio/Sound_Beta_2/Music/beta1_180603/m_sys_void_intro","loop":"Audio/Sound_Beta_2/Music/beta1_180603/m_sys_void_loop"},{"id":"bg_rhodes_night","intro":"Audio/Sound_Beta_2/Music/beta2_180603/m_sys_tech_intro","loop":"Audio/Sound_Beta_2/Music/beta2_180603/m_sys_tech_loop"},{"id":"bg_main_victoria_1","intro":"Audio/Sound_Beta_2/Music/AVG/m_avg_ghosthunter_intro","loop":"Audio/Sound_Beta_2/Music/AVG/m_avg_ghosthunter_loop"},{"id":"bg_siesta_1","intro":"Audio/Sound_Beta_2/Music/obt/m_sys_ddd_intro","loop":"Audio/Sound_Beta_2/Music/obt/m_sys_ddd_loop"},{"id":"bg_kazimierz_1","intro":"Audio/Sound_Beta_2/Music/beta3_181101/m_dia_street_intro","loop":"Audio/Sound_Beta_2/Music/beta3_181101/m_dia_street_loop"},{"id":"bg_ursus_1","intro":"Audio/Sound_Beta_2/Music/static/m_avg/m_avg_loneliness_intro","loop":"Audio/Sound_Beta_2/Music/static/m_avg/m_avg_loneliness_loop"},{"id":"bg_yan_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act15side/m_sys_bitw_loop"},{"id":"bg_iberia_1","intro":"Audio/Sound_Beta_2/Music/act18d3d0/m_sys_act18d3d0_intro","loop":"Audio/Sound_Beta_2/Music/act18d3d0/m_sys_act18d3d0_loop"},{"id":"bg_anniversary_1","intro":"Audio/Sound_Beta_2/Music/beta2_180603/m_dia_nightoflongmen_intro","loop":"Audio/Sound_Beta_2/Music/beta2_180603/m_dia_nightoflongmen_loop"},{"id":"bg_rogue_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/rogue_1/m_avg_rglk1secretevent_loop"},{"id":"bg_rogue_2","intro":null,"loop":"Audio/Sound_Beta_2/Music/rogue_2/m_sys_rglk2DLC_loop"},{"id":"bg_laterano_1","intro":"Audio/Sound_Beta_2/Music/act16side/m_sys_act16side_intro","loop":"Audio/Sound_Beta_2/Music/act16side/m_sys_act16side_loop"},{"id":"bg_rhine_1","intro":"Audio/Sound_Beta_2/Music/act19side/m_sys_act19side_intro","loop":"Audio/Sound_Beta_2/Music/act19side/m_sys_act19side_loop"},{"id":"bg_kalts_1","intro":"Audio/Sound_Beta_2/Music/act18d0d0/m_sys_act18d0d0_intro","loop":"Audio/Sound_Beta_2/Music/act18d0d0/m_sys_act18d0d0_loop"},{"id":"bg_rogue_3","intro":"Audio/Sound_Beta_2/Music/rogue_3/m_bat_rglk3DLC_intro","loop":"Audio/Sound_Beta_2/Music/rogue_3/m_bat_rglk3DLC_loop"},{"id":"bg_rainbowsix_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act32side/m_act32side_sys_loop"},{"id":"bg_rhodes_flower_1","intro":"Audio/Sound_Beta_2/Music/act16mini/m_sys_act16mini_intro","loop":"Audio/Sound_Beta_2/Music/act16mini/m_sys_act16mini_loop"},{"id":"bg_sanrio_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act27side/m_avg_SiestaCity"},{"id":"bg_sandboxv2_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/sandbox_1/m_sys_sandbox_1_map_loop"},{"id":"bg_dungeon_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act36side/m_sys_act36side_loop"},{"id":"bg_sui_1","intro":"Audio/Sound_Beta_2/Music/act31side/m_act31side_sys_intro","loop":"Audio/Sound_Beta_2/Music/act31side/m_act31side_sys_loop"},{"id":"bg_rogue_4","intro":null,"loop":"Audio/Sound_Beta_2/Music/act17mini/m_sys_act17mini_loop"},{"id":"bg_volcano_1","intro":"Audio/Sound_Beta_2/Music/act27side/m_sys_act27side_night_intro","loop":"Audio/Sound_Beta_2/Music/act27side/m_sys_act27side_night_loop"},{"id":"bg_recalrune_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/recalrune/m_sys_recalrune_reward1_loop"},{"id":"bg_avemujica_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/avemujica/m_sys3_avemujica_loop"},{"id":"operator_bg","intro":"m_sys_void_intro","loop":"m_sys_void_loop"}]
[{"id":"bg_rhodes_day","intro":"Audio/Sound_Beta_2/Music/beta1_180603/m_sys_void_intro","loop":"Audio/Sound_Beta_2/Music/beta1_180603/m_sys_void_loop"},{"id":"bg_rhodes_night","intro":"Audio/Sound_Beta_2/Music/beta2_180603/m_sys_tech_intro","loop":"Audio/Sound_Beta_2/Music/beta2_180603/m_sys_tech_loop"},{"id":"bg_main_victoria_1","intro":"Audio/Sound_Beta_2/Music/AVG/m_avg_ghosthunter_intro","loop":"Audio/Sound_Beta_2/Music/AVG/m_avg_ghosthunter_loop"},{"id":"bg_siesta_1","intro":"Audio/Sound_Beta_2/Music/obt/m_sys_ddd_intro","loop":"Audio/Sound_Beta_2/Music/obt/m_sys_ddd_loop"},{"id":"bg_kazimierz_1","intro":"Audio/Sound_Beta_2/Music/beta3_181101/m_dia_street_intro","loop":"Audio/Sound_Beta_2/Music/beta3_181101/m_dia_street_loop"},{"id":"bg_ursus_1","intro":"Audio/Sound_Beta_2/Music/static/m_avg/m_avg_loneliness_intro","loop":"Audio/Sound_Beta_2/Music/static/m_avg/m_avg_loneliness_loop"},{"id":"bg_yan_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act15side/m_sys_bitw_loop"},{"id":"bg_iberia_1","intro":"Audio/Sound_Beta_2/Music/act18d3d0/m_sys_act18d3d0_intro","loop":"Audio/Sound_Beta_2/Music/act18d3d0/m_sys_act18d3d0_loop"},{"id":"bg_anniversary_1","intro":"Audio/Sound_Beta_2/Music/beta2_180603/m_dia_nightoflongmen_intro","loop":"Audio/Sound_Beta_2/Music/beta2_180603/m_dia_nightoflongmen_loop"},{"id":"bg_rogue_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/rogue_1/m_avg_rglk1secretevent_loop"},{"id":"bg_rogue_2","intro":null,"loop":"Audio/Sound_Beta_2/Music/rogue_2/m_sys_rglk2DLC_loop"},{"id":"bg_laterano_1","intro":"Audio/Sound_Beta_2/Music/act16side/m_sys_act16side_intro","loop":"Audio/Sound_Beta_2/Music/act16side/m_sys_act16side_loop"},{"id":"bg_rhine_1","intro":"Audio/Sound_Beta_2/Music/act19side/m_sys_act19side_intro","loop":"Audio/Sound_Beta_2/Music/act19side/m_sys_act19side_loop"},{"id":"bg_kalts_1","intro":"Audio/Sound_Beta_2/Music/act18d0d0/m_sys_act18d0d0_intro","loop":"Audio/Sound_Beta_2/Music/act18d0d0/m_sys_act18d0d0_loop"},{"id":"bg_rogue_3","intro":"Audio/Sound_Beta_2/Music/rogue_3/m_bat_rglk3DLC_intro","loop":"Audio/Sound_Beta_2/Music/rogue_3/m_bat_rglk3DLC_loop"},{"id":"bg_rainbowsix_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act32side/m_act32side_sys_loop"},{"id":"bg_rhodes_flower_1","intro":"Audio/Sound_Beta_2/Music/act16mini/m_sys_act16mini_intro","loop":"Audio/Sound_Beta_2/Music/act16mini/m_sys_act16mini_loop"},{"id":"bg_sanrio_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act27side/m_avg_SiestaCity"},{"id":"bg_sandboxv2_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/sandbox_1/m_sys_sandbox_1_map_loop"},{"id":"bg_dungeon_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/act36side/m_sys_act36side_loop"},{"id":"bg_sui_1","intro":"Audio/Sound_Beta_2/Music/act31side/m_act31side_sys_intro","loop":"Audio/Sound_Beta_2/Music/act31side/m_act31side_sys_loop"},{"id":"bg_rogue_4","intro":null,"loop":"Audio/Sound_Beta_2/Music/act17mini/m_sys_act17mini_loop"},{"id":"bg_volcano_1","intro":"Audio/Sound_Beta_2/Music/act27side/m_sys_act27side_night_intro","loop":"Audio/Sound_Beta_2/Music/act27side/m_sys_act27side_night_loop"},{"id":"bg_volcano_1_form_2","intro":null,"loop":"Audio/Sound_Beta_2/Music/act27side/m_sys_act27side_day_loop"},{"id":"bg_recalrune_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/recalrune/m_sys_recalrune_reward1_loop"},{"id":"bg_avemujica_1","intro":null,"loop":"Audio/Sound_Beta_2/Music/avemujica/m_sys3_avemujica_loop"},{"id":"operator_bg","intro":"m_sys_void_intro","loop":"m_sys_void_loop"}]

View File

@@ -56,8 +56,9 @@ const generateMapping = () => {
short: 'm',
},
})
if (mode === 'update') {
return
let noCheck = false
if (mode === 'update' || mode === 'download') {
noCheck = true
}
const musicFolder = DATA_DIR
const musicTableContent = file.readSync(MUSIC_TABLE_JSON)
@@ -95,39 +96,23 @@ const generateMapping = () => {
}
}
for (const e of musicFiles) {
const musicPath = path.join(e.source, e.filename)
if (!file.exists(musicPath)) {
throw new Error(
`Music file ${e.filename} is not found in music folder.`
)
}
}
if (!noCheck) {
for (const e of musicFiles) {
const musicPath = path.join(e.source, e.filename)
if (!file.exists(musicPath)) {
throw new Error(
`Music file ${e.filename} is not found in music folder.`
)
}
}
for (const e of Object.keys(musicFileMapping)) {
if (!backgroundFiles.includes(e)) {
throw new Error(
`Background file ${e} is not found in background folder.`
)
}
}
for (const background of backgroundFiles) {
if (!musicFileMapping[background]) {
const alternativeMatch = background.replace(
/_(form)(.*)(\.png)$/,
'$3'
)
if (musicFileMapping[alternativeMatch]) {
musicFileMapping[background] = structuredClone(
musicFileMapping[alternativeMatch]
)
} else {
throw new Error(
`Music mapping for background file ${background} is not found in music mapping.`
)
}
}
for (const e of Object.keys(musicFileMapping)) {
if (!backgroundFiles.includes(e)) {
throw new Error(
`Background file ${e} is not found in background folder.`
)
}
}
}
return {
@@ -145,12 +130,11 @@ export const update = async () => {
const musicBankAlias = audioDataTable.bankAlias
const musicData: MusicDataItem[] =
metaTable.homeBackgroundData.homeBgDataList.reduce((acc, cur) => {
if (cur.multiFormList.length > 1)
// TODO: support multiple backgrounds
console.warn(`${cur.bgId} has multiple musicIds`, cur.multiFormList)
acc.push({
id: cur.bgId,
musicId: cur.multiFormList[0].bgMusicId,
cur.multiFormList.forEach(item => {
acc.push({
id: item.multiFormBgId,
musicId: item.bgMusicId,
})
})
return acc
}, [] as MusicDataItem[])