Added dependencies information to generated ini/txt
This commit is contained in:
parent
c030def3f5
commit
bd5c8e7872
3 changed files with 39 additions and 13 deletions
|
@ -1,4 +1,7 @@
|
|||
# Changelog
|
||||
## Oct 16, 2023
|
||||
Added dependencies information to generated ini/txt
|
||||
|
||||
## Jul 15, 2023
|
||||
### Fixed the bug that background color cannot be changed in 'Controller Input Display'
|
||||
### Ported 'FastForward', 'InstantRestart', 'SpawnYoshi', 'StageIntroSkip' to all versions
|
||||
|
|
|
@ -114,7 +114,7 @@ export default {
|
|||
const selectedCodes = this.availableCodes.filter((c) => c.selected);
|
||||
// add 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
|
||||
this.onSelectionChanged(selectedCodes);
|
||||
},
|
||||
|
|
|
@ -35,7 +35,39 @@ export default {
|
|||
if ((!this.codes || !this.codes.length) && !this.stageLoaderCode) {
|
||||
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)
|
||||
codeList.push({
|
||||
|
@ -62,12 +94,6 @@ export default {
|
|||
]);
|
||||
} 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;
|
||||
|
||||
// apply customizable codes
|
||||
|
@ -127,10 +153,7 @@ export default {
|
|||
let data = 'Paste the following on top of your games .ini file:\r\n[Gecko]';
|
||||
|
||||
codes.forEach((code) => {
|
||||
const codeTitle =
|
||||
typeof code.title === 'string' ? code.title : translateCode(code, this.$lang).title;
|
||||
|
||||
data += `\r\n$${codeTitle} (${code.date}) [${code.author}]\r\n`;
|
||||
data += `\r\n$${code.title} (${code.date}) [${code.author}]\r\n`;
|
||||
data += code.source
|
||||
.match(/.{8}/g)
|
||||
.join(' ')
|
||||
|
@ -146,7 +169,7 @@ export default {
|
|||
const codeTitle =
|
||||
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
|
||||
.match(/.{8}/g)
|
||||
.join(' ')
|
||||
|
|
Loading…
Reference in a new issue