2021-12-21 22:41:26 +03:00
|
|
|
declare const Neutralino;
|
2021-12-22 00:28:46 +03:00
|
|
|
declare const NL_PATH;
|
2021-12-21 22:41:26 +03:00
|
|
|
|
2021-12-21 19:58:33 +03:00
|
|
|
class Paths
|
2021-12-21 00:39:20 +03:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Directory where the launcher's executable stored
|
|
|
|
*/
|
|
|
|
public static readonly app: string = NL_PATH;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Shaders directory
|
|
|
|
*
|
2021-12-22 00:28:46 +03:00
|
|
|
* @defaultValue "[Constants.paths.app]/public/shaders"
|
2021-12-21 00:39:20 +03:00
|
|
|
*/
|
|
|
|
public static readonly shaders: string = `${this.app}/public/shaders`;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Launcher data directory
|
|
|
|
*
|
2021-12-22 00:28:46 +03:00
|
|
|
* @defaultValue "~/.local/share/anime-game-launcher"
|
2021-12-21 00:39:20 +03:00
|
|
|
*/
|
|
|
|
public static get launcher(): Promise<string>
|
|
|
|
{
|
|
|
|
return new Promise(async (resolve) => resolve(`${await Neutralino.os.getPath('data')}/anime-game-launcher`));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Runners directory
|
|
|
|
*
|
2021-12-22 00:28:46 +03:00
|
|
|
* @defaultValue "~/.local/share/anime-game-launcher/runners"
|
2021-12-21 00:39:20 +03:00
|
|
|
*/
|
|
|
|
public static get runners(): Promise<string>
|
|
|
|
{
|
|
|
|
return new Promise(async (resolve) => resolve(`${await this.launcher}/runners`));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* DXVKs directory
|
|
|
|
*
|
2021-12-22 00:28:46 +03:00
|
|
|
* @defaultValue "~/.local/share/anime-game-launcher/dxvks"
|
2021-12-21 00:39:20 +03:00
|
|
|
*/
|
|
|
|
public static get dxvks(): Promise<string>
|
|
|
|
{
|
|
|
|
return new Promise(async (resolve) => resolve(`${await this.launcher}/dxvks`));
|
|
|
|
}
|
2021-11-28 22:11:06 +03:00
|
|
|
|
2021-12-21 19:58:33 +03:00
|
|
|
/**
|
|
|
|
* Config file
|
|
|
|
*
|
2021-12-22 00:28:46 +03:00
|
|
|
* @defaultValue "~/.local/share/anime-game-launcher/config.json"
|
2021-12-21 19:58:33 +03:00
|
|
|
*/
|
|
|
|
public static get config(): Promise<string>
|
|
|
|
{
|
|
|
|
return new Promise(async (resolve) => resolve(`${await this.launcher}/config.json`));
|
|
|
|
}
|
|
|
|
|
2021-12-21 00:39:20 +03:00
|
|
|
/*public static readonly prefix = new class
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Current prefix directory
|
|
|
|
*
|
|
|
|
* Default is ~/.local/share/anime-game-launcher/game
|
|
|
|
*
|
|
|
|
* @returns string
|
|
|
|
*/
|
|
|
|
/*public get(): string
|
|
|
|
{
|
|
|
|
return LauncherLib.getConfig('prefix');
|
|
|
|
}
|
|
|
|
|
|
|
|
public getDefault(): string
|
|
|
|
{
|
|
|
|
return path.join(os.homedir(), '.local', 'share', 'anime-game-launcher', 'game');
|
|
|
|
}
|
|
|
|
|
|
|
|
public set(location: string)
|
|
|
|
{
|
|
|
|
if (path.relative(LauncherLib.getConfig('prefix'), location) === '')
|
|
|
|
return console.log('Can\'t set already selected prefix as new prefix');
|
|
|
|
|
|
|
|
const dataPath = path.join(location, 'drive_c', 'Program Files', constants.placeholders.uppercase.full, `${constants.placeholders.uppercase.first + constants.placeholders.uppercase.second}_Data`);
|
|
|
|
|
|
|
|
LauncherLib.updateConfig('prefix', location);
|
|
|
|
LauncherLib.updateConfig('version', LauncherLib.getGameVersion(dataPath));
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
}
|
2021-11-01 13:46:10 +03:00
|
|
|
|
2021-11-16 21:20:24 +03:00
|
|
|
export default class constants
|
2021-11-01 13:46:10 +03:00
|
|
|
{
|
2021-11-01 15:50:48 +03:00
|
|
|
public static readonly placeholders = {
|
2021-11-01 14:01:28 +03:00
|
|
|
uppercase:
|
|
|
|
{
|
2021-12-21 00:39:20 +03:00
|
|
|
first: 'Genshin',
|
|
|
|
second: 'Impact',
|
|
|
|
full: 'Genshin Impact',
|
|
|
|
company: 'miHoYo'
|
2021-11-01 14:01:28 +03:00
|
|
|
},
|
|
|
|
|
|
|
|
lowercase:
|
|
|
|
{
|
2021-12-21 00:39:20 +03:00
|
|
|
first: 'genshin',
|
|
|
|
company: 'mihoyo'
|
2021-11-01 14:01:28 +03:00
|
|
|
}
|
2021-11-01 13:46:10 +03:00
|
|
|
};
|
|
|
|
|
2021-11-01 15:50:48 +03:00
|
|
|
public static readonly uri = {
|
|
|
|
api: `https://sdk-os-static.${this.placeholders.lowercase.company}.com/hk4e_global/mdk/launcher/api`,
|
2021-12-07 13:48:04 +03:00
|
|
|
patch: {
|
|
|
|
origin: 'https://notabug.org/Krock/dawn',
|
|
|
|
additional: 'https://dev.kaifa.ch/Maroxy/dawn'
|
|
|
|
},
|
2021-11-27 20:49:36 +03:00
|
|
|
launcher: 'https://gitlab.com/KRypt0n_/an-anime-game-launcher',
|
2021-11-01 15:50:48 +03:00
|
|
|
telemetry: [
|
|
|
|
`log-upload-os.${this.placeholders.lowercase.company}.com`,
|
|
|
|
'overseauspider.yuanshen.com'
|
2021-11-25 22:40:54 +03:00
|
|
|
],
|
|
|
|
winetricks: 'https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks'
|
2021-11-01 15:50:48 +03:00
|
|
|
};
|
|
|
|
|
2021-11-24 18:14:41 +03:00
|
|
|
// TODO: cache drops at that dates instead of the 7 days period
|
|
|
|
/*public static readonly cacheDropDates = [
|
|
|
|
new Date('November 24, 2021').getTime(), // 2.3.0 half 1 release
|
|
|
|
new Date('December 15, 2021').getTime(), // 2.3.0 half 2 release
|
|
|
|
new Date('January 5, 2022').getTime() // 2.4.0 half 1 release
|
|
|
|
];*/
|
|
|
|
|
2021-12-21 19:58:33 +03:00
|
|
|
public static readonly paths = Paths;
|
2021-11-01 13:46:10 +03:00
|
|
|
|
2021-11-01 15:50:48 +03:00
|
|
|
public static readonly versionsUri: string = `${this.uri.api}/resource?key=gcStgarh&launcher_id=10`;
|
2021-11-25 17:48:29 +03:00
|
|
|
public static readonly backgroundUri: string = `${this.uri.api}/content?filter_adv=true&launcher_id=10&key=gcStgarh&language=`;
|
2021-11-01 13:46:10 +03:00
|
|
|
|
2021-11-01 15:50:48 +03:00
|
|
|
public static readonly runnersUri: string = `${this.uri.launcher}/raw/main/runners.json`;
|
|
|
|
public static readonly dxvksUri: string = `${this.uri.launcher}/raw/main/dxvks.json`;
|
2021-11-28 22:11:06 +03:00
|
|
|
|
2021-12-21 00:39:20 +03:00
|
|
|
/*public static get gameDir(): string
|
2021-11-28 22:11:06 +03:00
|
|
|
{
|
|
|
|
return path.join(this.prefixDir.get(), 'drive_c', 'Program Files', this.placeholders.uppercase.full);
|
|
|
|
}
|
|
|
|
|
2021-12-13 13:30:45 +03:00
|
|
|
public static get fpsunlockerDir(): string
|
|
|
|
{
|
|
|
|
return path.join(this.prefixDir.get(), 'drive_c', 'Program Files', Buffer.from('R0lfRlBTVW5sb2NrZXI=', 'base64').toString());
|
|
|
|
}
|
|
|
|
|
2021-11-28 22:11:06 +03:00
|
|
|
public static get voiceDir(): string
|
|
|
|
{
|
|
|
|
return path.join(this.gameDir, `${this.placeholders.uppercase.first + this.placeholders.uppercase.second}_Data`, 'StreamingAssets', 'Audio', 'GeneratedSoundBanks', 'Windows');
|
|
|
|
}
|
2021-12-15 17:35:01 +03:00
|
|
|
|
|
|
|
public static getPatchUri(source: 'origin' | 'additional'): string
|
|
|
|
{
|
|
|
|
return `${this.uri.patch[source]}/archive/master.zip`;
|
2021-12-21 00:39:20 +03:00
|
|
|
}*/
|
2021-11-01 13:46:10 +03:00
|
|
|
}
|