Added dependencies information to generated ini/txt

This commit is contained in:
sup39 2023-10-16 16:47:26 +09:00
parent c030def3f5
commit bd5c8e7872
No known key found for this signature in database
GPG key ID: 14D2E0D21140D260
3 changed files with 39 additions and 13 deletions

View file

@ -1,4 +1,7 @@
# Changelog # Changelog
## Oct 16, 2023
Added dependencies information to generated ini/txt
## Jul 15, 2023 ## Jul 15, 2023
### Fixed the bug that background color cannot be changed in 'Controller Input Display' ### Fixed the bug that background color cannot be changed in 'Controller Input Display'
### Ported 'FastForward', 'InstantRestart', 'SpawnYoshi', 'StageIntroSkip' to all versions ### Ported 'FastForward', 'InstantRestart', 'SpawnYoshi', 'StageIntroSkip' to all versions

View file

@ -114,7 +114,7 @@ export default {
const selectedCodes = this.availableCodes.filter((c) => c.selected); const selectedCodes = this.availableCodes.filter((c) => c.selected);
// add dependencies // add dependencies
const deps = new Set(selectedCodes.flatMap(c => c.dependencies)); const deps = new Set(selectedCodes.flatMap(c => c.dependencies));
selectedCodes.push(...this.codes.filter(c => deps.has(c.id))); selectedCodes.push(...this.availableCodes.filter(c => !c.selected && deps.has(c.id)));
// emit // emit
this.onSelectionChanged(selectedCodes); this.onSelectionChanged(selectedCodes);
}, },

View file

@ -35,7 +35,39 @@ export default {
if ((!this.codes || !this.codes.length) && !this.stageLoaderCode) { if ((!this.codes || !this.codes.length) && !this.stageLoaderCode) {
return; return;
} }
const codeList = this.codes.map((c) => ({ ...c }));
const codeList = this.codes.map((c) => ({
...c,
// for recording previous downloaded code
titleEN: c.title.find(o => o.lang === 'en-US').content,
// for generated txt, ini
title: translateCode(c, this.$lang).title,
}));
// add dependencies information to title
const id2code = Object.fromEntries(codeList.map(c => [c.id, c]));
const depBys = {};
/* depends on */
for (const c of codeList) {
if (c.dependencies.length) {
c.dependencies.forEach(id => {
depBys[id] ??= [];
depBys[id].push(c.title);
});
const depList = c.dependencies.map(id => id2code[id].title).join(', ');
c.title += ` **(REQUIRES: ${depList})**`;
}
}
/* used by */
for (const [id, depBy] of Object.entries(depBys)) {
id2code[id].title += ` (Used by: ${depBy.join(', ')})`;
}
// save downloaded code list
try {
const codeTitles = codeList.map(c => c.titleEN);
localStorage.setItem(lskeyLDC, JSON.stringify(codeTitles));
} catch {}
if (this.stageLoaderCode) if (this.stageLoaderCode)
codeList.push({ codeList.push({
@ -62,12 +94,6 @@ export default {
]); ]);
} catch {} } catch {}
// save download code list
try {
const codeTitles = codeList.map(c => c.title.find(o => o.lang === 'en-US').content);
localStorage.setItem(lskeyLDC, JSON.stringify(codeTitles));
} catch {}
const fileName = gameVersions.find((v) => v.identifier === this.versionIdentifier).version; const fileName = gameVersions.find((v) => v.identifier === this.versionIdentifier).version;
// apply customizable codes // apply customizable codes
@ -127,10 +153,7 @@ export default {
let data = 'Paste the following on top of your games .ini file:\r\n[Gecko]'; let data = 'Paste the following on top of your games .ini file:\r\n[Gecko]';
codes.forEach((code) => { codes.forEach((code) => {
const codeTitle = data += `\r\n$${code.title} (${code.date}) [${code.author}]\r\n`;
typeof code.title === 'string' ? code.title : translateCode(code, this.$lang).title;
data += `\r\n$${codeTitle} (${code.date}) [${code.author}]\r\n`;
data += code.source data += code.source
.match(/.{8}/g) .match(/.{8}/g)
.join(' ') .join(' ')
@ -146,7 +169,7 @@ export default {
const codeTitle = const codeTitle =
typeof code.title === 'string' ? code.title : translateCode(code, this.$lang).title; typeof code.title === 'string' ? code.title : translateCode(code, this.$lang).title;
data += `\r\n\r\n${codeTitle} (${code.date}) [${code.author}]\r\n`; data += `\r\n\r\n${code.title} (${code.date}) [${code.author}]\r\n`;
data += code.source data += code.source
.match(/.{8}/g) .match(/.{8}/g)
.join(' ') .join(' ')