mirror of
https://github.com/an-anime-team/an-anime-game-launcher.git
synced 2024-12-19 16:33:04 +03:00
Improved Genshinlib.getConfig function
now it can take argument that describes the path to the value you want to get for example: Genshinlib.getConfig('lang.voice')
This commit is contained in:
parent
36470e1403
commit
9a309d8214
4 changed files with 48 additions and 40 deletions
|
@ -35,7 +35,7 @@ $(() => {
|
||||||
LauncherUI.updateSocial();
|
LauncherUI.updateSocial();
|
||||||
});
|
});
|
||||||
|
|
||||||
if (Genshinlib.getConfig().rpc)
|
if (Genshinlib.getConfig('rpc'))
|
||||||
DiscordRPC.init();
|
DiscordRPC.init();
|
||||||
|
|
||||||
ipcRenderer.on('rpc-toggle', () => {
|
ipcRenderer.on('rpc-toggle', () => {
|
||||||
|
@ -102,7 +102,7 @@ $(() => {
|
||||||
LauncherUI.setState(Genshinlib.version === null ? 'game-installation-available' : 'game-update-available');
|
LauncherUI.setState(Genshinlib.version === null ? 'game-installation-available' : 'game-update-available');
|
||||||
|
|
||||||
// Patch version is incorrect
|
// Patch version is incorrect
|
||||||
else if (Genshinlib.getConfig().patch && Genshinlib.getConfig().patch.version != Genshinlib.getPatchInfo().version)
|
else if (Genshinlib.getConfig('patch') && Genshinlib.getConfig('patch.version') != Genshinlib.getPatchInfo().version)
|
||||||
{
|
{
|
||||||
// Patch is not available
|
// Patch is not available
|
||||||
if (Genshinlib.getPatchInfo().version !== data.game.latest.version)
|
if (Genshinlib.getPatchInfo().version !== data.game.latest.version)
|
||||||
|
@ -130,7 +130,7 @@ $(() => {
|
||||||
|
|
||||||
// Current patch is in testing phase,
|
// Current patch is in testing phase,
|
||||||
// but stable is available
|
// but stable is available
|
||||||
else if (Genshinlib.getConfig().patch && Genshinlib.getConfig().patch.version == Genshinlib.getPatchInfo().version && Genshinlib.getConfig().patch.state == 'testing' && Genshinlib.getPatchInfo().state == 'stable')
|
else if (Genshinlib.getConfig('patch') && Genshinlib.getConfig('patch.version') == Genshinlib.getPatchInfo().version && Genshinlib.getConfig('patch.state') == 'testing' && Genshinlib.getPatchInfo().state == 'stable')
|
||||||
{
|
{
|
||||||
console.log(`%c> Applying patch...`, 'font-size: 16px');
|
console.log(`%c> Applying patch...`, 'font-size: 16px');
|
||||||
|
|
||||||
|
@ -185,12 +185,12 @@ $(() => {
|
||||||
{
|
{
|
||||||
let wineExeutable = 'wine';
|
let wineExeutable = 'wine';
|
||||||
|
|
||||||
if (Genshinlib.getConfig().runner !== null)
|
if (Genshinlib.getConfig('runner') !== null)
|
||||||
{
|
{
|
||||||
wineExeutable = path.join(
|
wineExeutable = path.join(
|
||||||
Genshinlib.runnersDir,
|
Genshinlib.runnersDir,
|
||||||
Genshinlib.getConfig().runner?.folder,
|
Genshinlib.getConfig('runner.folder'),
|
||||||
Genshinlib.getConfig().runner?.executable
|
Genshinlib.getConfig('runner.executable')
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!fs.existsSync(wineExeutable))
|
if (!fs.existsSync(wineExeutable))
|
||||||
|
|
|
@ -72,12 +72,12 @@ export class Genshinlib
|
||||||
|
|
||||||
public static get version(): Config['version']
|
public static get version(): Config['version']
|
||||||
{
|
{
|
||||||
return this.getConfig().version;
|
return this.getConfig('version');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static get lang(): Config['lang']
|
public static get lang(): Config['lang']
|
||||||
{
|
{
|
||||||
return this.getConfig().lang;
|
return this.getConfig('lang');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getRunners (): Promise<[{ title: string, runners: Runner[] }]>
|
public static getRunners (): Promise<[{ title: string, runners: Runner[] }]>
|
||||||
|
@ -102,7 +102,7 @@ export class Genshinlib
|
||||||
// return new Promise(resolve => resolve(JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'dxvks.json')))));
|
// return new Promise(resolve => resolve(JSON.parse(fs.readFileSync(path.join(__dirname, '..', '..', 'dxvks.json')))));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getConfig (): Config
|
public static getConfig (property: string|null = null, splitProperty: boolean = true): any
|
||||||
{
|
{
|
||||||
if (!fs.existsSync(this.launcherJson))
|
if (!fs.existsSync(this.launcherJson))
|
||||||
fs.writeFileSync(this.launcherJson, JSON.stringify({
|
fs.writeFileSync(this.launcherJson, JSON.stringify({
|
||||||
|
@ -120,7 +120,20 @@ export class Genshinlib
|
||||||
rpc: false
|
rpc: false
|
||||||
}, null, 4));
|
}, null, 4));
|
||||||
|
|
||||||
return JSON.parse(fs.readFileSync(this.launcherJson));
|
let config = JSON.parse(fs.readFileSync(this.launcherJson));
|
||||||
|
|
||||||
|
if (property === null)
|
||||||
|
return config;
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!splitProperty)
|
||||||
|
return config[property];
|
||||||
|
|
||||||
|
property.split('.').forEach(prop => config = config[prop]);
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static setConfig (info: Config): Genshinlib
|
public static setConfig (info: Config): Genshinlib
|
||||||
|
@ -159,12 +172,12 @@ export class Genshinlib
|
||||||
{
|
{
|
||||||
let background = '';
|
let background = '';
|
||||||
|
|
||||||
if (!this.getConfig().background.time || new Date(new Date().setHours(0,0,0,0)).setDate(new Date(new Date().setHours(0,0,0,0)).getDate()).toString() >= this.getConfig().background.time!)
|
if (!this.getConfig('background.time') || new Date(new Date().setHours(0,0,0,0)).setDate(new Date(new Date().setHours(0,0,0,0)).getDate()).toString() >= this.getConfig('background.time')!)
|
||||||
{
|
{
|
||||||
await fetch(this.backgroundUri + this.lang.launcher)
|
await fetch(this.backgroundUri + this.lang.launcher)
|
||||||
.then(res => res.json())
|
.then(res => res.json())
|
||||||
.then(async resdone => {
|
.then(async resdone => {
|
||||||
let prevBackground = this.getConfig().background.file;
|
let prevBackground = this.getConfig('background.file');
|
||||||
|
|
||||||
this.updateConfig({
|
this.updateConfig({
|
||||||
background: {
|
background: {
|
||||||
|
@ -173,23 +186,23 @@ export class Genshinlib
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (fs.existsSync(path.join(this.launcherDir, this.getConfig().background.file)))
|
if (fs.existsSync(path.join(this.launcherDir, this.getConfig('background.file'))))
|
||||||
background = path.join(this.launcherDir, this.getConfig().background.file);
|
background = path.join(this.launcherDir, this.getConfig('background.file'));
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await Tools.downloadFile(resdone.data.adv.background, path.join(this.launcherDir, this.getConfig().background.file), (current: number, total: number, difference: number) => null).then(() => {
|
await Tools.downloadFile(resdone.data.adv.background, path.join(this.launcherDir, this.getConfig('background.file')), (current: number, total: number, difference: number) => null).then(() => {
|
||||||
!prevBackground ?
|
!prevBackground ?
|
||||||
console.log('No old background found') :
|
console.log('No old background found') :
|
||||||
fs.unlinkSync(path.join(this.launcherDir, prevBackground));
|
fs.unlinkSync(path.join(this.launcherDir, prevBackground));
|
||||||
|
|
||||||
background = path.join(this.launcherDir, this.getConfig().background.file);
|
background = path.join(this.launcherDir, this.getConfig('background.file'));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
else background = path.join(this.launcherDir, this.getConfig().background.file);
|
else background = path.join(this.launcherDir, this.getConfig('background.file'));
|
||||||
|
|
||||||
return background;
|
return background;
|
||||||
}
|
}
|
||||||
|
@ -253,13 +266,13 @@ export class Genshinlib
|
||||||
let installationProgress = 0;
|
let installationProgress = 0;
|
||||||
let installerProcess;
|
let installerProcess;
|
||||||
|
|
||||||
if (this.getConfig().runner)
|
if (this.getConfig('runner'))
|
||||||
{
|
{
|
||||||
installerProcess = spawn('winetricks', ['corefonts', 'usetakefocus=n', 'dxvk191'], {
|
installerProcess = spawn('winetricks', ['corefonts', 'usetakefocus=n', 'dxvk191'], {
|
||||||
env: {
|
env: {
|
||||||
...process.env,
|
...process.env,
|
||||||
WINEPREFIX: prefixpath,
|
WINEPREFIX: prefixpath,
|
||||||
WINE: path.join(this.runnersDir, this.getConfig().runner?.folder, this.getConfig().runner?.executable)
|
WINE: path.join(this.runnersDir, this.getConfig('runner.folder'), this.getConfig('runner.executable'))
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,14 +159,14 @@ export class LauncherUI
|
||||||
public static updateSocial (): void
|
public static updateSocial (): void
|
||||||
{
|
{
|
||||||
fetch(`https://genshin.mihoyo.com/launcher/10/${Genshinlib.lang.launcher}?api_url=https%3A%2F%2Fapi-os-takumi.mihoyo.com%2Fhk4e_global&prev=false`)
|
fetch(`https://genshin.mihoyo.com/launcher/10/${Genshinlib.lang.launcher}?api_url=https%3A%2F%2Fapi-os-takumi.mihoyo.com%2Fhk4e_global&prev=false`)
|
||||||
.then(res => res.text())
|
.then(res => res.text())
|
||||||
.then(body => {
|
.then(body => {
|
||||||
$('#__layout').remove();
|
$('#__layout').remove();
|
||||||
$(body).find('#__layout').appendTo('#launchcontent');
|
$(body).find('#__layout').appendTo('#launchcontent');
|
||||||
|
|
||||||
$('#launchcontent .home__main .home-swiper-wrap').remove();
|
$('#launchcontent .home__main .home-swiper-wrap').remove();
|
||||||
$('#launchcontent .home__main .home-news').remove();
|
$('#launchcontent .home__main .home-news').remove();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static updateLang (lang: string|null = null): void
|
public static updateLang (lang: string|null = null): void
|
||||||
|
|
|
@ -33,7 +33,7 @@ $(() => {
|
||||||
$(`#voice-list option[value="${Genshinlib.lang.voice}"]`).prop('selected', true);
|
$(`#voice-list option[value="${Genshinlib.lang.voice}"]`).prop('selected', true);
|
||||||
$(`#language-list option[value="${Genshinlib.lang.launcher}"]`).prop('selected', true);
|
$(`#language-list option[value="${Genshinlib.lang.launcher}"]`).prop('selected', true);
|
||||||
|
|
||||||
if (Genshinlib.getConfig().rpc)
|
if (Genshinlib.getConfig('rpc'))
|
||||||
$('#drpc').prop('checked', true);
|
$('#drpc').prop('checked', true);
|
||||||
|
|
||||||
$('#drpc').on('change', () => {
|
$('#drpc').on('change', () => {
|
||||||
|
@ -74,32 +74,27 @@ $(() => {
|
||||||
lang: {
|
lang: {
|
||||||
launcher: e.target.value,
|
launcher: e.target.value,
|
||||||
voice: Genshinlib.lang.voice
|
voice: Genshinlib.lang.voice
|
||||||
}
|
},
|
||||||
});
|
|
||||||
|
|
||||||
// This is required as the file name changes on the API but since we don't call the API before checking
|
// This is required as the file name changes on the API but since we don't call the API before checking
|
||||||
// if the time is null or expired we set time to null here.
|
// if the time is null or expired we set time to null here.
|
||||||
Genshinlib.updateConfig({
|
|
||||||
background: {
|
background: {
|
||||||
time: null,
|
time: null,
|
||||||
file: Genshinlib.getConfig().background.file
|
file: Genshinlib.getConfig('background.file')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Send language updates
|
|
||||||
LauncherUI.updateLang(e.target.value);
|
LauncherUI.updateLang(e.target.value);
|
||||||
ipcRenderer.send('change-lang', { 'lang': e.target.value });
|
|
||||||
|
|
||||||
/*$('*[i18id]').each((i, element) => {
|
// Send language updates
|
||||||
element.innerText = i18n.translate(element.getAttribute('i18id')?.toString()!);
|
ipcRenderer.send('change-lang', { 'lang': e.target.value });
|
||||||
});*/
|
|
||||||
|
|
||||||
$(`#language-list option[value="${activeLang}"]`).removeProp('selected');
|
$(`#language-list option[value="${activeLang}"]`).removeProp('selected');
|
||||||
$(`#language-list option[value="${e.target.value}"]`).prop('selected', true);
|
$(`#language-list option[value="${e.target.value}"]`).prop('selected', true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let activeRunner = Genshinlib.getConfig().runner;
|
let activeRunner = Genshinlib.getConfig('runner');
|
||||||
|
|
||||||
Genshinlib.getRunners().then(runners => {
|
Genshinlib.getRunners().then(runners => {
|
||||||
runners.forEach(category => {
|
runners.forEach(category => {
|
||||||
|
@ -173,7 +168,7 @@ $(() => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
let activeDXVK = Genshinlib.getConfig().dxvk;
|
let activeDXVK = Genshinlib.getConfig('dxvk');
|
||||||
|
|
||||||
Genshinlib.getDXVKs().then(dxvks => {
|
Genshinlib.getDXVKs().then(dxvks => {
|
||||||
dxvks.forEach(dxvk => {
|
dxvks.forEach(dxvk => {
|
||||||
|
|
Loading…
Reference in a new issue