Merge remote-tracking branch 'origin/main'

This commit is contained in:
KingRainbow44
2022-06-06 01:20:18 -04:00
13 changed files with 118 additions and 23 deletions

View File

@@ -15,6 +15,21 @@ export default class MiniDialog extends React.Component<IProps, never> {
super(props)
}
componentDidMount() {
document.addEventListener('mousedown', (evt) => {
const tgt = evt.target as HTMLElement
const isInside = tgt.closest('.MiniDialog') !== null
if (!isInside) {
this.props.closeFn()
}
})
}
componentWillUnmount() {
document.removeEventListener('mousedown', this.props.closeFn)
}
render() {
return (
<div className="MiniDialog">

View File

@@ -59,8 +59,8 @@ export default class ServerLaunchSection extends React.Component<IProps, IState>
ip: config.last_ip || '',
port: config.last_port || '',
ipPlaceholder: await translate('main.ip_placeholder'),
portPlaceholder: await translate('main.port_placeholder'),
portHelpText: await translate('main.port_help_text')
portPlaceholder: await translate('help.port_placeholder'),
portHelpText: await translate('help.port_help_text')
})
}
@@ -104,6 +104,23 @@ export default class ServerLaunchSection extends React.Component<IProps, IState>
// Connect to proxy
await invoke('connect', { port: 8365, certificatePath: await dataDir() + '\\cultivation\\ca' })
// Open server as well if the options are set
if (config.grasscutter_with_game) {
let jarFolder = config.grasscutter_path
if (jarFolder.includes('/')) {
jarFolder = jarFolder.substring(0, config.grasscutter_path.lastIndexOf('/'))
} else {
jarFolder = jarFolder.substring(0, config.grasscutter_path.lastIndexOf('\\'))
}
await invoke('run_jar', {
path: config.grasscutter_path,
executeIn: jarFolder,
javaPath: config.java_path || ''
})
}
}
// Launch the program

View File

@@ -20,11 +20,14 @@
.HelpContents {
text-align: center;
position: relative;
}
.HelpContents .MiniDialog {
bottom: 80%;
left: 35%;
width: 60%;
height: 60%;
position: absolute;
bottom: 40px;
right: -450%;
width: 200px;
height: 120px;
}

View File

@@ -24,4 +24,8 @@
.DownloadValue .BigButtonText {
font-size: 12px;
}
.DownloadMenuSection .HelpButton img {
filter: none;
}

View File

@@ -11,6 +11,7 @@ import Divider from './Divider'
import { getConfigOption, setConfigOption } from '../../../utils/configuration'
import { invoke } from '@tauri-apps/api'
import { listen } from '@tauri-apps/api/event'
import HelpButton from '../common/HelpButton'
const STABLE_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/stable.zip'
const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/development.zip'
@@ -73,7 +74,9 @@ export default class Downloads extends React.Component<IProps, IState> {
if (gc_path) {
const resources_exist: boolean = await invoke('dir_exists', {
path: path + '\\resources'
})
}) as boolean && !(await invoke('dir_is_empty', {
path: path + '\\resources'
})) as boolean
this.setState({
grasscutter_set: gc_path !== '',
@@ -149,6 +152,15 @@ export default class Downloads extends React.Component<IProps, IState> {
async downloadResources() {
const folder = await this.getGrasscutterFolder()
this.props.downloadManager.addDownload(RESOURCES_DOWNLOAD, folder + '\\resources.zip', async () => {
// Delete the existing folder if it exists
if (await invoke('dir_exists', {
path: folder + '\\resources'
})) {
await invoke('dir_delete', {
path: folder + '\\resources'
})
}
await unzip(folder + '\\resources.zip', folder + '\\', () => {
// Rename folder to resources
invoke('rename', {
@@ -183,6 +195,9 @@ export default class Downloads extends React.Component<IProps, IState> {
<Tr text={
this.state.grasscutter_set ? 'downloads.grasscutter_stable' : 'downloads.grasscutter_stable_update'
} />
<HelpButton>
<Tr text="help.gc_stable_jar" />
</HelpButton>
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterStable} id="grasscutterStableBtn" >
@@ -195,6 +210,9 @@ export default class Downloads extends React.Component<IProps, IState> {
<Tr text={
this.state.grasscutter_set ? 'downloads.grasscutter_latest' : 'downloads.grasscutter_latest_update'
} />
<HelpButton>
<Tr text="help.gc_dev_jar" />
</HelpButton>
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.grasscutter_downloading} onClick={this.downloadGrasscutterLatest} id="grasscutterLatestBtn" >
@@ -210,6 +228,9 @@ export default class Downloads extends React.Component<IProps, IState> {
<Tr text={
this.state.grasscutter_set ? 'downloads.grasscutter_stable_data' : 'downloads.grasscutter_stable_data_update'
} />
<HelpButton>
<Tr text="help.gc_stable_data" />
</HelpButton>
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.repo_downloading} onClick={this.downloadGrasscutterStableRepo} id="grasscutterStableRepo" >
@@ -222,6 +243,9 @@ export default class Downloads extends React.Component<IProps, IState> {
<Tr text={
this.state.grasscutter_set ? 'downloads.grasscutter_latest_data' : 'downloads.grasscutter_latest_data_update'
} />
<HelpButton>
<Tr text="help.gc_dev_data" />
</HelpButton>
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.repo_downloading} onClick={this.downloadGrasscutterStableRepo} id="grasscutterDevRepo" >
@@ -235,6 +259,9 @@ export default class Downloads extends React.Component<IProps, IState> {
<div className='DownloadMenuSection'>
<div className='DownloadLabel'>
<Tr text="downloads.resources" />
<HelpButton>
<Tr text="help.resources" />
</HelpButton>
</div>
<div className='DownloadValue'>
<BigButton disabled={this.state.resources_downloading || !this.state.grasscutter_set || this.state.resources_exist} onClick={this.downloadResources} id="resourcesBtn" >