// initialize the pause screen void pause_init() { // if we're already paused. do nothing if ( Paused ) { return; } Assert( !(Game_mode & GM_MULTIPLAYER) ); // pause all weapon sounds weapon_pause_sounds(); if (Pause_type == PAUSE_TYPE_NORMAL) { Pause_saved_screen = gr_save_screen(); } // pause all game music audiostream_pause_all(); Pause_win.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0); Pause_background_bitmap = bm_load(Pause_bmp_name[gr_screen.res]); Paused = 1; }
// initialize the pause screen void pause_init() { // if we're already paused. do nothing if (Paused) { return; } Assert(!(Game_mode & GM_MULTIPLAYER)); // pause all beam weapon sounds beam_pause_sounds(); if (Pause_type == PAUSE_TYPE_NORMAL) { Pause_saved_screen = gr_save_screen(); } // pause all game music audiostream_pause_all(); //JAS: REMOVED CALL TO SET INTERFACE PALETTE TO GET RID OF SCREEN CLEAR WHEN PAUSING //common_set_interface_palette(); // set the interface palette Pause_win.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0); Pause_background_bitmap = bm_load(Pause_bmp_name[gr_screen.res]); Paused = 1; }
int popup_do_with_condition(popup_info *pi, int flags, int(*condition)()) { int screen_id, choice = -1, done = 0; int test; screen_id = gr_save_screen(); if ( popup_init(pi, flags) == -1 ) return -1; int old_max_w_unscaled = gr_screen.max_w_unscaled; int old_max_h_unscaled = gr_screen.max_h_unscaled; int old_max_w_unscaled_zoomed = gr_screen.max_w_unscaled_zoomed; int old_max_h_unscaled_zoomed = gr_screen.max_h_unscaled_zoomed; gr_reset_screen_scale(); while(!done) { int k; os_poll(); game_set_frametime(-1); game_do_state_common(gameseq_get_state()); // do stuff common to all states gr_restore_screen(screen_id); // draw one frame first Popup_window.draw(); popup_force_draw_buttons(pi); popup_draw_msg_text(pi, flags); popup_draw_button_text(pi, flags); gr_flip(); // test the condition function or process for the window if ((test = condition()) > 0) { done = 1; choice = test; } else { k = Popup_window.process(); // poll for input, handle mouse choice = popup_process_keys(pi, k, flags); if ( choice != POPUP_NOCHANGE ) { done=1; } if ( !done ) { choice = popup_check_buttons(pi); if ( choice != POPUP_NOCHANGE ) { done=1; } } } } gr_set_screen_scale(old_max_w_unscaled, old_max_h_unscaled, old_max_w_unscaled_zoomed, old_max_h_unscaled_zoomed); popup_close(pi,screen_id); return choice; }
// exit: -1 => error // 0..nchoices-1 => choice int popup_do(popup_info *pi, int flags) { int screen_id, choice = -1, done = 0; if ( popup_init(pi, flags) == -1 ){ return -1; } screen_id = gr_save_screen(); int old_max_w_unscaled = gr_screen.max_w_unscaled; int old_max_h_unscaled = gr_screen.max_h_unscaled; int old_max_w_unscaled_zoomed = gr_screen.max_w_unscaled_zoomed; int old_max_h_unscaled_zoomed = gr_screen.max_h_unscaled_zoomed; gr_reset_screen_scale(); while(!done) { int k; os_poll(); // if we were killed by a call to popup_kill_any_active(), kill the popup if(Popup_should_die){ choice = -1; break; } // if we're flagged as should be running the state underneath, then do so if(flags & PF_RUN_STATE){ game_do_state(gameseq_get_state()); } // otherwise just run the common functions (for networking,etc) else { game_set_frametime(-1); game_do_state_common(gameseq_get_state(),flags & PF_NO_NETWORKING); // do stuff common to all states } k = Popup_window.process(); // poll for input, handle mouse choice = popup_process_keys(pi, k, flags); if ( choice != POPUP_NOCHANGE ) { done=1; } if ( !done ) { choice = popup_check_buttons(pi); if ( choice != POPUP_NOCHANGE ) { done=1; } } // don't draw anything if(!(flags & PF_RUN_STATE)){ gr_restore_screen(screen_id); } // if this is an input popup, store the input text if(flags & PF_INPUT){ Popup_input.get_text(pi->input_text); } Popup_window.draw(); popup_force_draw_buttons(pi); popup_draw_msg_text(pi, flags); popup_draw_button_text(pi, flags); gr_flip(); } gr_set_screen_scale(old_max_w_unscaled, old_max_h_unscaled, old_max_w_unscaled_zoomed, old_max_h_unscaled_zoomed); popup_close(pi,screen_id); return choice; }
// initialize all popup details (graphics, etc) void multi_pinfo_popup_init(net_player *np) { int idx; // no errors to start with Multi_pinfo_popup_error = 0; // shouldn't be done Multi_pinfo_popup_done = 0; // store the background as it currently is Multi_pinfo_screen_save = gr_save_screen(); if(Multi_pinfo_screen_save == -1){ Multi_pinfo_popup_error = 1; return; } // create the interface window Multi_pinfo_window.create(0,0,gr_screen.max_w_unscaled,gr_screen.max_h_unscaled,0); Multi_pinfo_window.set_mask_bmap(Multi_pinfo_bitmap_mask[gr_screen.res]); // load the background bitmap Multi_pinfo_bitmap = bm_load(Multi_pinfo_bitmap_name[gr_screen.res]); if(Multi_pinfo_bitmap < 0){ Multi_pinfo_popup_error = 1; return; } // backup hardware textures setting and bash to max Multi_pinfo_hardware_texture_backup = Detail.hardware_textures; Detail.hardware_textures = MAX_DETAIL_LEVEL; // zero bitmap info Mp_pilot.bitmap = -1; strcpy_s(Mp_pilot.filename, ""); Mp_squad.bitmap = -1; strcpy_s(Mp_squad.filename, ""); // set the player status multi_pinfo_reset_player(np); // create the interface buttons for(idx=0;idx<MULTI_PINFO_NUM_BUTTONS;idx++){ // create the object Multi_pinfo_buttons[gr_screen.res][idx].button.create(&Multi_pinfo_window, "", Multi_pinfo_buttons[gr_screen.res][idx].x, Multi_pinfo_buttons[gr_screen.res][idx].y, 1, 1, 0, 1); // set the sound to play when highlighted Multi_pinfo_buttons[gr_screen.res][idx].button.set_highlight_action(common_play_highlight_sound); // set the ani for the button Multi_pinfo_buttons[gr_screen.res][idx].button.set_bmaps(Multi_pinfo_buttons[gr_screen.res][idx].filename); // set the hotspot Multi_pinfo_buttons[gr_screen.res][idx].button.link_hotspot(Multi_pinfo_buttons[gr_screen.res][idx].hotspot); } // add xstrs for(idx=0; idx<MULTI_PINFO_NUM_TEXT; idx++){ Multi_pinfo_window.add_XSTR(&Multi_pinfo_text[gr_screen.res][idx]); } // initialize strings Multi_pinfo_stats_labels[0] = vm_strdup(XSTR("Rank", 1007)); Multi_pinfo_stats_labels[1] = vm_strdup(XSTR("Missions Flown", 1008)); Multi_pinfo_stats_labels[2] = vm_strdup(XSTR("Flight Time", 1009)); Multi_pinfo_stats_labels[3] = vm_strdup(XSTR("Last Flown",1010)); Multi_pinfo_stats_labels[4] = vm_strdup(XSTR("Total Kills", 115)); Multi_pinfo_stats_labels[5] = vm_strdup(XSTR("Primary Shots Fired", 1012)); Multi_pinfo_stats_labels[6] = vm_strdup(XSTR("Primary Hit %", 1013)); Multi_pinfo_stats_labels[7] = vm_strdup(XSTR("Secondary Shots Fired", 1014)); Multi_pinfo_stats_labels[8] = vm_strdup(XSTR("Secondary Hit %", 1015)); }
void multi_pause_init() { int i; // if we're already paused. do nothing if ( Multi_paused ) { return; } Assert( Game_mode & GM_MULTIPLAYER ); if ( !(Game_mode & GM_MULTIPLAYER) ) return; // pause all beam weapon sounds weapon_pause_sounds(); // standalone shouldn't be doing any freespace interface stuff if (Game_mode & GM_STANDALONE_SERVER) { std_debug_set_standalone_state_string("Multi paused do"); } // everyone else should be doing UI stuff else { // pause all game music audiostream_pause_all(); // switch off the text messaging system if it is active multi_msg_text_flush(); if ( Multi_paused_screen_id == -1 ) Multi_paused_screen_id = gr_save_screen(); // create ui window Multi_paused_window.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0); Multi_paused_window.set_mask_bmap(Multi_paused_bg_mask[gr_screen.res]); Multi_paused_background = bm_load(Multi_paused_bg_fname[gr_screen.res]); for (i=0; i<MULTI_PAUSED_NUM_BUTTONS; i++) { // create the button Multi_paused_buttons[gr_screen.res][i].button.create(&Multi_paused_window, "", Multi_paused_buttons[gr_screen.res][i].x, Multi_paused_buttons[gr_screen.res][i].y, 1, 1, 0, 1); // set the highlight action Multi_paused_buttons[gr_screen.res][i].button.set_highlight_action(common_play_highlight_sound); // set the ani Multi_paused_buttons[gr_screen.res][i].button.set_bmaps(Multi_paused_buttons[gr_screen.res][i].filename); // set the hotspot Multi_paused_buttons[gr_screen.res][i].button.link_hotspot(Multi_paused_buttons[gr_screen.res][i].hotspot); } // add text for(i=0; i<MULTI_PAUSED_NUM_TEXT; i++){ Multi_paused_window.add_XSTR(&Multi_paused_text[gr_screen.res][i]); } // close any instances of a chatbox chatbox_close(); // intialize our custom chatbox chatbox_create(CHATBOX_FLAG_MULTI_PAUSED); } Multi_paused = 1; // reset timestamps multi_reset_timestamps(); }