mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-12 15:14:35 +01:00
Merge branch 'main' of https://github.com/Grasscutters/Cultivation
This commit is contained in:
@@ -209,6 +209,7 @@ fn main() -> Result<(), ArgsError> {
|
|||||||
get_theme_list,
|
get_theme_list,
|
||||||
system_helpers::run_command,
|
system_helpers::run_command,
|
||||||
system_helpers::run_program,
|
system_helpers::run_program,
|
||||||
|
system_helpers::run_program_args,
|
||||||
system_helpers::run_program_relative,
|
system_helpers::run_program_relative,
|
||||||
system_helpers::start_service,
|
system_helpers::start_service,
|
||||||
system_helpers::service_status,
|
system_helpers::service_status,
|
||||||
|
|||||||
@@ -108,6 +108,18 @@ impl SpawnItsFineReally for Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tauri::command]
|
||||||
|
pub fn run_program_args(path: String, args: Option<String>) {
|
||||||
|
match open::with(
|
||||||
|
format!("{}", args.unwrap_or_else(|| "".into())),
|
||||||
|
path.clone(),
|
||||||
|
) {
|
||||||
|
Ok(_) => (),
|
||||||
|
Err(e) => println!("Failed to open program ({}): {}", &path, e),
|
||||||
|
};
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub fn run_program(path: String, args: Option<String>) {
|
pub fn run_program(path: String, args: Option<String>) {
|
||||||
// Without unwrap_or, this can crash when UAC prompt is denied
|
// Without unwrap_or, this can crash when UAC prompt is denied
|
||||||
|
|||||||
@@ -278,6 +278,13 @@ export default class ServerLaunchSection extends React.Component<IProps, IState>
|
|||||||
if (config.launch_args.length < 1) {
|
if (config.launch_args.length < 1) {
|
||||||
// Run relative when there are no args
|
// Run relative when there are no args
|
||||||
await invoke('run_program_relative', { path: exe || config.game_install_path })
|
await invoke('run_program_relative', { path: exe || config.game_install_path })
|
||||||
|
}
|
||||||
|
// Handle XXMI
|
||||||
|
else if (proc_name?.toLowerCase().includes('xxmi')) {
|
||||||
|
await invoke('run_program_args', {
|
||||||
|
path: exe,
|
||||||
|
args: config.launch_args,
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
// Run directly when there are args
|
// Run directly when there are args
|
||||||
await invoke('run_program', {
|
await invoke('run_program', {
|
||||||
|
|||||||
@@ -69,7 +69,10 @@ export class ExtrasMenu extends React.Component<IProps, IState> {
|
|||||||
|
|
||||||
// This injects independent of the game
|
// This injects independent of the game
|
||||||
if (this.state.launch_migoto) {
|
if (this.state.launch_migoto) {
|
||||||
await this.launchMigoto()
|
if (await this.launchMigoto()) {
|
||||||
|
// Already launched the game (ie. via XXMI)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This injects independent of the game
|
// This injects independent of the game
|
||||||
@@ -104,7 +107,17 @@ export class ExtrasMenu extends React.Component<IProps, IState> {
|
|||||||
|
|
||||||
if (!config.migoto_path) return alert('Migoto not installed or set!')
|
if (!config.migoto_path) return alert('Migoto not installed or set!')
|
||||||
|
|
||||||
|
if (config.migoto_path?.toLowerCase().includes('xxmi')) {
|
||||||
|
// Get game exe from game path, so we can watch it
|
||||||
|
const pathArr = config.migoto_path.replace(/\\/g, '/').split('/')
|
||||||
|
const gameExec = pathArr[pathArr.length - 1]
|
||||||
|
|
||||||
|
this.props.playGame(config.migoto_path, gameExec)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
await invoke('run_program_relative', { path: config.migoto_path })
|
await invoke('run_program_relative', { path: config.migoto_path })
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
async launchReshade() {
|
async launchReshade() {
|
||||||
|
|||||||
Reference in New Issue
Block a user