void frontnet_return_to_session_menu(struct GuiButton *gbtn) { if ( LbNetwork_Stop() ) { ERRORLOG("LbNetwork_Stop() failed"); return; } if ( setup_network_service(net_service_index_selected) ) frontend_set_state(FeSt_NET_SESSION); else frontend_set_state(FeSt_MAIN_MENU); }
void frontend_load_game(struct GuiButton *gbtn) { int i; i = frontend_load_game_button_to_index(gbtn); if (i < 0) return; game.numfield_15 = i; if (is_save_game_loadable(i)) { frontend_set_state(FeSt_LOAD_GAME); } else { save_catalogue_slot_disable(i); if (!initialise_load_game_slots()) frontend_set_state(FeSt_MAIN_MENU); } }
void frontnet_service_select(struct GuiButton *gbtn) { int srvidx; srvidx = (long)(gbtn->content) + net_service_scroll_offset - 45; if ( ((game.system_flags & GSF_AllowOnePlayer) != 0) && (srvidx+1 >= net_number_of_services) ) { fe_network_active = 0; frontend_set_state(FeSt_NETLAND_VIEW); } else if (srvidx <= 0) { frontend_set_state(FeSt_NET_SERIAL); } else { setup_network_service(srvidx); } }
void frontnet_return_to_main_menu(struct GuiButton *gbtn) { if ( LbNetwork_Stop() ) { ERRORLOG("LbNetwork_Stop() failed"); return; } frontend_set_state(FeSt_MAIN_MENU); }
void frontnet_session_join(struct GuiButton *gbtn) { long plyr_num; plyr_num = network_session_join(); if (plyr_num < 0) return; frontend_set_player_number(plyr_num); frontend_set_state(FeSt_NET_START); }
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; }
void frontbirthday_draw(void) { frontend_copy_background(); LbTextSetWindow(70, 70, 500, 340); LbTextSetFont(frontstory_font); lbDisplay.DrawFlags = Lb_SPRITE_OUTLINE; const char *name=get_team_birthday(); if ( name != NULL ) { unsigned short line_pos; line_pos = LbTextLineHeight(); LbTextDraw(0, 170-line_pos, get_string(GUIStr_HappyBirthday)); LbTextDraw(0, 170, name); } else { frontend_set_state(FeSt_INTRO); } }
void frontend_quit_high_score_table(struct GuiButton *gbtn) { FrontendMenuState nstate; nstate = get_menu_state_when_back_from_substate(FeSt_HIGH_SCORES); frontend_set_state(nstate); }
void fronttorture_input(void) { struct PlayerInfo *player; struct Packet *pckt; long x,y; PlayerNumber plyr_idx; long door_id; clear_packets(); player = get_my_player(); pckt = get_packet(my_player_number); // Get inputs and create packet if (player->victory_state == VicS_WonLevel) { if (left_button_clicked) { torture_left_button = 1; left_button_clicked = 0; } if ((lbKeyOn[KC_SPACE]) || (lbKeyOn[KC_RETURN]) || (lbKeyOn[KC_ESCAPE])) { lbKeyOn[KC_SPACE] = 0; lbKeyOn[KC_RETURN] = 0; lbKeyOn[KC_ESCAPE] = 0; pckt->action |= 0x01; } if (torture_left_button) pckt->action |= 0x02; if (left_button_held) pckt->action |= 0x04; pckt->actn_par1 = GetMouseX(); pckt->actn_par2 = GetMouseY(); } // Exchange packet with other players if ((game.system_flags & GSF_NetworkActive) != 0) { if (LbNetwork_Exchange(pckt)) ERRORLOG("LbNetwork_Exchange failed"); } // Determine the controlling player and get his mouse coords for (plyr_idx=0; plyr_idx < PLAYERS_COUNT; plyr_idx++) { player = get_player(plyr_idx); pckt = get_packet(plyr_idx); if ((pckt->action != 0) && (player->victory_state == VicS_WonLevel)) break; } if (plyr_idx < PLAYERS_COUNT) { x = pckt->actn_par1; y = pckt->actn_par2; } else { plyr_idx = my_player_number; player = get_player(plyr_idx); pckt = get_packet(plyr_idx); x = 0; y = 0; } if ((pckt->action & 0x01) != 0) { frontend_set_state(FeSt_LEVEL_STATS); if ((game.system_flags & GSF_NetworkActive) != 0) LbNetwork_Stop(); return; } // Get active door door_id = torture_door_over_point(x,y); if ((torture_door_selected != -1) && (torture_door_selected != door_id)) door_id = -1; // Make the action if (door_id == -1) torture_left_button = 0; switch (torture_state.action) { case 0: if (door_id != -1) { torture_state.action = 1; torture_sprite_direction = 1; torture_door_selected = door_id; torture_sprite_frame = 3; torture_end_sprite = 7; } break; case 1: if (torture_sprite_frame == torture_end_sprite) { if (door_id == -1) { torture_state.action = 2; torture_sprite_frame = 8; torture_end_sprite = 4; torture_sprite_direction = -1; } else if ((pckt->action & (0x02|0x04)) != 0) { torture_state.action = 3; torture_left_button = 0; torture_sprite_frame = 7; torture_end_sprite = 11; torture_sprite_direction = 1; torture_play_sound(torture_door_selected, true); } } break; case 2: if (torture_sprite_frame == torture_end_sprite) { torture_state.action = 0; torture_door_selected = -1; } break; case 3: if (torture_sprite_frame == torture_end_sprite) { if (((pckt->action & 0x04) == 0) || (door_id == -1)) { torture_state.action = 4; torture_sprite_frame = 12; torture_end_sprite = 8; torture_sprite_direction = -1; torture_play_sound(torture_door_selected, false); } } break; case 4: if (torture_sprite_frame == torture_end_sprite) { torture_state.action = 1; torture_sprite_frame = 7; torture_end_sprite = 7; } break; } }