16 #include <arpa/inet.h>
17 #include <netinet/in.h>
93 #define MULTI_COMMON_TEXT_META_CHAR '$'
94 #define MULTI_COMMON_TEXT_MAX_LINE_LENGTH 200
95 #define MULTI_COMMON_TEXT_MAX_LINES 20
96 #define MULTI_COMMON_MAX_TEXT (MULTI_COMMON_TEXT_MAX_LINES * MULTI_COMMON_TEXT_MAX_LINE_LENGTH)
110 #define MAX_IP_STRING 255 // maximum length for ip string
195 for ( i = 0; i < n_lines; i++ ) {
210 int i, fh, line_count;
231 #define MULTI_COMMON_NOTIFY_TIME 3500
400 #define MULTI_COMMON_PALETTE_FNAME "InterfacePalette"
418 nprintf((
"Network",
"Error loading multiplayer common palette!\n"));
431 #ifndef HARDWARE_ONLY
465 #define MULTI_JOIN_NUM_BUTTONS 11
469 #define MULTI_JOIN_PALETTE "InterfacePalette"
497 #define MJ_SCROLL_UP 0
498 #define MJ_SCROLL_DOWN 1
500 #define MJ_SCROLL_INFO_UP 3
501 #define MJ_SCROLL_INFO_DOWN 4
502 #define MJ_JOIN_OBSERVER 5
503 #define MJ_START_GAME 6
512 #define MULTI_JOIN_PING_TIME 15000 // how often we ping all the known servers
548 #define MULTI_JOIN_NUM_TEXT 13
589 #define MULTI_JOIN_SENT_WAIT 10000 // wait this long since a join was sent to allow another
658 #define MJ_NUM_SPEED_LABELS 5
679 #define IP_CONFIG_FNAME "tcp.cfg" // name of the file which contains known TCP addresses
683 #define MJ_PING_GREEN 160
684 #define MJ_PING_YELLOW 300
685 #define MJ_PING_RED 700
686 #define MJ_PING_ONE_SECOND 1000
698 #define MJ_PXO_FILTER_Y 0
701 #define MJ_CHAR_STANDALONE "*"
702 #define MJ_CHAR_CAMPAIGN "c"
712 #define MJ_LIST_START_INC() do { Multi_join_list_start++; } while(0);
713 #define MJ_LIST_START_DEC() do { Multi_join_list_start--; } while(0);
714 #define MJ_LIST_START_SET(vl) do { Multi_join_list_start = vl; } while(0);
724 #define MULTI_AUTOJOIN_JOIN_STAMP 2000
725 #define MULTI_AUTOJOIN_QUERY_STAMP 2000
760 DCF(mj_make,
"Makes a multijoin game? (Multiplayer)")
767 dc_printf(
"Usage: mj_make <num_games>\n");
940 Multi_join_select_button.
hide();
957 memset( &Multi_autojoin_addr, 0,
sizeof(
net_addr) );
966 port_num = (short)atoi(p);
969 memcpy(Multi_autojoin_addr.
addr, &ip_addr, 4);
970 Multi_autojoin_addr.
port = port_num;
982 Multi_join_selected_item = NULL;
984 Multi_join_list_start_item = NULL;
1040 int k = Multi_join_window.
process();
1117 Multi_join_window.
draw();
1151 nprintf((
"General",
"WARNING : could not unload background bitmap %s\n",Multi_join_bitmap_fname[
gr_screen.
res]));
1208 Assert(Multi_join_selected_item != NULL);
1277 Assert(Multi_join_selected_item != NULL);
1310 if((con_type > 4) || (con_type < 0)){
1321 if(moveup == Multi_join_selected_item){
1371 if(moveup == Multi_join_selected_item){
1381 y_start += line_height;
1382 moveup = moveup->
next;
1395 char status_text[25];
1430 memset(status_text,0,25);
1472 nprintf((
"Network",
"Error loading tcp.cfg file!\n"));
1480 while(!
cfeof(file)){
1485 if(line[strlen(line) - 1] ==
'\n'){
1486 line[strlen(line) - 1] =
'\0';
1490 if( (line[0] ==
'\0') || (line[0] ==
'\n') ){
1495 nprintf((
"Network",
"Invalid ip string (%s)\n",line));
1501 if ( addr.
port == 0 ){
1573 moveup = moveup->
next;
1595 moveup = moveup->
next;
1616 Assert(Multi_join_selected_item != NULL);
1623 item = y / line_height;
1631 Assert(Multi_join_selected_item != NULL);
1643 item = y / line_height;
1660 moveup = moveup->
next;
1662 moveup = moveup->
next;
1666 nprintf((
"Network",
"Warning, couldn't find game item %d!\n",n));
1681 Multi_join_list_start_item = Multi_join_list_start_item->
prev;
1695 Multi_join_list_start_item = Multi_join_list_start_item->
next;
1718 Multi_join_list_start_item = Multi_join_list_start_item->
prev;
1732 Multi_join_list_start_item = Multi_join_list_start_item->
next;
1791 backup = moveup->
next;
1797 moveup = moveup->
next;
1808 if(item->
next == item){
1810 Multi_join_selected_item = NULL;
1814 Multi_join_list_start_item = NULL;
1825 Multi_join_selected_item = Multi_join_selected_item->
next;
1828 if(item == Multi_join_selected_item){
1830 Multi_join_selected_item = Multi_join_selected_item->
prev;
1849 Multi_join_list_start_item = Multi_join_list_start_item->
next;
1852 if(item == Multi_join_list_start_item){
1853 Multi_join_list_start_item = Multi_join_list_start_item->
prev;
1867 Multi_join_list_start_item = Multi_join_list_start_item->
prev;
1880 if(Multi_join_selected_item == NULL){
1898 nprintf((
"Network",
"Password : %s\n", Multi_join_request.
passwd));
1917 Multi_join_request.
flags = 0;
2003 #define CW_CODE_CANCEL 0 // cancel the action
2004 #define CW_CODE_OK 1 // continue anyway
2005 #define CW_CODE_INFO 2 // gimme some more information
2007 #define LOW_WARN_TEXT XSTR("Warning - You have low object updates selected. A server with low object updates will not be able to handle more than 1 client without performance problems",775)
2008 #define LOW_INFO_TEXT XSTR("Low update level caps all bandwidth at ~2000 bytes/second. It is appropriate for clients with 28.8 modems, but is not reccomended for servers. In addition, any clients connecting to this server should use low object updates as well. To change your settings go to the options menu (f2), and select the Multi button",776)
2010 #define MED_WARN_TEXT XSTR("Warning - You have medium object updates selected. A server with medium object updates will not be able to handle more than 1 or 2 clients without performance problems",777)
2011 #define MED_INFO_TEXT XSTR("Medium update level caps all bandwidth at ~4000 bytes/second. It is appropriate for clients with 56.6 modems, but is not reccomended for servers. In addition, any clients connecting to this server should use low object updates as well. To change your settings go to the options menu (f2), and select the Multi button",778)
2086 #define MULTI_SG_PALETTE "InterfacePalette"
2095 "2_MultiStartGame-M"
2106 #define MSG_X_COORD 0
2107 #define MSG_Y_COORD 1
2108 #define MSG_W_COORD 2
2109 #define MSG_H_COORD 3
2155 #define MULTI_SG_NUM_BUTTONS 10
2158 #define MSG_OPEN_GAME 0
2161 #define MSG_PASSWD_GAME 1
2162 #define MSG_RANK_SET_GAME 2
2163 #define MSG_RANK_SCROLL_UP 3
2164 #define MSG_RANK_SCROLL_DOWN 4
2165 #define MSG_RANK_ABOVE 5
2166 #define MSG_RANK_BELOW 6
2168 #define MSG_OPTIONS 8
2169 #define MSG_ACCEPT 9
2209 #define MULTI_SG_NUM_TEXT 11
2299 if(Multi_sg_bitmap < 0){
2343 Multi_sg_rank_button.
hide();
2350 Multi_sg_game_passwd.
hide();
2351 Multi_sg_game_passwd.
disable();
2416 int k = Multi_sg_window.
process();
2454 if(Multi_sg_bitmap != -1){
2458 Multi_sg_window.
draw();
2485 nprintf((
"General",
"WARNING : could not unload background bitmap %s\n",Multi_sg_bitmap_fname[
gr_screen.
res]));
2563 Multi_sg_game_passwd.
enable();
2564 Multi_sg_game_passwd.
unhide();
2667 char buf[128],out_name[128];
2680 memset( &Multi_sg_netgame_temp, 0,
sizeof(
netgame_info) );
2695 char *server_addr = inet_ntoa(temp_addr);
2696 ml_printf(
NOX(
"Starting netgame as Host on Standalone server : %s"), (server_addr == NULL) ?
NOX(
"Unknown") : server_addr);
2701 Multi_sg_netgame->
security = (rand() % 32766) + 1;
2704 if(Multi_sg_netgame->
security < 16){
2716 Multi_sg_netgame->
flags = 0;
2728 memset(out_name,0,128);
2781 switch(Multi_sg_netgame->
mode){
2816 if(Multi_sg_rank_start > 0){
2817 Multi_sg_rank_start--;
2832 Multi_sg_rank_start++;
2856 if(idx == Multi_sg_rank_select){
2890 if(Multi_sg_rank_button.
pressed()){
2895 if(item + Multi_sg_rank_start <
NUM_RANKS){
2907 memset(
string,0,255);
2921 first = strtok(use,
" ");
2930 first = strtok(NULL,
NOX(
"\n"));
2934 strcpy(out,
XSTR(
"Lt. ",786));
2949 if(Multi_sg_game_passwd.
changed()){
2957 if(Multi_sg_game_name.
changed()){
2965 Multi_sg_game_passwd.
hide();
2966 Multi_sg_game_passwd.
disable();
3022 #define MULTI_CREATE_NUM_BUTTONS 23
3025 #define MC_SHOW_ALL 0
3026 #define MC_SHOW_COOP 1
3027 #define MC_SHOW_TEAM 2
3028 #define MC_SHOW_DOGFIGHT 3
3029 #define MC_PXO_REFRESH 4
3030 #define MC_PILOT_INFO 5
3031 #define MC_SCROLL_LIST_UP 6
3032 #define MC_SCROLL_LIST_DOWN 7
3033 #define MC_SCROLL_PLAYERS_UP 8
3034 #define MC_SCROLL_PLAYERS_DOWN 9
3035 #define MC_MISSION_FILTER 10
3036 #define MC_CAMPAIGN_FILTER 11
3037 #define MC_CANCEL 12
3042 #define MC_SCROLL_INFO_UP 17
3043 #define MC_SCROLL_INFO_DOWN 18
3044 #define MC_HOST_OPTIONS 19
3046 #define MC_OPTIONS 21
3047 #define MC_ACCEPT 22
3057 #define MC_X_COORD 0
3058 #define MC_Y_COORD 1
3059 #define MC_W_COORD 2
3060 #define MC_H_COORD 3
3115 #define MULTI_CREATE_NUM_TEXT 15
3302 #define MULTI_CREATE_PLIST_MAX_DISPLAY 20
3370 if ( (m1.
flags & Multi_create_filter) && !(m2.
flags & Multi_create_filter) ) {
3372 }
else if ( (m2.
flags & Multi_create_filter) && !(m1.
flags & Multi_create_filter) ) {
3379 if (Multi_create_sort_mode) {
3387 }
else if (test > 0) {
3396 bool sort_missions =
false;
3397 bool sort_campaigns =
false;
3398 char selected_name[255];
3401 if (Multi_create_list_count < 0) {
3407 sort_missions =
true;
3411 sort_campaigns =
true;
3415 sort_missions =
true;
3416 sort_campaigns =
true;
3423 if (sort_missions) {
3426 for (
size_t idx = 0; idx < Multi_create_mission_list.size(); idx++) {
3427 if ( !strcmp(selected_name, Multi_create_mission_list[idx].
filename) ) {
3428 new_index = (
int)idx;
3434 if (sort_campaigns) {
3435 std::sort( Multi_create_campaign_list.begin(), Multi_create_campaign_list.end(),
multi_create_sort_func);
3437 for (
size_t idx = 0; idx < Multi_create_campaign_list.size(); idx++) {
3438 if ( !strcmp(selected_name, Multi_create_campaign_list[idx].
filename) ) {
3439 new_index = (
int)idx;
3450 int idx,should_sort,switched_modes;
3455 if ( (Multi_create_list_mode != mode) && (mode != -1) ) {
3456 Multi_create_list_mode =
mode;
3458 }
else if (mode == -1) {
3464 switch (Multi_create_filter) {
3466 Multi_create_list_count = (
int)Multi_create_mission_list.size();
3469 if (switched_modes && (Multi_create_list_count > 0)){
3475 Multi_create_list_count = 0;
3478 for (idx = 0; idx < (
int)Multi_create_mission_list.size(); idx++) {
3479 if(Multi_create_mission_list[idx].
flags & Multi_create_filter){
3480 Multi_create_list_count++;
3485 if (switched_modes && (Multi_create_list_count > 0)){
3492 switch (Multi_create_filter) {
3494 Multi_create_list_count = (
int)Multi_create_campaign_list.size();
3497 if (switched_modes && (Multi_create_list_count > 0)){
3503 Multi_create_list_count = 0;
3506 for (idx = 0; idx < (
int)Multi_create_campaign_list.size(); idx++) {
3507 if(Multi_create_campaign_list[idx].
flags & Multi_create_filter){
3508 Multi_create_list_count++;
3513 if(switched_modes && (Multi_create_list_count > 0)){
3521 Multi_create_list_start = 0;
3522 Multi_create_list_select = -1;
3547 Multi_create_plist_select_flag = 0;
3548 Multi_create_plist_select_id = -1;
3556 if(Multi_create_bitmap < 0){
3607 Multi_create_sw_checkbox.
create(&Multi_create_window,
"", Multi_create_sw_checkbox_coords[
gr_screen.
res][0], Multi_create_sw_checkbox_coords[
gr_screen.
res][1], 0);
3610 Multi_create_sw_checkbox.
hide();
3611 Multi_create_sw_checkbox.
disable();
3618 Multi_create_mission_list.clear();
3619 Multi_create_campaign_list.clear();
3622 Multi_create_list_start = -1;
3623 Multi_create_list_select = -1;
3624 Multi_create_list_count = 0;
3630 Multi_create_player_select_button.
hide();
3634 Multi_create_list_select_button.
hide();
3640 Multi_create_frame_count = 0;
3641 Multi_create_mt_tried_login = 0;
3649 Multi_create_files_loaded = 0;
3672 char almissionname[256];
3698 const char *loading_str =
XSTR(
"Loading", 1336);
3702 Multi_create_should_show_popup = 0;
3705 if ( !Multi_create_files_loaded ) {
3717 if(Multi_create_bitmap != -1){
3722 if ( loading_bitmap > -1 ){
3768 Multi_create_files_loaded = 1;
3772 k = Multi_create_window.
process(k,0);
3806 if(Multi_create_bitmap != -1){
3825 Multi_create_window.
draw();
3897 if(Multi_create_should_show_popup){
3899 if(Multi_create_plist_select_flag){
3901 if(player_index != -1){
3908 Multi_create_frame_count++;
3915 nprintf((
"General",
"WARNING : could not unload background bitmap %s\n",Multi_create_bitmap_fname[
gr_screen.
res]));
3922 Multi_create_window.
destroy();
3938 if(Multi_create_sw_checkbox.
changed()){
3994 Multi_create_slider.
forceUp();
4067 if(Multi_create_plist_select_flag){
4126 Multi_create_should_show_popup = 1;
4184 int test_count,
idx,player_index;
4194 if(test_count <= 0){
4199 if(Multi_create_plist_select_flag){
4201 if(player_index == -1){
4205 Multi_create_plist_select_flag = 1;
4210 if(Multi_create_player_select_button.
pressed()){
4216 if(player_index != -1){
4217 Multi_create_plist_select_flag = 1;
4218 Multi_create_plist_select_id = player_id;
4240 if(Multi_create_plist_select_id ==
Net_players[idx].player_id){
4246 if(Multi_create_plist_select_id ==
Net_players[idx].player_id){
4269 y_start += line_height;
4291 if(Multi_create_plist_select_id ==
Net_players[idx].player_id){
4300 if(Multi_create_plist_select_id ==
Net_players[idx].player_id){
4344 y_start += line_height;
4357 if(Multi_create_plist_select_id ==
Net_players[idx].player_id){
4366 if(Multi_create_plist_select_id ==
Net_players[idx].player_id){
4410 y_start += line_height;
4417 if(Multi_create_list_start > 0){
4418 Multi_create_list_start--;
4428 if((Multi_create_list_count - Multi_create_list_start) > Multi_create_list_max_display[
gr_screen.
res]){
4429 Multi_create_list_start++;
4442 int file_count,
idx;
4443 char **file_list = NULL;
4445 Multi_create_mission_list.clear();
4447 memset( wild_card, 0,
sizeof(wild_card) );
4450 file_list = (
char**)
vm_malloc(
sizeof(
char*) * 1024 );
4452 if (file_list == NULL) {
4464 for (idx = 0; idx < file_count; idx++) {
4465 int flags,max_players;
4469 fname = file_list[
idx];
4498 Multi_create_mission_list.push_back( mcip );
4503 for (idx = 0; idx < file_count; idx++) {
4504 if (file_list[idx]) {
4506 file_list[
idx] = NULL;
4514 Multi_create_slider.
set_numberItems(
int(Multi_create_mission_list.size()) > Multi_create_list_max_display[
gr_screen.
res] ?
int(Multi_create_mission_list.size())-Multi_create_list_max_display[
gr_screen.
res] : 0);
4525 int idx, file_count;
4526 int campaign_type,max_players;
4529 char **file_list = NULL;
4531 Multi_create_campaign_list.clear();
4533 memset( wild_card, 0,
sizeof(wild_card) );
4536 file_list = (
char**)
vm_malloc(
sizeof(
char*) * 1024 );
4538 if (file_list == NULL) {
4550 for (idx = 0; idx < file_count; idx++) {
4554 fname = file_list[
idx];
4591 Multi_create_campaign_list.push_back( mcip );
4596 for (idx = 0; idx < file_count; idx++) {
4597 if (file_list[idx]) {
4599 file_list[
idx] = NULL;
4616 int start_index,stop_index;
4618 char selected_name[255];
4621 if(Multi_create_list_count == 0){
4626 if(Multi_create_list_select_button.
pressed()){
4629 item = (y / line_height);
4632 if((item < Multi_create_list_max_display[
gr_screen.
res]) && (item >= 0)){
4635 if(item < Multi_create_list_count){
4643 if(Multi_create_list_start == -1){
4652 stop_index = (Multi_create_list_mode ==
MULTI_CREATE_SHOW_MISSIONS) ? Multi_create_mission_list.size() : Multi_create_campaign_list.size();
4654 for (idx = start_index; idx < stop_index; idx++) {
4658 mcip = &Multi_create_mission_list[
idx];
4660 mcip = &Multi_create_campaign_list[
idx];
4664 if(count == Multi_create_list_max_display[
gr_screen.
res]){
4669 if ( !(mcip->
flags & Multi_create_filter) ) {
4676 if ( !strcmp(selected_name, mcip->
filename) ) {
4699 y_start += line_height;
4707 int abs_index,campaign_type,max_players;
4713 char *campaign_desc;
4725 if ( n != Multi_create_list_select ) {
4728 if(abs_index == -1){
4732 Multi_create_list_select =
n;
4745 if (abs_index != -1) {
4747 mcip = &Multi_create_mission_list[abs_index];
4749 mcip = &Multi_create_campaign_list[abs_index];
4776 switch(Multi_create_list_mode){
4826 if (campaign_desc != NULL)
4869 max_index = (Multi_create_list_mode ==
MULTI_CREATE_SHOW_MISSIONS) ? Multi_create_mission_list.size() - 1 : Multi_create_campaign_list.size() - 1;
4871 if ( (list_index < 0) || (list_index > max_index) ) {
4876 mcip = &Multi_create_mission_list[list_index];
4878 mcip = &Multi_create_campaign_list[list_index];
4920 char selected_name[255];
4921 int start_campaign = 0;
4922 int popup_choice = 0;
4934 switch(Multi_create_list_mode){
4936 if(Multi_create_list_select != -1){
4955 if(Multi_create_list_select != -1){
4984 XSTR(
"A time limit is being used in a co-op game.\r\n"
4985 " Select \'Cancel\' to go back to the mission select screen.\r\n"
4986 " Select \'Yes\' to continue with this time limit.\r\n"
4987 " Select \'No\' to continue without this time limit.", -1));
4989 if (popup_choice == 0) {
4991 }
else if (popup_choice == 2) {
4999 XSTR(
"A kill limit is being used in a co-op game.\r\n"
5000 " Select \'Cancel\' to go back to the mission select screen.\r\n"
5001 " Select \'Yes\' to continue with this kill limit.\r\n"
5002 " Select \'No\' to continue without this kill limit.", -1));
5004 if (popup_choice == 0) {
5006 }
else if (popup_choice == 2) {
5045 if(!Multi_create_plist_select_flag){
5053 if(player_index != -1){
5074 int player_index = -1;
5090 if(player_index == -1){
5103 if(player_index != -1){
5129 for (idx = 0; idx < Multi_create_mission_list.size(); idx++) {
5130 if (Multi_create_mission_list[idx].
flags & Multi_create_filter) {
5135 if (select_index < 0) {
5136 strcpy(filename, Multi_create_mission_list[idx].filename);
5143 for (idx = 0; idx < Multi_create_campaign_list.size(); idx++) {
5147 if (select_index < 0) {
5148 strcpy(filename, Multi_create_campaign_list[idx].filename);
5154 strcpy(filename,
"");
5160 int lookup_index = 0;
5164 for (idx = 0; idx < Multi_create_mission_list.size(); idx++) {
5165 if (Multi_create_mission_list[idx].
flags & Multi_create_filter) {
5170 if (select_index < lookup_index) {
5177 for (idx = 0; idx < Multi_create_campaign_list.size(); idx++) {
5181 if (select_index < 0) {
5192 int player_count, observer_count,
idx;
5193 int notify_of_hacked_ships_tbl = 0;
5194 int notify_of_hacked_weapons_tbl = 0;
5195 char err_string[255];
5200 if(Multi_create_list_select < 0){
5211 notify_of_hacked_ships_tbl = 0;
5214 notify_of_hacked_ships_tbl = 1;
5218 notify_of_hacked_ships_tbl = 1;
5222 notify_of_hacked_ships_tbl = 0;
5224 if(notify_of_hacked_ships_tbl){
5231 notify_of_hacked_weapons_tbl = 0;
5234 notify_of_hacked_weapons_tbl = 1;
5238 notify_of_hacked_weapons_tbl = 1;
5242 notify_of_hacked_weapons_tbl = 0;
5244 if(notify_of_hacked_weapons_tbl){
5262 sprintf(err_string,
"somebody %s",
XSTR(
"has hacked tables/data", 1271));
5308 sprintf(err_string,
XSTR(
"There are too many players in the game\n\nMax : %d\nCurrently %d\n\nPlease dump a few", 792),
Netgame.
max_players,player_count);
5374 float ratio = (
float)player_count / (
float)multi_cd_count;
5389 for (idx = 0; idx < Multi_create_mission_list.size(); idx++) {
5404 for (idx = 0; idx < Multi_create_campaign_list.size(); idx++) {
5432 if (file_index < 0) {
5435 if ( Multi_create_sw_checkbox.
checked() ) {
5443 mcip = &Multi_create_mission_list[file_index];
5445 mcip = &Multi_create_campaign_list[file_index];
5457 if(!Multi_create_sw_checkbox.
checked()){
5495 #define MULTI_HO_NUM_BUTTONS 12
5496 #define MULTI_HO_NUM_RADIO_BUTTONS 10
5500 #define MULTI_HO_PALETTE "InterfacePalette"
5522 #define MULTI_HO_X_COORD 0
5523 #define MULTI_HO_Y_COORD 1
5524 #define MULTI_HO_W_COORD 2
5525 #define MULTI_HO_H_COORD 3
5526 #define MULTI_HO_TEXT_X_COORD 4
5527 #define MULTI_HO_TEXT_Y_COORD 5
5530 #define MULTI_HO_MSG_RANK 0 // highest ranking players can do messaging
5531 #define MULTI_HO_MSG_LEADER 1 // wing/team leaders can do messaging
5532 #define MULTI_HO_MSG_ANY 2 // any player can do messaging
5533 #define MULTI_HO_MSG_HOST 3 // only the host can do messaging
5534 #define MULTI_HO_END_RANK 4 // highest rank can and host can end mission
5535 #define MULTI_HO_END_LEADER 5 // wing/team leaders and host can end the mission
5536 #define MULTI_HO_END_ANY 6 // any player can end the mission
5537 #define MULTI_HO_END_HOST 7 // only host can end the mission
5538 #define MULTI_HO_VOICE_ON 8 // voice toggled on
5539 #define MULTI_HO_VOICE_OFF 9 // voice toggled off
5540 #define MULTI_HO_HOST_MODIFIES 10 // only the host or team captains can modify ships/weapons in briefing
5541 #define MULTI_HO_ACCEPT 11 // accept button
5623 #define MULTI_HO_NUM_RADIO_GROUPS 3
5624 #define MULTI_HO_MSG_GROUP 0 // group dealing with squadmate messaging
5625 #define MULTI_HO_END_GROUP 1 // group dealing with ending the mission
5626 #define MULTI_HO_VOICE_GROUP 2 // group dealing with voice stuff
5645 #define MULTI_HO_NUM_SLIDERS 3
5646 #define MULTI_HO_SLIDER_VOICE_QOS 0 // voice quality of sound
5647 #define MULTI_HO_SLIDER_VOICE_DUR 1 // max duration of voice recording
5648 #define MULTI_HO_SLIDER_SKILL 2 // skill level
5657 ho_sliders(
char *
name,
int x1,
int y1,
int xt1,
int yt1,
int h,
int _dot_w,
int _dots) : filename(name), x(x1), y(y1), xt(xt1), yt(yt1), hotspot(h), dot_w(_dot_w), dots(_dots){}
5661 ho_sliders(
"MH_11", 428, 214, 437, 199, 11, 19, 10),
5662 ho_sliders(
"MH_12", 428, 261, 437, 246, 12, 19, 10),
5663 ho_sliders(
"MH_08", 237, 454, 230, 411, 8, 36, 5),
5666 ho_sliders(
"2_MH_11", 684, 343, 690, 323, 11, 32, 10),
5667 ho_sliders(
"2_MH_12", 685, 418, 837, 468, 12, 32, 10),
5668 ho_sliders(
"2_MH_08", 379, 727, 369, 663, 8, 60, 5),
5682 #define MULTI_HO_NUM_TITLES 14
5799 #define MULTI_HO_MAX_TIME_LIMIT 500
5800 #define MULTI_HO_MAX_TOKEN_WAIT 5
5801 #define MULTI_HO_MAX_KILL_LIMIT 9999
5802 #define MULTI_HO_MAX_OBS 4
5827 if(Multi_ho_bitmap < 0){
5864 Multi_ho_sliders[
gr_screen.
res][
idx].
slider.
create(&Multi_ho_window, Multi_ho_sliders[
gr_screen.
res][idx].
x, Multi_ho_sliders[
gr_screen.
res][idx].
y, Multi_ho_sliders[
gr_screen.
res][idx].
dots, Multi_ho_sliders[
gr_screen.
res][idx].
filename, Multi_ho_sliders[
gr_screen.
res][idx].
hotspot, NULL, -1, -1, -1, NULL, -1, -1, -1, Multi_ho_sliders[
gr_screen.
res][idx].
dot_w);
5897 Multi_ho_lastframe_input = 0;
5900 if(Multi_create_list_select != -1){
5906 Multi_ho_mission_respawn = (
int)Multi_create_mission_list[abs_index].respawn;
5908 Multi_ho_mission_respawn = (
int)Multi_create_campaign_list[abs_index].respawn;
5911 Multi_ho_mission_respawn = -1;
5914 Multi_ho_mission_respawn = -1;
5949 k = Multi_ho_window.
process();
5976 if(Multi_ho_bitmap != -1){
5980 Multi_ho_window.
draw();
5998 if(Multi_ho_host_modifies){
6019 nprintf((
"General",
"WARNING : could not unload background bitmap %s\n",Multi_ho_bitmap_fname[
gr_screen.
res]));
6041 int radio_index,
idx;
6042 int x_pixel,y_pixel;
6065 if(Multi_ho_radio_info[idx][2] == n){
6070 Assert(radio_index != -1);
6073 if(radio_index < MULTI_HO_NUM_RADIO_BUTTONS){
6075 if(Multi_ho_radio_groups[Multi_ho_radio_info[radio_index][0]] != Multi_ho_radio_info[radio_index][1]){
6077 Multi_ho_radio_groups[Multi_ho_radio_info[radio_index][0]] = Multi_ho_radio_info[radio_index][1];
6091 if(Multi_ho_radio_info[idx][1] == Multi_ho_radio_groups[Multi_ho_radio_info[idx][0]]){
6178 Multi_ho_respawns.
get_text(resp_str);
6179 uint temp_respawn = (
uint)atoi(resp_str);
6182 if(Multi_ho_mission_respawn == -1){
6197 Multi_ho_time_limit.
get_text(resp_str);
6198 int temp_time = atoi(resp_str);
6209 int temp_obs = atoi(resp_str);
6216 Multi_ho_kill_limit.
get_text(resp_str);
6217 int temp_kills = atoi(resp_str);
6224 Multi_ho_voice_wait.
get_text(resp_str);
6225 int temp_wait = atoi(resp_str);
6236 if(Multi_ho_host_modifies){
6312 memset(resp_str,0,10);
6318 memset(resp_str,0,10);
6320 Multi_ho_respawns.
set_text(resp_str);
6324 memset(resp_str,0,10);
6326 sprintf(resp_str,
"%d",(
int)(tl / 60.0
f));
6327 Multi_ho_time_limit.
set_text(resp_str);
6330 memset(resp_str,0,10);
6332 Multi_ho_kill_limit.
set_text(resp_str);
6335 memset(resp_str,0,10);
6337 Multi_ho_voice_wait.
set_text(resp_str);
6341 Multi_ho_host_modifies = 1;
6343 Multi_ho_host_modifies = 0;
6360 int full_seconds, half_seconds;
6363 memset(time_str,0,30);
6372 sprintf(time_str,
"%d.%d",full_seconds,half_seconds);
6381 memset(val_txt,0,255);
6384 if(Multi_ho_mission_respawn != -1){
6385 Multi_ho_respawns.
get_text(val_txt);
6387 if(atoi(val_txt) > Multi_ho_mission_respawn){
6388 memset(val_txt,0,255);
6389 sprintf(val_txt,
XSTR(
"Warning\nRespawn count in greater than mission specified max (%d)",796),Multi_ho_mission_respawn);
6396 Multi_ho_time_limit.
get_text(val_txt);
6399 memset(val_txt,0,255);
6409 memset(val_txt,0,255);
6416 Multi_ho_kill_limit.
get_text(val_txt);
6419 memset(val_txt,0,255);
6426 Multi_ho_voice_wait.
get_text(val_txt);
6428 memset(val_txt,0,255);
6449 Multi_ho_lastframe_input = 0;
6451 }
else if(!Multi_ho_lastframe_input) {
6456 Multi_ho_lastframe_input = 1;
6472 Multi_ho_lastframe_input = 0;
6487 sprintf(
string,
"(%d)",Multi_ho_mission_respawn);
6511 #define MULTI_JW_NUM_BUTTONS 8
6515 #define MULTI_JW_PALETTE "InterfacePalette"
6530 #define MJW_SCROLL_PLAYERS_UP 0
6531 #define MJW_SCROLL_PLAYERS_DOWN 1
6534 #define MJW_PILOT_INFO 4
6535 #define MJW_SCROLL_INFO_UP 5
6536 #define MJW_SCROLL_INFO_DOWN 6
6537 #define MJW_CANCEL 7
6543 #define MJW_X_COORD 0
6544 #define MJW_Y_COORD 1
6545 #define MJW_W_COORD 2
6546 #define MJW_H_COORD 3
6571 #define MULTI_JW_NUM_TEXT 7
6637 #define MULTI_JW_PLIST_MAX_DISPLAY 19
6665 if(Multi_jw_bitmap < 0){
6671 Multi_jw_plist_select_flag = 0;
6672 Multi_jw_plist_select_id = -1;
6703 Multi_jw_sw_checkbox.
create(&Multi_jw_window,
"", Multi_jw_sw_checkbox_coords[
gr_screen.
res][0], Multi_jw_sw_checkbox_coords[
gr_screen.
res][1], 0);
6705 Multi_jw_sw_checkbox.
disable();
6707 Multi_jw_sw_checkbox.
hide();
6717 Multi_jw_plist_select_button.
hide();
6740 char mission_text[255];
6741 k = Multi_jw_window.
process(k,0);
6743 Multi_jw_should_show_popup = 0;
6754 if(Multi_jw_bitmap != -1){
6786 Multi_jw_window.
draw();
6843 if(Multi_jw_should_show_popup){
6845 if(player_index != -1){
6855 nprintf((
"General",
"WARNING : could not unload background bitmap %s\n",Multi_jw_bitmap_fname[
gr_screen.
res]));
6918 Multi_jw_should_show_popup = 1;
6945 int test_count,player_index,
idx;
6955 if(test_count <= 0){
6960 if(Multi_jw_plist_select_flag){
6962 if(player_index == -1){
6966 Multi_jw_plist_select_flag = 1;
6971 if(Multi_jw_plist_select_button.
pressed()){
6976 if(player_index != -1){
6977 Multi_jw_plist_select_id = player_id;
6978 Multi_jw_plist_select_flag = 1;
7000 if(Multi_jw_plist_select_id ==
Net_players[idx].player_id){
7006 if(Multi_jw_plist_select_id ==
Net_players[idx].player_id){
7029 y_start += line_height;
7058 if(Multi_jw_plist_select_id ==
Net_players[idx].player_id){
7064 if(Multi_jw_plist_select_id ==
Net_players[idx].player_id){
7102 y_start += line_height;
7115 if(Multi_jw_plist_select_id ==
Net_players[idx].player_id){
7121 if(Multi_jw_plist_select_id ==
Net_players[idx].player_id){
7162 y_start += line_height;
7182 int player_index = -1;
7198 if(player_index == -1){
7210 if(player_index != -1){
7237 #define MULTI_SYNC_HOST_COUNT 4 // host uses 4 buttons (and sometimes 5)
7238 #define MULTI_SYNC_CLIENT_COUNT 3 // client only uses 3 buttons
7253 #define MS_X_COORD 0
7254 #define MS_Y_COORD 1
7255 #define MS_W_COORD 2
7256 #define MS_H_COORD 3
7263 #define MULTI_SYNC_NUM_BUTTONS 5
7264 #define MS_SCROLL_INFO_UP 0
7265 #define MS_SCROLL_INFO_DOWN 1
7287 #define MULTI_SYNC_NUM_TEXT 5
7289 #define MST_LAUNCH 2
7341 #define MULTI_SYNC_PLIST_MAX_DISPLAY 15
7350 #define MULTI_SYNC_COUNTDOWN_TIME 5 // in seconds
7380 #define MS_FLAG_SENT_FILESIG (1<<0) // sent filesig requests
7381 #define MS_FLAG_SENT_LOAD (1<<1) // sent load packets
7382 #define MS_FLAG_PUSHED_BRIEFING (1<<2) // pushed everyone else into the briefing
7383 #define MS_FLAG_POST_DATA (1<<3) // sent the post data block
7384 #define MS_FLAG_WSS_SLOTS (1<<4) // all players have received wss slot data
7385 #define MS_FLAG_PSETTINGS (1<<5) // send the player settings packet
7386 #define MS_FLAG_MT_STATS_START (1<<6) // server has started getting player stats from the tracker
7387 #define MS_FLAG_MT_STATS_DONE (1<<7) // server has finished getting player stats from the tracker (success or fail)
7388 #define MS_FLAG_TS_SLOTS (1<<8) // team/ship slots have been sent
7389 #define MS_FLAG_DATA_DONE (1<<9) // done transferring all necessary data
7390 #define MS_FLAG_CAMP_DONE (1<<10) // send campaign pool/goal/event stuff
7428 Multi_sync_countdown = -1;
7439 switch(Multi_sync_mode){
7465 switch(Multi_sync_mode){
7477 if(Multi_sync_bitmap != -1){
7481 Multi_sync_window.
draw();
7493 switch(Multi_sync_mode){
7513 if (Multi_launch_button_created){
7514 return XSTR(
"Launch",801);
7532 if (Multi_sync_bitmap < 0) {
7538 Multi_sync_plist_start = 0;
7539 Multi_sync_plist_count = 1;
7541 Multi_launch_button_created = 0;
7559 Multi_sync_player_select = -1;
7604 Multi_sync_plist_button.
hide();
7613 k = Multi_sync_window.
process(k);
7635 nprintf((
"General",
"WARNING : could not unload background bitmap %s\n",Multi_sync_bitmap_fname[
gr_screen.
res]));
7760 if((pct_complete >= 0.0) && (pct_complete <= 1.0)){
7761 sprintf(txt,
XSTR(
"Mission file xfer %d%%",828),(
int)(pct_complete * 100.0
f));
7778 if((pct_complete >= 0.0) && (pct_complete <= 1.0)){
7779 sprintf(txt,
XSTR(
"Mission file xfer %d%%",828),(
int)(pct_complete * 100.0
f));
7854 if(Multi_sync_player_select >= 0){
7894 ml_string(
NOX(
"Server performing pre-briefing data sync"));
7896 if(!(
Game_mode & GM_STANDALONE_SERVER)){
7908 if(!(
Game_mode & GM_STANDALONE_SERVER)){
7924 if(!(
Game_mode & GM_STANDALONE_SERVER)){
7928 if(!(
Game_mode & GM_STANDALONE_SERVER)){
7947 Mission_sync_flags = 0;
8029 nprintf((
"Network",
"Server loading mission..."));
8037 nprintf((
"Network",
"Done\n"));
8044 if(!(
Game_mode & GM_STANDALONE_SERVER)){
8075 if(!(
Game_mode & GM_STANDALONE_SERVER)){
8108 if(Multi_sync_bitmap != -1){
8112 Multi_sync_window.
draw();
8124 nprintf((
"Network",
"WARNING - killing file xfer while leaving mission sync state!!!\n"));
8161 Multi_sync_countdown_anim.
ani.bg_type =
bm_get_type(Multi_sync_bitmap);
8163 if(Multi_sync_countdown_anim.
num_frames < 1){
8164 nprintf((
"General",
"WARNING!, Could not load countdown animation %s!\n",Multi_sync_countdown_fname[
gr_screen.
res]));
8172 Multi_sync_countdown_timer = -1.0f;
8173 Multi_sync_countdown = -1;
8180 Mission_sync_flags = 0;
8181 Multi_sync_launch_pressed = 0;
8184 #define MULTI_POST_TIMESTAMP 7000
8247 if( Multi_sync_countdown_timer > -1.0
f ) {
8253 if( Multi_sync_countdown_timer >= 1.0
f ) {
8255 Multi_sync_countdown--;
8256 Multi_sync_countdown_timer = 0.0f;
8259 if(Multi_sync_countdown == 0){
8260 Multi_sync_countdown_timer = -1.0f;
8262 Multi_sync_launch_pressed = 0;
8296 if(Multi_sync_bitmap != -1){
8300 Multi_sync_window.
draw();
8348 if(np_index == Multi_sync_player_select){
8396 if(np_index == Multi_sync_player_select){
8441 int num_kill_states;
8447 num_kill_states = 3;
8453 for(idx2 = 0;idx2<num_kill_states;idx2++){
8466 if(Multi_sync_launch_pressed){
8470 Multi_sync_launch_pressed = 1;
8475 Multi_sync_countdown_timer = 0.0f;
8491 if(Multi_sync_launch_pressed){
8495 Multi_sync_launch_pressed = 1;
8516 if (!Multi_launch_button_created) {
8536 Multi_sync_button_count++;
8538 Multi_launch_button_created = 1;
8552 Multi_sync_player_select =
idx;
8559 if(Multi_sync_plist_button.
pressed()){
8572 Multi_sync_player_select = -1;
8579 if(select_index < 0){
8580 Multi_sync_player_select =
idx;
8588 Multi_sync_player_select = -1;
8626 Multi_debrief_time = 0.0f;
8627 Multi_debrief_resend_time = 10.0f;
8646 Multi_debrief_server_left = 0;
8649 Multi_debrief_accept_hit = 0;
8650 Multi_debrief_replay_hit = 0;
8653 Multi_debrief_stats_accept_code = -1;
8659 Multi_debrief_reported_tvt = 0;
8661 Multi_debrief_server_framecount = 0;
8715 if(Multi_debrief_accept_hit){
8720 Multi_debrief_accept_hit = 1;
8732 Multi_debrief_accept_hit = 0;
8747 if(Multi_debrief_server_left){
8749 Multi_debrief_server_left = 1;
8750 Multi_debrief_accept_hit = 0;
8752 Multi_debrief_server_left = 0;
8768 Multi_debrief_accept_hit = 0;
8819 if(Multi_debrief_server_left){
8875 if(Multi_debrief_accept_hit){
8880 Multi_debrief_accept_hit = 1;
8891 Multi_debrief_server_left = 1;
8894 Multi_debrief_accept_hit = 0;
8900 if(Multi_debrief_stats_accept_code != -1){
8904 Multi_debrief_stats_accept_code = 1;
8922 if(Multi_debrief_stats_accept_code != -1){
8926 Multi_debrief_stats_accept_code = 0;
8950 int player_status,other_status;
8952 Multi_debrief_server_framecount++;
8967 Multi_debrief_resend_time += 7.0f;
8986 Multi_debrief_reported_tvt = 1;
9015 if(player_status == 1){
9030 }
else if(player_status == 2){
9067 #define MPWD_X_COORD 0
9068 #define MPWD_Y_COORD 1
9069 #define MPWD_W_COORD 2
9070 #define MPWD_H_COORD 3
9073 #define MULTI_PWD_NUM_BUTTONS 2
9074 #define MPWD_CANCEL 0
9075 #define MPWD_COMMIT 1
9107 #define MULTI_PWD_NUM_TEXT 3
9135 if(Multi_pwd_bitmap < 0){
9167 Multi_passwd_done = -1;
9168 Multi_passwd_running = 1;
9181 if(Multi_passwd_background >= 0){
9183 Multi_passwd_background = -1;
9186 Multi_passwd_running = 0;
9195 Multi_passwd_done = 1;
9201 Multi_passwd_done = 0;
9210 while(Multi_passwd_done == -1){
9215 k = Multi_pwd_window.
process();
9221 Multi_passwd_done = 0;
9226 if(Multi_pwd_passwd.
changed()){
9237 if(Multi_passwd_background >= 0){
9242 Multi_pwd_window.
draw();
9253 if(Multi_passwd_running){
char * Mj_slider_name[GR_NUM_RESOLUTIONS]
#define NETINFO_FLAG_WARPING_OUT
void multi_sync_force_start_pre()
#define NG_MODE_RANK_BELOW
#define AG_FLAG_TYPE_MASK
UI_WINDOW Multi_jw_window
int Multi_create_sw_checkbox_text[GR_NUM_RESOLUTIONS][2]
void create(UI_WINDOW *wnd, int _x, int _y, int _num_pos, char *bm_slider, int slider_mask, char *bm_left=NULL, int left_mask=-1, int left_x=-1, int left_y=-1, char *bm_right=NULL, int right_mask=-1, int right_x=-1, int right_y=-1, int _dot_width=19)
DOT_SLIDER class down here.
int Multi_common_create_y[GR_NUM_RESOLUTIONS]
char * Cmdline_connect_addr
int Multi_join_sent_stamp
int multi_create_select_to_index(int select_index)
#define MICON_VOICE_DENIED
void multi_ingame_sync_close()
void multi_sync_common_close()
void set_text(const char *in)
void set_highlight_action(void(*_user_function)(void))
#define NETPLAYER_STATE_DEBRIEF
int Multi_create_list_max_display[GR_NUM_RESOLUTIONS]
int timestamp(int delta_ms)
void multi_common_split_text()
#define NETINFO_FLAG_ACCEPT_INGAME
void multi_update_valid_missions()
int Multi_common_text_max_display[GR_NUM_RESOLUTIONS]
#define FS_MISSION_FILE_EXT
#define MULTIPLAYER_CLIENT
#define MULTI_HO_NUM_RADIO_GROUPS
int Mc_icon_silent_coords[GR_NUM_RESOLUTIONS][2]
#define NETGAME_STATE_DEBRIEF
int Multi_create_mt_tried_login
#define CAMPAIGN_TYPE_SINGLE
int chatbox_create(int mode_flags)
void add_XSTR(char *string, int _xstr_id, int _x, int _y, UI_GADGET *_assoc, int _color_type, int _font_id=-1)
void multi_passwd_close()
#define NETPLAYER_STATE_HOST_SETUP
char Multi_tracker_squad_name[MULTI_TRACKER_STRING_LEN+1]
void fs2netd_gameserver_start()
#define NETPLAYER_STATE_IN_MISSION
int Multi_create_list_mode
int multi_netplayer_flag_check(int flags, int ignore_standalone)
#define MULTI_COMMON_NOTIFY_TIME
void multi_join_load_tcp_addrs()
void multi_debrief_stats_accept()
int Multi_create_frame_count
void multi_campaign_do_debrief(int player_status)
void send_server_query(net_addr *addr)
int cf_delete(const char *filename, int path_type)
Delete the specified file.
int Multi_join_overlay_id
void multi_campaign_flush_data()
#define MULTI_HO_SLIDER_SKILL
void multi_join_create_game()
void multi_options_update_mission(netgame_info *ng, int campaign_mode)
#define MULTI_VOICE_STATUS_IDLE
active_game * Multi_join_list_start_item
int Multi_jw_plist_select_flag
#define MSG_RANK_SCROLL_DOWN
void multi_sg_release_passwd()
int Multi_create_overlay_id
void game_do_state_common(int, int)
void multi_join_handle_item_cull(active_game *item, int item_index)
void game_set_frametime(int)
char image_filename[MAX_FILENAME_LEN+1]
void multi_sg_rank_build_name(char *in, char *out)
int find_freespace_cd(char *)
GLfloat GLfloat GLfloat GLfloat h
void multi_join_game_do_frame()
int multi_num_connections()
char name[MAX_GAMENAME_LEN+1]
float Multi_sync_countdown_timer
void multi_sync_post_do()
int Mc_mission_count_x[GR_NUM_RESOLUTIONS]
void multi_ho_accept_hit()
#define MULTI_START_OVERLAY
void multi_join_game_init()
UI_BUTTON Multi_create_list_select_button
char Game_current_mission_filename[MAX_FILENAME_LEN]
void send_store_stats_packet(int accept)
int Multi_join_list_start
#define NG_FLAG_HACKED_WEAPONS_TBL
char * Multi_create_bitmap_mask_fname[GR_NUM_RESOLUTIONS]
#define MULTI_VOICE_STATUS_RECORDING
void multi_team_level_init()
UI_XSTR Multi_jw_text[GR_NUM_RESOLUTIONS][MULTI_JW_NUM_TEXT]
#define MISSION_LIST_REQUEST
#define MOUSE_LEFT_BUTTON
void multi_sg_rank_scroll_up()
#define NETPLAYER_STATE_MISSION_LOADED
#define MULTI_HO_VOICE_ON
#define NETPLAYER_STATE_INGAME_RPTS
#define AG_FLAG_IN_MISSION
char image_filename[MAX_FILENAME_LEN+1]
#define MULTI_HO_VOICE_OFF
server_item * multi_new_server_item(void)
void multi_jw_button_pressed(int n)
#define NETINFO_FLAG_DO_NETWORKING
#define NETPLAYER_STATE_INGAME_WINGS
multi_server_options m_server_options
void multi_ts_create_wings()
#define MULTI_AUTOJOIN_JOIN_STAMP
int Mjw_players_coords[GR_NUM_RESOLUTIONS][4]
void multi_sg_button_pressed(int n)
UI_WINDOW Multi_join_window
void multi_campaign_send_pool_status()
#define NETPLAYER_STATE_MISSION_LOADING
void multi_sync_button_pressed(int n)
void multi_ho_draw_radio_groups()
drop a ship icon on a wing slot
void multi_reset_timestamps()
#define MJ_LIST_START_INC()
#define gr_restore_screen
#define MULTI_HO_MAX_KILL_LIMIT
#define NETGAME_STATE_BRIEFING
#define MC_SCROLL_INFO_UP
char * mission_branch_desc
int Ho_max_rsp_coords[GR_NUM_RESOLUTIONS][2]
#define MULTI_HO_NUM_TITLES
void send_netplayer_update_packet(net_player *pl)
void multi_sg_init_gamenet()
int mission_campaign_parse_is_multi(char *filename, char *name)
char * Multi_sync_bitmap_mask_fname[GR_NUM_RESOLUTIONS]
void multi_common_scroll_text_up()
#define MULTI_HO_MSG_HOST
void multi_create_list_scroll_up()
#define MULTI_STANDALONE(np)
#define MULTI_SYNC_PRE_BRIEFING
#define MULTI_HO_END_HOST
int gameseq_get_state(void)
void std_destroy_gen_dialog()
void multi_join_list_scroll_down()
#define MULTI_COMMON_TEXT_MAX_LINE_LENGTH
void multi_ho_check_buttons()
#define NETPLAYER_STATE_SLOT_ACK
void multi_sync_post_init()
void multi_common_verify_cd()
int Multi_sync_countdown_coords[GR_NUM_RESOLUTIONS][2]
void multi_ho_blit_max_respawns()
int Ho_st_coords[GR_NUM_RESOLUTIONS][4]
#define GR_NUM_RESOLUTIONS
int Ms_team_icon_offset[GR_NUM_RESOLUTIONS]
#define NETINFO_FLAG_OBSERVER
__inline void gr_string(int x, int y, const char *string, int resize_mode=GR_RESIZE_FULL)
#define MULTI_VALID_MISSION_FILE
void multi_unload_common_icons()
int Multi_ho_host_modifies
general failure sound for any event
void multi_sg_select_rank_default()
void multi_create_game_init()
int multi_netplayer_state_check(int state, int ignore_standalone)
#define MULTI_JOIN_SENT_WAIT
int Mc_players_coords[GR_NUM_RESOLUTIONS][4]
int Cmdline_start_netgame
#define MJ_LIST_START_DEC()
int bm_get_info(int handle, int *w, int *h, ubyte *flags, int *nframes, int *fps)
Gets info on the bitmap indexed by handle.
void multi_join_blit_game_status(active_game *game, int y)
int Multi_autojoin_query_stamp
void multi_create_plist_scroll_down()
int multi_passwd_popup(char *passwd)
#define KICK_REASON_BAD_XFER
void multi_join_blit_top_stuff()
int find_player_id(short player_id)
#define NETPLAYER_STATE_JOINING
void ml_string(const char *string, int add_time)
int Mj_list_area_coords[GR_NUM_RESOLUTIONS][4]
void multi_ho_apply_options()
void multi_jw_plist_blit_normal()
#define PLAYER_FLAGS_HAS_PLAYED_PXO
#define MC_SCROLL_LIST_UP
#define MLO_FLAG_TEMP_CLOSED
#define JOIN_FLAG_AS_OBSERVER
void multi_ping_send(net_player *p)
int Mj_list_y[GR_NUM_RESOLUTIONS]
#define MULTI_HO_NUM_RADIO_BUTTONS
#define MISSION_TYPE_MULTI
void send_file_sig_request(char *file_name)
#define MULTI_HO_NUM_SLIDERS
void multi_create_select_to_filename(int select_index, char *filename)
#define MULTI_HO_MAX_TOKEN_WAIT
float multi_xfer_pct_complete(int handle)
int Mjw_mission_name_coords[GR_NUM_RESOLUTIONS][2]
#define GR_MAYBE_CLEAR_RES(bmap)
char mission_name[NAME_LENGTH+1]
void multi_common_set_palette()
#define NETPLAYER_STATE_JOINED
net_addr Multi_autojoin_addr
#define MICON_VOICE_RECORDING
void send_join_packet(net_addr *addr, join_request *jr)
void multi_oo_reset_sequencing()
void help_overlay_set_state(int overlay_id, int resolution_index, int state)
#define NETPLAYER_STATE_SETTINGS_ACK
int Multi_ho_mission_respawn
void multi_common_add_notify(const char *str)
void multi_passwd_process_buttons()
void send_netgame_update_packet(net_player *pl)
void gr_set_color_fast(color *dst)
#define UI_INPUTBOX_FLAG_ESC_FOC
color Color_text_active_hi
UI_WINDOW Multi_pwd_window
#define MULTI_SYNC_CLIENT_COUNT
UI_BUTTON Multi_sync_plist_button
float Multi_debrief_resend_time
char * Multi_sync_countdown_fname[GR_NUM_RESOLUTIONS]
#define MULTI_JOIN_REFRESH_TIME_LOCAL
#define MULTI_AUTOJOIN_QUERY_STAMP
int mission_campaign_get_info(const char *filename, char *name, int *type, int *max_players, char **desc)
void multi_start_game_init()
int Multi_debrief_accept_hit
#define MSG_RANK_SCROLL_UP
int Multi_state_timestamp
int Ho_vw_coords[GR_NUM_RESOLUTIONS][6]
void gr_set_bitmap(int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha)
int Multi_jw_sw_checkbox_text[GR_NUM_RESOLUTIONS][2]
void multi_common_scroll_text_down()
#define MS_FLAG_SENT_LOAD
#define MULTI_POST_TIMESTAMP
void multi_game_client_setup_do_frame()
#define CHATBOX_FLAG_BUTTONS
void multi_debrief_replay_hit()
#define NETPLAYER_STATE_DATA_LOAD
void multi_team_host_lock_all()
void multi_debrief_stats_toss()
#define AG_FLAG_CONNECTION_SPEED_MASK
GLenum GLuint GLenum GLsizei const GLchar * buf
void multi_ts_assign_players_all()
const char *(* tooltip_handler)(const char *text)
void multi_msg_text_flush()
int Multi_debrief_server_left
multi_local_options player_options
int bm_release(int handle, int clear_render_targets)
Frees both a bitmap's data and it's associated slot.
char * Multi_create_sw_checkbox_fname[GR_NUM_RESOLUTIONS]
char * Mc_slider_bitmap[GR_NUM_RESOLUTIONS]
void multi_create_handle_join(net_player *pl)
void set_state(int _state)
#define MS_FLAG_POST_DATA
char callsign[CALLSIGN_LEN+1]
int multi_start_game_rank_from_name(char *rank)
int Mc_mission_name_x[GR_NUM_RESOLUTIONS]
int psnet_same(net_addr *a1, net_addr *a2)
UI_BUTTON Multi_create_player_select_button
int Multi_sync_launch_pressed
int multi_xfer_get_status(int handle)
int Msg_rank_list_coords[GR_NUM_RESOLUTIONS][4]
#define MISSION_TYPE_MULTI_COOP
void multi_create_list_load_missions()
void generic_anim_unload(generic_anim *ga)
char Multi_common_all_text[MULTI_COMMON_MAX_TEXT]
#define DCF(function_name, help_text)
The potent DCF macro, used to define new debug commands for the console.
int Multi_join_ping_stamp
void multi_debrief_do_frame()
#define MULTI_CREATE_NUM_BUTTONS
#define MJW_SCROLL_PLAYERS_DOWN
ho_sliders Multi_ho_sliders[GR_NUM_RESOLUTIONS][MULTI_HO_NUM_SLIDERS]
void draw_forced(int frame_num)
int multi_num_observers()
int multi_endgame_ending()
void multi_common_render_text()
void multi_sg_check_buttons()
void multi_sync_scroll_info_down()
#define FS_CAMPAIGN_FILE_EXT
int Mj_slider_coords[GR_NUM_RESOLUTIONS][4]
void send_netplayer_load_packet(net_player *pl)
#define MULTI_HO_MAX_TIME_LIMIT
UI_INPUTBOX Multi_ho_time_limit
void multi_create_sw_clicked()
typedef int(SCP_EXT_CALLCONV *SCPDLL_PFVERSION)(SCPDLL_Version *)
netgame_info Multi_sg_netgame_temp
void multi_data_send_my_junk()
#define NETPLAYER_STATE_CPOOL_ACK
void set_mask_bmap(char *fname)
int Multi_common_join_y[GR_NUM_RESOLUTIONS]
int multi_create_verify_cds()
int Multi_join_list_selected
#define NG_MODE_RANK_ABOVE
int set_bmaps(char *ani_filename, int nframes=3, int start_frame=1)
void multi_display_chat_msg(const char *msg, int player_index, int add_id)
void multi_ingame_sync_init()
ui_button_info Multi_join_buttons[GR_NUM_RESOLUTIONS][MULTI_JOIN_NUM_BUTTONS]
#define MSG_RANK_SET_GAME
void multi_kick_player(int player_index, int ban, int reason)
UI_WINDOW Multi_create_window
int Multi_ho_lastframe_input
#define MS_FLAG_DATA_DONE
char * Cmdline_rank_above
void set_numberItems(int _numberItems, int _reset=1)
int Mj_game_name_coords[GR_NUM_RESOLUTIONS][4]
UI_XSTR Multi_join_text[GR_NUM_RESOLUTIONS][MULTI_JOIN_NUM_TEXT]
int multi_create_lookup_mission(char *fname)
void multi_join_reset_join_stamp()
#define MULTI_VOICE_MAX_TIME
#define NETINFO_FLAG_AM_MASTER
const char * multi_sync_tooltip_handler(const char *str)
int Msg_passwd_coords[GR_NUM_RESOLUTIONS][4]
void multi_start_game_do()
void multi_options_update_start_game(netgame_info *ng)
#define MULTI_JOIN_NUM_BUTTONS
#define MULTI_SYNC_HOST_COUNT
void ml_printf(const char *format,...)
void multi_sync_pre_close()
void multi_join_check_buttons()
int voice_token_timestamp
int psnet_is_valid_ip_string(char *ip_string, int allow_port)
char Multi_common_notify_text[200]
#define MULTI_FS_SERVER_COMPATIBLE_VERSION
int mission_parse_is_multi(const char *filename, char *mission_name)
multi_server_options options
#define UI_INPUTBOX_FLAG_PASSWD
ui_button_info Multi_sync_buttons[GR_NUM_RESOLUTIONS][MULTI_SYNC_NUM_BUTTONS]
#define NETPLAYER_STATE_MISSION_SYNC
void multi_jw_plist_process()
int multi_create_ok_to_commit()
#define NETINFO_FLAG_HAS_CD
ui_button_info Multi_create_buttons[GR_NUM_RESOLUTIONS][MULTI_CREATE_NUM_BUTTONS]
void multi_sg_rank_display_stuff()
#define NG_FLAG_HACKED_SHIPS_TBL
char name[MAX_GAMENAME_LEN+1]
void multi_flush_multidata_cache()
void send_game_chat_packet(net_player *from, const char *msg, int msg_mode, net_player *to, const char *expr, int server_msg)
int Multi_ho_radio_info[MULTI_HO_NUM_RADIO_BUTTONS][3]
#define MSO_FLAG_INGAME_XFER
char * cfgets(char *buf, int n, CFILE *cfile)
void send_countdown_packet(int time)
void multi_join_list_page_up()
void multi_obs_level_init()
#define NETPLAYER_STATE_MT_STATS
int Multi_join_should_send
void create(UI_WINDOW *wnd, int _x, int _y, int _w, int _h, int _numberItems, char *_bitmapSliderControl, void(*_upCallback)(), void(*_downCallback)(), void(*_captureCallback)())
UI_INPUTBOX Multi_sg_game_name
void multi_create_refresh_pxo()
void multi_flush_mission_stuff()
void multi_create_accept_hit()
#define DEFAULT_GAME_PORT
#define AG_FLAG_STATE_MASK
void multi_common_notify_do()
void multi_pinfo_popup(net_player *np)
int multi_sg_rank_select_valid(int rank)
UI_INPUTBOX Multi_ho_kill_limit
int Multi_join_frame_count
#define MJW_SCROLL_INFO_DOWN
void multi_team_send_update()
UI_BUTTON Multi_sg_rank_button
void multi_join_do_netstuff()
int Ho_obs_coords[GR_NUM_RESOLUTIONS][4]
int multi_create_lookup_campaign(char *fname)
#define MULTI_SYNC_COUNTDOWN_TIME
int Multi_ho_radio_groups[MULTI_HO_NUM_RADIO_GROUPS]
int Mc_mission_fname_x[GR_NUM_RESOLUTIONS]
void chatbox_force_small()
ui_button_info Multi_ho_buttons[GR_NUM_RESOLUTIONS][MULTI_HO_NUM_BUTTONS]
void multi_create_plist_process()
int Multi_sg_rank_max_display[GR_NUM_RESOLUTIONS]
#define MULTI_FS_SERVER_VERSION
int Mj_max_game_items[GR_NUM_RESOLUTIONS]
void generic_anim_render(generic_anim *ga, float frametime, int x, int y, bool menu)
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
void std_gen_set_text(char *str, int field_num)
char filename[MAX_FILENAME_LEN]
#define NG_FLAG_STORED_MT_STATS
int Multi_num_players_at_start
void multi_voice_maybe_update_vars(int new_qos, int new_duration)
#define MULTI_XFER_TIMEDOUT
int Multi_common_text_coords[GR_NUM_RESOLUTIONS][4]
#define UI_INPUTBOX_FLAG_NO_LETTERS
#define MULTI_PWD_NUM_TEXT
#define NETINFO_FLAG_MISSION_OK
int Mc_info_coords[GR_NUM_RESOLUTIONS][4]
#define NETINFO_FLAG_INGAME_JOIN
short multi_jw_get_mouse_id()
void multi_create_plist_blit_normal()
void multi_common_load_palette()
#define MSO_FLAG_SS_LEADERS
#define AG_FLAG_STANDALONE
multi_local_options m_local_options
void multi_join_list_scroll_up()
char * Multi_jw_sw_checkbox_fname[GR_NUM_RESOLUTIONS]
short Multi_jw_plist_select_id
#define MULTI_HO_VOICE_GROUP
int multi_join_warn_update_medium(int code)
void multi_options_netgame_load(multi_server_options *options)
net_player_server_info s_info
#define MULTI_CREATE_SHOW_MISSIONS
#define NETGAME_STATE_MISSION_SYNC
#define NETINFO_FLAG_TEAM_CAPTAIN
int Multi_passwd_background
int split_str(const char *src, int max_pixel_w, int *n_chars, const char **p_str, int max_lines, char ignore_char)
void send_player_settings_packet(net_player *p)
#define NETINFO_FLAG_HAXOR
void fs2netd_store_stats()
void send_jump_into_mission_packet(net_player *pl)
char mission_name[NAME_LENGTH+1]
#define NETINFO_FLAG_GAME_HOST
#define MC_SCROLL_INFO_DOWN
int multi_netplayer_state_check3(int state, int state2, int state3, int ignore_standalone)
bool multi_create_sort_func(const multi_create_info &m1, const multi_create_info &m2)
bool dc_optional_string_either(const char *str1, const char *str2)
Searches for an optional string and it's alias.
#define MJ_CHAR_STANDALONE
void multi_ho_button_pressed(int n)
#define MULTI_HO_MSG_GROUP
void send_mission_sync_packet(int mode, int start_campaign)
char passwd[MAX_PASSWD_LEN+1]
int Multi_sync_button_count
#define NETPLAYER_STATE_DEBRIEF_REPLAY
void multi_create_game_close()
UI_WINDOW Multi_sync_window
bool save_player(player *_p=NULL)
#define NETINFO_FLAG_ACCEPT_HOST
#define MULTI_HO_END_LEADER
int Multi_common_msg_y[GR_NUM_RESOLUTIONS]
short multi_create_get_mouse_id()
void multi_sync_check_buttons()
#define MULTI_NUM_COMMON_ICONS
void multi_debrief_init()
void multi_sync_common_do()
char campaign_name[NAME_LENGTH+1]
int Multi_launch_button_created
void multi_host_options_do()
color Color_bright_yellow
void multi_create_init_as_server()
void multi_join_notify_new_game()
int Cmdline_restricted_game
void multi_free_server_list()
void multi_game_client_setup_init()
void multi_join_clear_game_list()
UI_INPUTBOX Multi_ho_voice_wait
int mission_parse_get_multi_mission_info(const char *filename)
char * Cmdline_rank_below
void multi_sync_start_countdown()
int Multi_create_plist_select_flag
void multi_common_notify_init()
void multi_maybe_set_mission_loop()
ui_button_info Multi_jw_buttons[GR_NUM_RESOLUTIONS][MULTI_JW_NUM_BUTTONS]
#define MULTI_COMMON_TEXT_MAX_LINES
int multi_join_warn_update_low(int code)
object Objects[MAX_OBJECTS]
#define MULTI_SYNC_NUM_BUTTONS
void chatbox_lose_focus()
void multi_xfer_release_handle(int handle)
#define MS_FLAG_CAMP_DONE
void multi_ho_update_sliders()
char title[NAME_LENGTH+1]
ui_button_info Multi_pwd_buttons[GR_NUM_RESOLUTIONS][MULTI_PWD_NUM_BUTTONS]
char pxo_squad_name[LOGIN_LEN]
int Multi_sync_plist_count
int Mj_game_icon_coords[GR_NUM_RESOLUTIONS][3]
void send_wss_slots_data_packet(int team_num, int final, net_player *p, int std_request)
const char * XSTR(const char *str, int index)
netgame_info * Multi_sg_netgame
UI_SLIDER2 Multi_join_slider
#define MS_SCROLL_INFO_UP
#define MULTI_JW_NUM_BUTTONS
#define NETINFO_FLAG_LIMBO
UI_INPUTBOX Multi_ho_respawns
user_click (mouse selects a control)
void force_currentItem(int _currentItem)
int Multi_sync_player_select
void multi_df_level_pre_enter()
void multi_create_set_selected_team(int team)
void multi_sg_rank_scroll_down()
#define NETINFO_FLAG_ACCEPT_CLIENT
active_game * multi_join_get_game(int n)
void std_debug_set_standalone_state_string(char *str)
UI_WINDOW Multi_sg_window
#define MS_FLAG_SENT_FILESIG
void multi_create_plist_blit_team()
#define GM_STANDALONE_SERVER
int Multi_common_top_text_line
void multi_ho_display_skill_level()
void multi_ho_get_options()
void broadcast_game_query()
#define MULTI_END_NOTIFY_NONE
void multi_create_list_sort(int mode)
int Mc_icon_volition_coords[GR_NUM_RESOLUTIONS][2]
void set_hotkey(int keycode)
#define MVALID_STATUS_VALID
#define NETGAME_STATE_IN_MISSION
void multi_sg_draw_radio_buttons()
void multi_host_options_init()
void dc_stuff_int(int *i)
Stuffs an int to the given variable. Supports binary (0b), hexadecimal (0x), and octal (0o) formats...
GLuint const GLchar * name
void multi_jw_check_buttons()
#define NETINFO_FLAG_CONNECTED
void multi_debrief_esc_hit()
UI_BUTTON Multi_join_select_button
void multi_options_local_load(multi_local_options *options, net_player *pxo_pl)
void multi_server_update_player_weapons(net_player *pl, ship *shipp)
int Multi_sync_plist_start
void create(UI_WINDOW *wnd, char *_text, int _x, int _y, int _state)
#define NETPLAYER_STATE_MISSION_XFER
int Mc_column1_w[GR_NUM_RESOLUTIONS]
void multi_jw_scroll_players_down()
char * cf_add_ext(const char *filename, const char *ext)
void multi_sync_common_init()
void multi_join_process_select()
int bm_load(const char *real_filename)
Loads a bitmap so we can draw with it later.
int multi_quit_game(int prompt, int notify_code, int err_code, int wsa_error)
GLboolean GLboolean GLboolean b
#define MC_SCROLL_PLAYERS_DOWN
ui_button_info Multi_sg_buttons[GR_NUM_RESOLUTIONS][MULTI_SG_NUM_BUTTONS]
void multi_sync_pre_init()
struct generic_anim::@239::@241 ani
#define NETPLAYER_STATE_WAITING
UI_XSTR Multi_ho_titles[GR_NUM_RESOLUTIONS][MULTI_HO_NUM_TITLES]
int multi_join_warn_pxo()
void send_netplayer_slot_packet()
#define FS_CDROM_VOLUME_2
#define MULTI_PERM_OBSERVER(np)
char * Multi_sync_bitmap_fname[GR_NUM_RESOLUTIONS]
void multi_common_move_to_bottom()
color Color_text_selected
active_game * Multi_join_selected_item
SCP_vector< multi_create_info > Multi_create_campaign_list
void multi_sync_post_close()
typedef float(SCP_EXT_CALLCONV *SCPTRACKIR_PFFLOATVOID)()
void multi_create_setup_list_data(int mode)
SCP_vector< multi_create_info > Multi_create_mission_list
void multi_free_active_games()
void send_netgame_descript_packet(net_addr *addr, int code)
#define MJW_SCROLL_PLAYERS_UP
int Mj_players_coords[GR_NUM_RESOLUTIONS][4]
#define MULTI_JOIN_NUM_TEXT
#define MJ_PING_ONE_SECOND
void multi_create_list_select_item(int n)
#define MJ_SCROLL_INFO_DOWN
#define MSO_FLAG_NO_VOICE
int Multi_jw_sw_checkbox_coords[GR_NUM_RESOLUTIONS][2]
void multi_options_update_netgame()
scroll pressed (and scroll)
void multi_passwd_do(char *passwd)
#define MP_SINGLE_MISSION
void link_hotspot(int num)
#define MC_MISSION_FILTER
#define MULTI_COMMON_MAX_TEXT
int Mc_icon_type_coords[GR_NUM_RESOLUTIONS][2]
void multi_debrief_accept_hit()
#define CHATBOX_FLAG_DRAW_BOX
void create(UI_WINDOW *wnd, char *_text, int _x, int _y, int _w, int _h, int do_repeat=0, int ignore_focus=0)
#define NG_FLAG_TEMP_CLOSED
void multi_jw_scroll_players_up()
int Mc_slider_coords[GR_NUM_RESOLUTIONS][4]
void multi_endgame_init()
char * Multi_create_bitmap_fname[GR_NUM_RESOLUTIONS]
#define NG_MODE_RESTRICTED
int multi_join_autojoin_do()
#define MS_FLAG_PUSHED_BRIEFING
void multi_sync_display_name(const char *name, int index, int np_index)
int Msg_rank_sel_coords[GR_NUM_RESOLUTIONS][4]
#define UI_XSTR_COLOR_PINK
void multi_join_eval_pong(net_addr *addr, fix pong_time)
void multi_create_do_netstuff()
#define MULTI_SG_NUM_BUTTONS
void palette_use_bm_palette(int n)
#define MULTI_CONNECTED(np)
#define OBJ_UPDATE_MEDIUM
void create(int _x, int _y, int _w, int _h, int _flags, int _f_id=-1)
#define NETPLAYER_STATE_DEBRIEF_ACCEPT
int gr_force_fit_string(char *str, int max_str, int max_width)
char passwd[MAX_PASSWD_LEN+1]
#define MULTI_JOIN_REFRESH_TIME
int Please_wait_coords[GR_NUM_RESOLUTIONS][4]
#define MULTI_SG_NUM_TEXT
int Mc_column2_w[GR_NUM_RESOLUTIONS]
#define MULTI_SYNC_INGAME
int Msg_title_coords[GR_NUM_RESOLUTIONS][4]
#define MULTI_SYNC_POST_BRIEFING
void gr_get_string_size(int *w, int *h, const char *text, int len=9999)
#define MC_SCROLL_PLAYERS_UP
void generic_anim_init(generic_anim *ga)
int Mc_players_text[GR_NUM_RESOLUTIONS][2]
int Multi_common_num_text_lines
void multi_debrief_close()
short Multi_create_plist_select_id
#define MULTI_JOIN_OVERLAY
color * Multi_join_speed_colors[MJ_NUM_SPEED_LABELS]
#define MULTI_HO_NUM_BUTTONS
#define MS_FLAG_WSS_SLOTS
#define NETINFO_FLAG_RESPAWNING
void multi_join_game_close()
#define MULTI_JOIN_PING_TIME
void multi_sync_blit_screen_all()
#define FSB_FROM_VOLITION
#define MULTI_COMMON_PALETTE_FNAME
#define MULTI_SYNC_NUM_TEXT
int Ho_time_coords[GR_NUM_RESOLUTIONS][4]
void multi_create_plist_scroll_up()
#define MULTI_HO_MSG_LEADER
int Multi_debrief_stats_accept_code
int Multi_create_list_select
#define MJ_NUM_SPEED_LABELS
#define NETGAME_STATE_HOST_SETUP
#define NETPLAYER_STATE_WSS_ACK
UI_XSTR Multi_sg_text[GR_NUM_RESOLUTIONS][MULTI_SG_NUM_TEXT]
void debrief_assemble_optional_mission_popup_text(char *buffer, char *mission_loop_desc)
#define MULTIPLAYER_MASTER
An overhauled/updated debug console to allow monitoring, testing, and general debugging of new featur...
int Multi_create_files_loaded
void common_play_highlight_sound()
#define NETPLAYER_STATE_POST_DATA_ACK
int Mpwd_coords[GR_NUM_RESOLUTIONS][4]
#define MULTI_VOICE_STATUS_DENIED
#define NETPLAYER_STATE_INGAME_SHIP_SELECT
#define MICON_TEAM0_SELECT
void create(UI_WINDOW *wnd, int _x, int _y, int _w, int _textlen, char *_text, int _flags=0, int pixel_lim=-1, color *clr=NULL)
void main_hall_start_music()
const char * Skill_level_names(int skill_level, int translate=1)
#define MC_CAMPAIGN_FILTER
#define MLO_FLAG_LOCAL_BROADCAST
#define timestamp_elapsed(stamp)
void multi_common_voice_display_status()
void get_mouse_pos(int *xx, int *yy)
#define UI_INPUTBOX_FLAG_INVIS
UI_INPUTBOX Multi_pwd_passwd
void multi_join_display_games()
#define MSO_FLAG_ACCEPT_PIX
#define FS_CDROM_VOLUME_3
BM_TYPE bm_get_type(int handle)
Returns the image type of the given bitmap handle.
char mission_desc[MISSION_DESC_LENGTH]
int Multi_debrief_server_framecount
int chatbox_process(int key_in)
int Ms_status2_coords[GR_NUM_RESOLUTIONS][4]
void multi_campaign_start(char *filename)
void multi_join_send_join_request(int as_observer)
int Multi_debrief_replay_hit
char callsign[CALLSIGN_LEN+1]
#define NETPLAYER_STATE_SHIP_SELECT
int multi_join_maybe_warn()
void drop_leading_white_space(char *str)
#define IP_ADDRESS_LENGTH
UI_XSTR Multi_pwd_text[GR_NUM_RESOLUTIONS][MULTI_PWD_NUM_TEXT]
int Multi_create_should_show_popup
#define CAMPAIGN_TYPE_MULTI_TEAMS
void multi_create_check_buttons()
int Multi_create_list_start
void multi_ingame_sync_do()
int Mc_team_text[GR_NUM_RESOLUTIONS][2]
#define MICON_TEAM1_SELECT
void std_create_gen_dialog(char *title)
active_game * multi_update_active_games(active_game *ag)
int multi_team_ok_to_commit()
void multi_get_mission_checksum(const char *filename)
bool Multi_create_sort_mode
rank_stuff Ranks[NUM_RANKS]
UI_SLIDER2 Multi_create_slider
#define CAMPAIGN_TYPE_MULTI_COOP
void multi_create_list_blit_icons(int list_index, int y_start)
void gr_bitmap(int _x, int _y, int resize_mode)
#define CAMPAIGN_LOOP_MISSION_UNINITIALIZED
#define UI_XSTR_COLOR_GREEN
int Multi_join_mt_tried_verify
int Mc_create_game_text[GR_NUM_RESOLUTIONS][2]
int Multi_create_list_count
#define NETPLAYER_STATE_BRIEFING
#define NETPLAYER_STATE_WEAPON_SELECT
#define NETPLAYER_STATE_INGAME_SHIPS
void set_valid_chars(char *vchars)
#define MULTI_HO_MSG_RANK
void fs2netd_gameserver_update(bool force)
char Multi_common_text[MULTI_COMMON_TEXT_MAX_LINES][MULTI_COMMON_TEXT_MAX_LINE_LENGTH]
void multi_jw_handle_join(net_player *pl)
void multi_sg_check_passwd()
#define MS_FLAG_PSETTINGS
int Ms_cd_icon_offset[GR_NUM_RESOLUTIONS]
void dc_printf(const char *format,...)
Prints the given char string to the debug console.
UI_XSTR Multi_create_text[GR_NUM_RESOLUTIONS][MULTI_CREATE_NUM_BUTTONS]
int Ho_vd_coords[GR_NUM_RESOLUTIONS][4]
void multi_jw_plist_blit_team()
void multi_ho_display_record_time()
#define MC_SCROLL_LIST_DOWN
active_game * Active_game_head
int multi_ho_check_values()
UI_XSTR Multi_ho_text[GR_NUM_RESOLUTIONS][MULTI_HO_NUM_BUTTONS]
void multi_oo_rate_init_all()
int Multi_create_sw_checkbox_coords[GR_NUM_RESOLUTIONS][2]
void multi_sg_check_name()
char squad_filename[MAX_FILENAME_LEN+1]
int Multi_common_interface_palette
#define MULTI_HO_HOST_MODIFIES
void psnet_string_to_addr(net_addr *address, char *text)
#define AG_FLAG_CONNECTION_BIT
int bm_unload(int handle, int clear_render_targets, bool nodebug)
Unloads a bitmap's data, but not the bitmap info.
char m_squad_filename[MAX_FILENAME_LEN+1]
int multi_debrief_stats_accept_code()
int Mc_icon_valid_coords[GR_NUM_RESOLUTIONS][2]
void multi_sync_create_launch_button()
void multi_create_list_scroll_down()
void multi_common_unload_palette()
void multi_join_ping_all()
void multi_load_common_icons()
int Multi_common_jw_y[GR_NUM_RESOLUTIONS]
UI_CHECKBOX Multi_jw_sw_checkbox
#define MS_SCROLL_INFO_DOWN
#define MULTI_HO_END_RANK
void gamesnd_play_iface(int n)
void multi_sg_rank_process_select()
#define NETINFO_FLAG_ACCEPT_OBSERVER
int cfclose(CFILE *cfile)
struct ui_button_info ui_button_info
void multi_debrief_server_process()
char * Multi_common_icon_names[MULTI_NUM_COMMON_ICONS]
#define MULTI_HO_END_GROUP
void gr_set_font(int fontnum)
char * Cmdline_game_password
void multi_ping_eval_pong(ping_struct *ps)
join_request Multi_join_request
#define MJW_SCROLL_INFO_UP
int Mj_cd_coords[GR_NUM_RESOLUTIONS]
GLenum const GLvoid * addr
#define NETPLAYER_STATE_SLOTS_ACK
void pilot_format_callsign_personal(char *in_callsign, char *out_callsign)
#define MULTI_VOICE_STATUS_PLAYING
UI_WINDOW Multi_ho_window
void multi_game_client_setup_close()
#define NETGAME_STATE_FORMING
void multi_create_list_load_campaigns()
#define MULTI_CREATE_SHOW_CAMPAIGNS
void multi_common_add_text(const char *str, int auto_scroll)
#define MAX_FREESPACE2_RANK
#define FS_CDROM_VOLUME_1
void multi_create_game_do()
int cf_get_file_list(SCP_vector< SCP_string > &list, int pathtype, const char *filter, int sort=CF_SORT_NONE, SCP_vector< file_list_info > *info=NULL)
char * Multi_join_speed_labels[MJ_NUM_SPEED_LABELS]
int Multi_common_icon_dims[MULTI_NUM_COMMON_ICONS][2]
void multi_team_set_team(net_player *pl, int team)
#define MULTI_IS_TRACKER_GAME
int process(int key_in=-1, int process_mouse=1)
int help_overlay_get_index(const char *overlay_name)
int generic_anim_stream(generic_anim *ga)
int Multi_common_icons[MULTI_NUM_COMMON_ICONS]
void multi_create_list_do()
void multi_team_mark_all_ships()
int Mc_list_coords[GR_NUM_RESOLUTIONS][4]
net_player Net_players[MAX_PLAYERS]
void multi_common_set_text(const char *str, int auto_scroll)
void multi_create_button_pressed(int n)
void gameseq_post_event(int event)
#define MLO_FLAG_FLUSH_CACHE
#define CMISSION_FLAG_HAS_LOOP
void multi_join_cull_timeouts()
UI_BUTTON Multi_jw_plist_select_button
void multi_sync_handle_plist()
int Ho_rsp_coords[GR_NUM_RESOLUTIONS][6]
#define MULTI_JW_NUM_TEXT
#define MULTI_HO_SLIDER_VOICE_DUR
void multi_ho_check_focus()
void multi_sync_force_start_post()
void send_firing_info_packet()
int Multi_jw_should_show_popup
multi_global_options Multi_options_g
#define MULTI_CREATE_NUM_TEXT
void help_overlay_maybe_blit(int overlay_id, int resolution_index)
int help_overlay_active(int overlay_id)
#define MULTI_XFER_SUCCESS
#define MULTI_COMMON_TEXT_META_CHAR
ho_sliders(char *name, int x1, int y1, int xt1, int yt1, int h, int _dot_w, int _dots)
#define MJ_LIST_START_SET(vl)
int Mj_speed_coords[GR_NUM_RESOLUTIONS][4]
int Mj_status_coords[GR_NUM_RESOLUTIONS][4]
void multi_create_init_as_client()
void multi_sync_display_status(const char *status, int index)
void multi_sync_scroll_info_up()
void send_post_sync_data_packet(net_player *p, int std_request)
int Multi_common_notify_stamp
#define MULTI_HO_SLIDER_VOICE_QOS
#define UI_INPUTBOX_FLAG_ESC_CLR
#define MJ_SCROLL_INFO_UP
int Ho_kill_coords[GR_NUM_RESOLUTIONS][4]
#define NETPLAYER_STATE_STD_HOST_SETUP
void send_mission_list_request(int what)
void multi_join_blit_protocol()
void multi_join_list_page_down()
cmission missions[MAX_CAMPAIGN_MISSIONS]
UI_CHECKBOX Multi_create_sw_checkbox
char * Multi_create_loading_fname[GR_NUM_RESOLUTIONS]
multi_local_options options
int Mj_ping_coords[GR_NUM_RESOLUTIONS][4]
void multi_debrief_server_left()
void send_endgame_packet(net_player *pl)
#define NETPLAYER_STATE_FLAG_ACK
void multi_start_game_close()
int Ms_status_coords[GR_NUM_RESOLUTIONS][4]
void multi_jw_do_netstuff()
UI_INPUTBOX Multi_sg_game_passwd
#define MULTI_CREATE_OVERLAY
#define MULTI_PWD_NUM_BUTTONS
void multi_create_draw_filter_buttons()
void init_multiplayer_stats()
void multi_join_button_pressed(int n)
struct fs_builtin_mission * game_find_builtin_mission(char *)
void fs2netd_update_ban_list()
int Multi_debrief_reported_tvt
void multi_host_options_close()
#define MISSION_TYPE_MULTI_TEAMS
int Mc_column3_w[GR_NUM_RESOLUTIONS]
int Game_weapons_tbl_valid
#define MULTI_END_ERROR_XFER_FAIL
void multi_xfer_abort(int handle)
int Multi_autojoin_join_stamp
UI_XSTR Multi_sync_text[GR_NUM_RESOLUTIONS][MULTI_SYNC_NUM_TEXT]
#define MISSION_TYPE_MULTI_DOGFIGHT