void PhysicsServerManager::on_servers_changed() { String physics_servers("DEFAULT"); for (int i = get_servers_count() - 1; 0 <= i; --i) { physics_servers += "," + get_server_name(i); } ProjectSettings::get_singleton()->set_custom_property_info(setting_property_name, PropertyInfo(Variant::STRING, setting_property_name, PROPERTY_HINT_ENUM, physics_servers)); }
/* * Choose a random server out of server array. */ char *get_random_server(void) { int i = 0; int rnd = 0; /* Choose a random number between 0 and i-1 */ rnd = rand() % get_servers_count(); return params->servers[rnd]; }
String PhysicsServerManager::get_server_name(int p_id) { ERR_FAIL_INDEX_V(p_id, get_servers_count(), ""); return physics_servers[p_id].name; }
/* * Parse command line arguments and store them in a global struct. */ int parse_cmd_args(int *argc, char *argv[]) { int i; int ret = 0; int param_server_err = 0; int param_loglevel_err = 0; /* Init struct */ params->reverse = 0; params->help = 0; for (i = 0; i < 5; i++) params->servers[i] = NULL; params->domain = NULL; params->inputfile = NULL; params->outputfile = NULL; params->loglevel = LOG_INFO; params->version = 0; while (1) { static struct option long_options[] = { { "reverse", no_argument, 0, 'r' }, { "servers", required_argument, 0, 's' }, { "domain", required_argument, 0, 'd' }, { "inputfile", required_argument, 0, 'i' }, { "outputfile", required_argument, 0, 'o' }, { "help", no_argument, 0, 'h' }, { "version", no_argument, 0, 'v' }, { "loglevel", required_argument, 0, 'l' }, { 0, 0, 0, 0 } }; /* getopt_long stores the option index here */ int option_index = 0; int c; c = getopt_long(*argc, argv, "rs:d:i:o:hvl:", long_options, &option_index); /* Detect the end of the options */ if (c == -1) break; switch (c) { case 'r': params->reverse = 1; break; case 's': /* Process server parameters */ ret = parse_server_cmd_arg(optarg, params->servers); if (ret != 0) { param_server_err = 1; } break; case 'd': params->domain = optarg; break; case 'i': params->inputfile = optarg; break; case 'o': params->outputfile = optarg; break; case 'h': params->help = 1; break; case 'v': params->version = 1; break; case 'l': params->loglevel = atoi(optarg); if ((params->loglevel < 1) || (params->loglevel > 3)) param_loglevel_err = 1; break; } } /* Check param dependencies */ if (get_servers_count() == 0) { return -1; } if (params->inputfile == NULL) { return -2; } if (param_server_err == 1) { return -3; } if (param_loglevel_err == 1) { return -4; } if (params->reverse == 0) { /* Additional parameter checks when doing forward lookup requests */ if (params->domain == NULL) { return -5; } } return 0; }