#include #include #ifdef __SWITCH__ #include "platform/switch/network.h" #endif #include #include "devilution.h" #if !defined(__APPLE__) extern "C" const char *__asan_default_options() { return "halt_on_error=0"; } #endif static std::string build_cmdline(int argc, char **argv) { std::string str; for (int i = 1; i < argc; i++) { if (i != 1) { str += ' '; } str += argv[i]; } return str; } static bool HasArgumst(const char *arg, int argc, char **argv) { for (int i = 1; i < argc; i++) { if (strcasecmp(arg, argv[i]) == 0) { return true; } } return false; } static void ShowCLIinfo(int argc, char **argv) { if (HasArgumst("-h", argc, argv) || HasArgumst("--help", argc, argv)) { printf("Options:\n"); printf(" %-20s %-30s\n", "-h, --help", "Print this message and exit"); printf(" %-20s %-30s\n", "--version", "Print the version and exit"); printf(" %-20s %-30s\n", "-n", "Skip startup videos"); printf(" %-20s %-30s\n", "-f", "Display frames per second"); printf(" %-20s %-30s\n", "-x", "Run in windows mode"); #ifdef _DEBUG printf("\nDebug options:\n"); printf(" %-20s %-30s\n", "-d", "Increaased item drops"); printf(" %-20s %-30s\n", "-w", "Enable cheats"); printf(" %-20s %-30s\n", "-$", "Enable god mode"); printf(" %-20s %-30s\n", "-^", "Enable god mode and debug tools"); //printf(" %-20s %-30s\n", "-b", "Enable item drop log"); printf(" %-20s %-30s\n", "-v", "Highlight visibility"); printf(" %-20s %-30s\n", "-i", "Ignore network timeout"); //printf(" %-20s %-30s\n", "-j <##>", "Init trigger at level"); printf(" %-20s %-30s\n", "-l <##> <##>", "Start in level as type"); printf(" %-20s %-30s\n", "-m <##>", "Add debug monster, up to 10 allowed"); printf(" %-20s %-30s\n", "-q <#>", "Force a certain quest"); printf(" %-20s %-30s\n", "-r <##########>", "Set map seed"); printf(" %-20s %-30s\n", "-t <##>", "Set current quest level"); #endif printf("\nReport bugs at https://github.com/diasurgical/devilutionX/\n"); exit(0); } if (HasArgumst("--version", argc, argv)) { printf("%s v%s\n", PROJECT_NAME, PROJECT_VERSION); exit(0); } } int main(int argc, char **argv) { ShowCLIinfo(argc, argv); #ifdef __SWITCH__ switch_enable_network(); #endif auto cmdline = build_cmdline(argc, argv); return dvl::DiabloMain(cmdline.c_str()); }