2020-12-06 23:47:26 +00:00
|
|
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
|
|
|
2021-01-27 18:20:47 +00:00
|
|
|
use std::process::exit;
|
|
|
|
|
2020-10-07 14:08:12 +00:00
|
|
|
fn main() {
|
2021-10-14 04:54:11 +00:00
|
|
|
let args = std::env::args();
|
|
|
|
let mut options = doukutsu_rs::LaunchOptions {
|
2022-01-06 01:11:17 +00:00
|
|
|
server_mode: false,
|
|
|
|
editor: false,
|
2021-10-14 04:54:11 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
for arg in args {
|
|
|
|
if arg == "--server-mode" {
|
|
|
|
options.server_mode = true;
|
|
|
|
}
|
2022-01-06 01:11:17 +00:00
|
|
|
|
|
|
|
if arg == "--editor" {
|
|
|
|
options.editor = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if options.server_mode && options.editor {
|
|
|
|
eprintln!("Cannot run in server mode and editor mode at the same time.");
|
|
|
|
exit(1);
|
2021-10-14 04:54:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
let result = doukutsu_rs::init(options);
|
2021-01-27 18:20:47 +00:00
|
|
|
|
|
|
|
#[cfg(target_os = "windows")]
|
|
|
|
unsafe {
|
|
|
|
use winapi::_core::ptr::null_mut;
|
|
|
|
use winapi::um::winuser::MessageBoxW;
|
|
|
|
use winapi::um::winuser::MB_OK;
|
|
|
|
use winapi::shared::ntdef::LPCWSTR;
|
|
|
|
use std::ffi::OsStr;
|
|
|
|
use std::os::windows::prelude::*;
|
|
|
|
|
|
|
|
if let Err(e) = result {
|
|
|
|
let title: LPCWSTR = OsStr::new("Error!")
|
|
|
|
.encode_wide().chain(Some(0)).collect::<Vec<u16>>().as_ptr();
|
2021-04-03 20:15:17 +00:00
|
|
|
let message: LPCWSTR = OsStr::new(format!("Whoops, doukutsu-rs crashed: {}", e).as_str())
|
2021-01-27 18:20:47 +00:00
|
|
|
.encode_wide().chain(Some(0)).collect::<Vec<u16>>().as_ptr();
|
|
|
|
MessageBoxW(null_mut(),
|
|
|
|
message,
|
|
|
|
title,
|
|
|
|
MB_OK);
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if let Err(e) = result {
|
2021-10-14 04:54:11 +00:00
|
|
|
eprintln!("Initialization error: {}", e);
|
2021-01-27 18:20:47 +00:00
|
|
|
exit(1);
|
|
|
|
}
|
2020-08-18 16:46:07 +00:00
|
|
|
}
|