From b4d7857c6811e20d8e66ab9a6bc245be817bb698 Mon Sep 17 00:00:00 2001 From: vvo <> Date: Fri, 21 Oct 2022 20:13:02 +0800 Subject: [PATCH 1/2] added valgene_item resource copy --- sdvx@asphyxia/utils.ts | 22 +++++++++++++++++++ .../webui/asset/js/updateResources.js | 8 +++++++ 2 files changed, 30 insertions(+) diff --git a/sdvx@asphyxia/utils.ts b/sdvx@asphyxia/utils.ts index 0b3d46a..4711c8c 100644 --- a/sdvx@asphyxia/utils.ts +++ b/sdvx@asphyxia/utils.ts @@ -43,6 +43,7 @@ export const copyResourcesFromGame = async (data: {}) => { let newSubBGData = [] let newBGMData = [] let newChatStampData = [] + let newValgeneItemFiles = [] let runErrors = [] let resourceJsonData = JSON.parse(U.DecodeString(await IO.ReadFile('webui/asset/json/data.json'), 'utf8')) @@ -285,6 +286,26 @@ export const copyResourcesFromGame = async (data: {}) => { runErrors.push('[chat_stamp] Error reading chat stamp directory. Check your "Exceed Gear Data Directory" config.') } + // Copying new valgene_item files from gamedata + console.log("Copying new valgene_item files from gamedata") + if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/valgene_item")) { + let valgeneItemFiles = await IO.ReadDir(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/valgene_item") + for await (const valgeneItem of valgeneItemFiles) { + if (valgeneItem.name.substring(valgeneItem.name.length-4, valgeneItem.name.length).match(/(\.png|\.jpg)/g)) { + let fileToWrite = await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/valgene_item/" + valgeneItem.name) + if(!IO.Exists('webui/asset/valgene_item/' + valgeneItem.name.substring(0, (valgeneItem.name.length - 4)) + ".png") && !IO.Exists('webui/asset/valgene_item/' + valgeneItem.name.substring(0, (valgeneItem.name.length - 4)) + ".jpg")) { + IO.WriteFile('webui/asset/valgene_item/' + valgeneItem.name, fileToWrite) + newValgeneItemFiles.push(valgeneItem.name) + } else { + console.log(valgeneItem.name + " exists") + } + } + } + } else { + console.log('Error reading valgene_item directory. Check your "Exceed Gear Data Directory" config.') + runErrors.push('[valgene_item] Error reading valgene_item directory. Check your "Exceed Gear Data Directory" config.') + } + await IO.WriteFile('webui/asset/json/data.json', JSON.stringify(resourceJsonData)) await IO.WriteFile('webui/asset/logs/copyResourcesFromGame.json', JSON.stringify({ nemsys: newNemsysData, @@ -292,6 +313,7 @@ export const copyResourcesFromGame = async (data: {}) => { subbg: newSubBGData, bgm: newBGMData, chatStamp: newChatStampData, + valgeneItemFiles: newValgeneItemFiles, versionSongs: newVersionSongs.sort((a, b) => a[0] - b[0]), jsonSongs: newJsonSongs.sort((a, b) => a[0] - b[0]), xcdSongs: newXCDSongs.sort((a, b) => a[0] - b[0]), diff --git a/sdvx@asphyxia/webui/asset/js/updateResources.js b/sdvx@asphyxia/webui/asset/js/updateResources.js index d9440d2..c0738ad 100644 --- a/sdvx@asphyxia/webui/asset/js/updateResources.js +++ b/sdvx@asphyxia/webui/asset/js/updateResources.js @@ -90,6 +90,14 @@ $(document).ready(async function() { }) document.getElementById("logtextarea").textContent += '\n\n' } + + if(data['valgeneItemFiles'].length > 0) { + document.getElementById("logtextarea").textContent += 'New valgene_item files: \n' + $.each(data['valgeneItemFiles'], function(key, val) { + document.getElementById("logtextarea").textContent += "- " + val + '\n' + }) + document.getElementById("logtextarea").textContent += '\n\n' + } }) }, function(error){ From 9305e17194c2749947bf12233be95f7a47876440 Mon Sep 17 00:00:00 2001 From: vvo <> Date: Fri, 21 Oct 2022 23:56:08 +0800 Subject: [PATCH 2/2] [resource update] apcard, akaname and chat_stamp support --- sdvx@asphyxia/utils.ts | 121 +++++++++--------- .../webui/asset/js/updateResources.js | 9 ++ 2 files changed, 70 insertions(+), 60 deletions(-) diff --git a/sdvx@asphyxia/utils.ts b/sdvx@asphyxia/utils.ts index 4711c8c..8c47f85 100644 --- a/sdvx@asphyxia/utils.ts +++ b/sdvx@asphyxia/utils.ts @@ -44,8 +44,10 @@ export const copyResourcesFromGame = async (data: {}) => { let newBGMData = [] let newChatStampData = [] let newValgeneItemFiles = [] + let newAkanames = [] let runErrors = [] let resourceJsonData = JSON.parse(U.DecodeString(await IO.ReadFile('webui/asset/json/data.json'), 'utf8')) + let apCardJsonData = JSON.parse(U.DecodeString(await IO.ReadFile('webui/asset/json/appeal.json'), 'utf8')) // Get new music data from music_db.xml console.log('Getting new music_db info') @@ -170,31 +172,6 @@ export const copyResourcesFromGame = async (data: {}) => { runErrors.push('[nemsys] Error reading nemsys directory. Check your "Exceed Gear Data Directory" config.') } - // Copying new appeal card files from gamedata (disabled for now) - // console.log("Copying new appeal card files from gamedata") - // if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/ap_card")) { - // let apCardFiles = await IO.ReadDir(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/ap_card") - // for await (const apCard of apCardFiles) { - // let fileToWrite = await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/ap_card/" + apCard.name) - // if(!IO.Exists('webui/asset/ap_card/' + apCard.name.substring(0, (apCard.name.length - 4)) + ".png") && !IO.Exists('webui/asset/ap_card/' + apCard.name.substring(0, (apCard.name.length - 4)) + ".jpg")) { - // IO.WriteFile('webui/asset/ap_card/' + apCard.name, fileToWrite) - // newAPCardData.push(apCard.name) - // } else { - // console.log(apCard.name + " exists") - // } - // } - - // // Appeal card data registration to data.json not properly implemented yet, I don't quite understand how their IDs work yet - // newAPCardData.forEach(fileName => { - // if(parseInt(fileName.substring(6, 10))) { - // resourceJsonData.apCard.push({"value": parseInt(fileName.substring(6, 10)), "name": fileName + " (please rename)"}) - // } - // }) - // } else { - // console.log('Error reading appeal card directory. Check your "Exceed Gear Data Directory" config.') - // runErrors.push('[appeal_card] Error reading appeal card directory. Check your "Exceed Gear Data Directory" config.') - // } - // Copying new subbg files from gamedata console.log("Copying new subbg files from gamedata") if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/submonitor_bg")) { @@ -251,41 +228,6 @@ export const copyResourcesFromGame = async (data: {}) => { runErrors.push('[BGM] Error reading BGM directory. Check your "Exceed Gear Data Directory" config.') } - // Copying new chat_stamp files from gamedata - console.log("Copying new chat stamp files from gamedata") - if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/chat_stamp")) { - let chat_stamps_folders = await IO.ReadDir(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/chat_stamp") - for(const chat_stamp_folder of chat_stamps_folders) { - let folderName = chat_stamp_folder.name.match(/stamp_([0-9]*)/g)[0] - if(folderName != '') { - if(!IO.Exists('webui/asset/chat_stamp/' + folderName)) { - let chat_stamps = await IO.ReadDir(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/chat_stamp/" + folderName) - for(const chat_stamp_ind in chat_stamps) { - let fileToWrite = await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/chat_stamp/" + folderName + '/' + chat_stamps[chat_stamp_ind].name) - IO.WriteFile('webui/asset/chat_stamp/' + folderName + '/' + chat_stamps[chat_stamp_ind].name, fileToWrite) - newChatStampData.push(chat_stamps[chat_stamp_ind].name) - } - } else { - console.log(folderName + " exists") - } - } - } - - let stampIDCtr = 3; - newChatStampData.forEach(fileName => { - let stampId = fileName.match(/(?<=(stamp)_)([0-9]*)/g)[0] - if(parseInt(stampId)) { - let realStampID = (parseInt(stampId) * 4) - stampIDCtr; - resourceJsonData.stamp.push({"value": realStampID, "name": fileName + " (please rename)"}) - } - if(stampIDCtr == 0) stampIDCtr = 3; - else stampIDCtr--; - }) - } else { - console.log('Error reading chat stamp directory. Check your "Exceed Gear Data Directory" config.') - runErrors.push('[chat_stamp] Error reading chat stamp directory. Check your "Exceed Gear Data Directory" config.') - } - // Copying new valgene_item files from gamedata console.log("Copying new valgene_item files from gamedata") if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/valgene_item")) { @@ -306,8 +248,67 @@ export const copyResourcesFromGame = async (data: {}) => { runErrors.push('[valgene_item] Error reading valgene_item directory. Check your "Exceed Gear Data Directory" config.') } + // Copying new akanames from gamedata + console.log("Copying new akanames from gamedata") + if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/others/akaname_parts.xml")) { + let akanameData = U.parseXML(U.DecodeString(await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/others/akaname_parts.xml"), "shift_jis"), false) + for(const akaname of akanameData.akaname_parts.part) { + if(resourceJsonData.akaname.find(aka => aka.value === akaname['@attr'].id) == undefined) { + resourceJsonData.akaname.push({"value": akaname['@attr'].id, "name": akaname.word['@content'] != undefined ? akaname.word['@content'] : '' }) + newAkanames.push(akaname['@attr'].id + ": " + akaname.word['@content']) + } + } + resourceJsonData.akaname.sort(function(a, b){return parseInt(a.value) - parseInt(b.value)}) + } else { + console.log('Error reading akaname xml file. Check your "Exceed Gear Data Directory" config.') + runErrors.push('[akaname] Error reading akaname xml file. Check your "Exceed Gear Data Directory" config.') + } + + // Copying new appeal card data from gamedata + console.log("Copying new appeal card data from gamedata") + if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/others/appeal_card.xml")) { + let apCardData = U.parseXML(U.DecodeString(await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/others/appeal_card.xml"), "shift_jis"), false) + for(const apCard of apCardData.appeal_card_data.card) { + if(apCardJsonData.appeal_card_data.card.find(ap => ap['@id'] === apCard['@attr'].id) == undefined) { + apCardJsonData.appeal_card_data.card.push({"@id": apCard['@attr'].id, "info": {"texture": apCard.info['texture']['@content'], "title": apCard.info['title']['@content']}}) + newAPCardData.push(apCard['@attr'].id + ": " + apCard.info['texture']['@content'] + "(" + apCard.info['title']['@content'] + ")") + } + if(!IO.Exists('webui/asset/ap_card/' + apCard.info['texture']['@content'] + '.png') && !IO.Exists('webui/asset/ap_card/' + apCard.info['texture']['@content'] + '.jpg')) { + let fileToWrite = await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/ap_card/" + apCard.info['texture']['@content'] + ".png") + IO.WriteFile('webui/asset/ap_card/' + apCard.info['texture']['@content'] + '.png', fileToWrite) + } + } + apCardJsonData.appeal_card_data.card.sort(function(a, b){return parseInt(a['@id']) - parseInt(b['@id'])}) + } else { + console.log('Error reading appeal card xml file. Check your "Exceed Gear Data Directory" config.') + runErrors.push('[appeal card] Error reading appeal card xml file. Check your "Exceed Gear Data Directory" config.') + } + + // Copying new chat stamps from gamedata + console.log("Copying new chat stamps from gamedata") + if(IO.Exists(U.GetConfig('sdvx_eg_root_dir') + "/data/others/chat_stamp.xml")) { + let chatStampData = U.parseXML(U.DecodeString(await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/others/chat_stamp.xml"), "shift_jis"), false) + // console.log(JSON.stringify(chatStampData.chat_stamp_data)) + for(const chatStamp of chatStampData.chat_stamp_data.info) { + if(resourceJsonData.stamp.find(stamp => stamp['value'] === chatStamp.id['@content'][0]) == undefined) { + resourceJsonData.stamp.push({"value": chatStamp.id['@content'][0], "name": chatStamp.filename['@content']}) + newChatStampData.push(chatStamp.id['@content'][0] + ": " + chatStamp.filename['@content']) + } + if(!IO.Exists('webui/asset/chat_stamp/' + chatStamp.filename['@content'] + '.png') && !IO.Exists('webui/asset/chat_stamp/' + chatStamp.filename['@content'] + '.png')) { + let fileToWrite = await IO.ReadFile(U.GetConfig('sdvx_eg_root_dir') + "/data/graphics/chat_stamp/" + chatStamp.filename['@content'] + ".png") + IO.WriteFile('webui/asset/chat_stamp/' + chatStamp.filename['@content'] + '.png', fileToWrite) + } + } + resourceJsonData.stamp.sort(function(a, b){return a.value - b.value}) + } else { + console.log('Error reading chat stamp xml file. Check your "Exceed Gear Data Directory" config.') + runErrors.push('[chat stamp] Error reading chat stamp xml file. Check your "Exceed Gear Data Directory" config.') + } + await IO.WriteFile('webui/asset/json/data.json', JSON.stringify(resourceJsonData)) + await IO.WriteFile('webui/asset/json/appeal.json', JSON.stringify(apCardJsonData)) await IO.WriteFile('webui/asset/logs/copyResourcesFromGame.json', JSON.stringify({ + akaname: newAkanames, nemsys: newNemsysData, apCard: newAPCardData, subbg: newSubBGData, diff --git a/sdvx@asphyxia/webui/asset/js/updateResources.js b/sdvx@asphyxia/webui/asset/js/updateResources.js index c0738ad..0c32d65 100644 --- a/sdvx@asphyxia/webui/asset/js/updateResources.js +++ b/sdvx@asphyxia/webui/asset/js/updateResources.js @@ -98,6 +98,15 @@ $(document).ready(async function() { }) document.getElementById("logtextarea").textContent += '\n\n' } + + // console.log(JSON.stringify(data)) + if(data['akaname'].length > 0) { + document.getElementById("logtextarea").textContent += 'New akanames: \n' + $.each(data['akaname'], function(key, val) { + document.getElementById("logtextarea").textContent += "- " + val + '\n' + }) + document.getElementById("logtextarea").textContent += '\n\n' + } }) }, function(error){