long network_session_join(void) { unsigned long plyr_num; void *conn_options; switch (net_service_index_selected) { case 1: modem_dev.field_0 = 0; modem_dev.field_4 = 0; strcpy(modem_dev.field_58, net_config_info.str_join); modem_dev.field_AC = modem_initialise_callback; modem_dev.field_B0 = modem_connect_callback; conn_options = &modem_dev; break; default: display_attempting_to_join_message(); conn_options = NULL; break; } if ( LbNetwork_Join(net_session[net_session_index_active], net_player_name, &plyr_num, conn_options) ) { if (net_service_index_selected == 1) process_network_error(modem_dev.field_A8); else process_network_error(-802); return -1; } return plyr_num; }
void frontnet_session_create(struct GuiButton *gbtn) { struct TbNetworkSessionNameEntry *nsname; unsigned long plyr_num; void *conn_options; char *text; char *txpos; long i,idx; idx = 0; for (i=0; i < net_number_of_sessions; i++) { nsname = net_session[i]; if (nsname == NULL) continue; text = buf_sprintf("%s",nsname->text); txpos = strchr(text, '\''); if (txpos != NULL) *txpos = '\0'; if (strcmp(text, net_player_name) != 0) idx++; } if (idx > 0) text = buf_sprintf("%s (%d)", net_player_name, idx+1); else text = buf_sprintf("%s", net_player_name); switch (net_service_index_selected) { case 1: modem_dev.field_0 = 0; modem_dev.field_4 = 0; strcpy(modem_dev.field_58, net_config_info.str_join); modem_dev.field_AC = modem_initialise_callback; modem_dev.field_B0 = modem_connect_callback; conn_options = &modem_dev; break; default: conn_options = NULL; break; } if (LbNetwork_Create(text, net_player_name, &plyr_num, conn_options)) { if (net_service_index_selected == 1) process_network_error(modem_dev.field_A8); else process_network_error(-801); return; } frontend_set_player_number(plyr_num); fe_computer_players = 0; frontend_set_state(FeSt_NET_START); }
short setup_network_service(int srvidx) { struct ServiceInitData *init_data; long maxplayrs; switch (srvidx) { case 0: maxplayrs = 2; init_data = &net_serial_data; set_flag_byte(&game.flags_font,FFlg_unk10,true); SYNCMSG("Initializing %d-players serial network",maxplayrs); break; case 1: maxplayrs = 2; init_data = &net_modem_data; set_flag_byte(&game.flags_font,FFlg_unk10,true); SYNCMSG("Initializing %d-players modem network",maxplayrs); break; case 2: maxplayrs = 4; init_data = NULL; set_flag_byte(&game.flags_font,FFlg_unk10,false); SYNCMSG("Initializing %d-players IPX network",maxplayrs); break; default: maxplayrs = 4; init_data = NULL; set_flag_byte(&game.flags_font,FFlg_unk10,false); SYNCMSG("Initializing %d-players type %d network",maxplayrs,srvidx); break; } LbMemorySet(&net_player_info[0], 0, sizeof(struct TbNetworkPlayerInfo)); if ( LbNetwork_Init(srvidx, maxplayrs, &net_screen_packet, sizeof(struct ScreenPacket), &net_player_info[0], init_data) ) { if (srvidx != 0) process_network_error(-800); return 0; } net_service_index_selected = srvidx; if ((game.flags_font & FFlg_unk10) != 0) LbNetwork_ChangeExchangeTimeout(10); frontend_set_state(FeSt_NET_SESSION); return 1; }