better button management

This commit is contained in:
SpikeHD
2022-07-21 19:58:21 -07:00
parent 1b076ccea9
commit d28af907ec
3 changed files with 48 additions and 4 deletions

View File

@@ -31,6 +31,8 @@ interface IState {
httpsEnabled: boolean
swag: boolean
akebiSet: boolean
migotoSet: boolean
}
export default class ServerLaunchSection extends React.Component<{}, IState> {
@@ -49,6 +51,8 @@ export default class ServerLaunchSection extends React.Component<{}, IState> {
httpsLabel: '',
httpsEnabled: false,
swag: false,
akebiSet: false,
migotoSet: false,
}
this.toggleGrasscutter = this.toggleGrasscutter.bind(this)
@@ -74,6 +78,8 @@ export default class ServerLaunchSection extends React.Component<{}, IState> {
httpsLabel: await translate('main.https_enable'),
httpsEnabled: config.https_enabled || false,
swag: config.swag_mode || false,
akebiSet: config.akebi_path !== '',
migotoSet: config.migoto_path !== '',
})
}
@@ -192,6 +198,16 @@ export default class ServerLaunchSection extends React.Component<{}, IState> {
await this.playGame(config.akebi_path, gameExec)
}
async launchMigoto() {
const config = await getConfig()
// Get game exe from game path, so we can watch it
const pathArr = config.game_install_path.replace(/\\/g, '/').split('/')
const gameExec = pathArr[pathArr.length - 1]
await this.playGame(config.migoto_path, gameExec)
}
setIp(text: string) {
this.setState({
ip: text,
@@ -266,9 +282,17 @@ export default class ServerLaunchSection extends React.Component<{}, IState> {
</BigButton>
{this.state.swag && (
<>
<BigButton onClick={this.launchAkebi} id="akebiLaunch">
<img className="AkebiIcon" id="akebiIcon" src={Akebi} />
</BigButton>
{this.state.akebiSet && (
<BigButton onClick={this.launchAkebi} id="akebiLaunch">
<img className="AkebiIcon" id="akebiIcon" src={Akebi} />
</BigButton>
)}
{this.state.migotoSet && (
<BigButton onClick={this.launchMigoto} id="migotoLaunch">
3DM
</BigButton>
)}
</>
)}
<BigButton onClick={this.launchServer} id="serverLaunch">

View File

@@ -37,6 +37,7 @@ interface IState {
// Swag stuff
akebi_path: string
migoto_path: string
}
export default class Options extends React.Component<IProps, IState> {
@@ -60,6 +61,7 @@ export default class Options extends React.Component<IProps, IState> {
// Swag stuff
akebi_path: '',
migoto_path: '',
}
this.setGameExecutable = this.setGameExecutable.bind(this)
@@ -100,6 +102,7 @@ export default class Options extends React.Component<IProps, IState> {
// Swag stuff
akebi_path: config.akebi_path || '',
migoto_path: config.migoto_path || '',
})
this.forceUpdate()
@@ -137,6 +140,14 @@ export default class Options extends React.Component<IProps, IState> {
})
}
setMigoto(value: string) {
setConfigOption('migoto_path', value)
this.setState({
migoto_path: value,
})
}
async setLanguage(value: string) {
await setConfigOption('language', value)
window.location.reload()
@@ -308,10 +319,18 @@ export default class Options extends React.Component<IProps, IState> {
<div className="OptionLabel" id="menuOptionsLabelAkebi">
<Tr text="swag.akebi" />
</div>
<div className="OptionValue" id="menuOptionsDirMigoto">
<div className="OptionValue" id="menuOptionsDirAkebi">
<DirInput onChange={this.setAkebi} value={this.state?.akebi_path} extensions={['exe']} />
</div>
</div>
<div className="OptionSection" id="menuOptionsContainerMigoto">
<div className="OptionLabel" id="menuOptionsLabelMigoto">
<Tr text="swag.migoto" />
</div>
<div className="OptionValue" id="menuOptionsDirMigoto">
<DirInput onChange={this.setMigoto} value={this.state?.migoto_path} extensions={['exe']} />
</div>
</div>
</>
)}

View File

@@ -50,6 +50,7 @@ export interface Configuration {
// Swag stuff
akebi_path?: string
migoto_path?: string
}
export async function setConfigOption<K extends keyof Configuration>(key: K, value: Configuration[K]): Promise<void> {