mirror of
https://github.com/Grasscutters/GrassClipper.git
synced 2024-11-16 21:00:32 +00:00
85 lines
2.6 KiB
JavaScript
85 lines
2.6 KiB
JavaScript
Neutralino.init();
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', async () => {
|
|
setBackgroundImage();
|
|
displayGenshinFolder();
|
|
})
|
|
|
|
async function getCfg() {
|
|
return JSON.parse(await Neutralino.storage.getData('config').catch(e => {
|
|
// The data isn't set, so this is our first time opening
|
|
Neutralino.storage.setData('config', JSON.stringify({
|
|
genshinImpactFolder: '',
|
|
lastConnect: ''
|
|
}))
|
|
}))
|
|
}
|
|
|
|
async function displayGenshinFolder() {
|
|
const elm = document.querySelector('#genshinPath')
|
|
const config = await getCfg()
|
|
|
|
elm.innerHTML = config.genshinImpactFolder
|
|
}
|
|
|
|
async function setBackgroundImage() {
|
|
const config = await getCfg()
|
|
|
|
const images = (await Neutralino.filesystem.readDirectory(config.genshinImpactFolder + '/bg')).filter(file => file.type === 'FILE')
|
|
|
|
// Pick one of the images
|
|
const image = images[Math.floor(Math.random() * images.length)].entry
|
|
const path = config.genshinImpactFolder.replace('\\', '/') + '/bg/' + image
|
|
|
|
// Check if resources folder exists
|
|
const mainDir = await Neutralino.filesystem.readDirectory(NL_CWD)
|
|
if (!mainDir.find(dir => dir.entry === 'resources')) {
|
|
await Neutralino.filesystem.createDirectory(NL_CWD + '/resources')
|
|
}
|
|
|
|
// Ensure bg folder exists
|
|
const bgDir = await Neutralino.filesystem.readDirectory(NL_CWD + '/resources')
|
|
if (!bgDir.find(dir => dir.entry === 'bg')) {
|
|
await Neutralino.filesystem.createDirectory(NL_CWD + '/resources/bg')
|
|
}
|
|
|
|
// Copy to backgrounds folder
|
|
const bgs = (await Neutralino.filesystem.readDirectory(NL_CWD + '/resources/bg/')).filter(file => file.type === 'FILE')
|
|
|
|
if (!bgs.find(file => file.entry === image)) {
|
|
await Neutralino.filesystem.copyFile(path, NL_CWD + '/resources/bg/' + image)
|
|
}
|
|
|
|
// Set the background image
|
|
document.querySelector('#firstHalf').style.backgroundImage = `url("../bg/${image}")`
|
|
}
|
|
|
|
async function setGenshinImpactFolder() {
|
|
const folder = await Neutralino.os.showFolderDialog('Select Genshin Impact folder')
|
|
|
|
// Set the folder in our configuration
|
|
const config = await getCfg()
|
|
|
|
config.genshinImpactFolder = folder
|
|
Neutralino.storage.setData('config', JSON.stringify(config))
|
|
|
|
// Refresh background
|
|
setBackgroundImage()
|
|
}
|
|
|
|
async function launchOfficial() {
|
|
const config = await getCfg()
|
|
|
|
Neutralino.os.execCommand(config.genshinImpactFolder + '/Genshin Impact Game/GenshinImpact.exe')
|
|
}
|
|
|
|
async function launchPrivate() {
|
|
const ip = 'localhost'
|
|
const port = ''
|
|
|
|
const config = await getCfg()
|
|
|
|
// Pass IP and game folder to the private server launcher
|
|
Neutralino.os.execCommand(`${NL_CWD}/private_server_launch.cmd ${ip} "${config.genshinImpactFolder}"`).catch(e => console.log(e))
|
|
} |