// do frame void multi_df_debrief_do() { int k, new_k; char buf[256]; k = chatbox_process(); new_k = Multi_df_window.process(k, 0); // process keypresses switch(new_k){ case KEY_ESC: multi_debrief_esc_hit(); break; } // process buttons multi_df_process_buttons(); // music stuff common_music_do(); // process debriefing details multi_debrief_do_frame(); // draw the background GR_MAYBE_CLEAR_RES(Multi_df_background_bitmap); if (Multi_df_background_bitmap >= 0) { gr_set_bitmap(Multi_df_background_bitmap); gr_bitmap(0, 0, GR_RESIZE_MENU); } // draw the window Multi_df_window.draw(); // kill matrix multi_df_blit_kill_matrix(); // render the chatbox chatbox_render(); // draw the mission title strcpy_s(buf, The_mission.name); font::force_fit_string(buf, 255, Kill_matrix_title_coords[gr_screen.res][2]); gr_set_color_fast(&Color_bright_white); gr_string(Kill_matrix_title_coords[gr_screen.res][0], Kill_matrix_title_coords[gr_screen.res][1], buf, GR_RESIZE_MENU); // flip gr_flip(); }
// do void fiction_viewer_do_frame(float frametime) { int i, k, w, h; // make sure we exist if (!Fiction_viewer_inited) { fiction_viewer_exit(); return; } // process keys k = Fiction_viewer_window.process() & ~KEY_DEBUGGED; switch (k) { case KEY_ESC: common_music_close(); gameseq_post_event(GS_EVENT_MAIN_MENU); return; } // process button presses for (i = 0; i < NUM_FVW_BUTTONS; i++) if (Fiction_viewer_buttons[Fiction_viewer_ui][gr_screen.res][i].button.pressed()) fiction_viewer_button_pressed(i); common_music_do(); // clear GR_MAYBE_CLEAR_RES(Fiction_viewer_bitmap); if (Fiction_viewer_bitmap >= 0) { gr_set_bitmap(Fiction_viewer_bitmap); gr_bitmap(0, 0, GR_RESIZE_MENU); } // draw the window Fiction_viewer_window.draw(); // render the briefing text brief_render_text(Top_fiction_viewer_text_line, Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][0], Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][1], Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][3], frametime); // maybe output the "more" indicator if ((Fiction_viewer_text_max_lines + Top_fiction_viewer_text_line) < Num_brief_text_lines[0]) { use_std_font(); // can be scrolled down int more_txt_x = Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][0] + (Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][2]/2) - 10; int more_txt_y = Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][1] + Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][3]; // located below text, centered gr_get_string_size(&w, &h, XSTR("more", 1469), strlen(XSTR("more", 1469))); gr_set_color_fast(&Color_black); gr_rect(more_txt_x-2, more_txt_y, w+3, h, GR_RESIZE_MENU); gr_set_color_fast(&Color_more_indicator); gr_string(more_txt_x, more_txt_y, XSTR("more", 1469), GR_RESIZE_MENU); // base location on the input x and y? use_fv_font(); } gr_flip(); }
// do void loop_brief_do(float frametime) { int k; int idx; // process keys k = Loop_brief_window.process(); switch (k) { case KEY_ESC: int do_loop = 0; // this popup should be straight forward, and also not allow you to get out // of it without actually picking one of the two options do_loop = popup(PF_USE_NEGATIVE_ICON | PF_USE_AFFIRMATIVE_ICON | PF_IGNORE_ESC | PF_BODY_BIG, 2, XSTR("Decline", 1467), XSTR("Accept", 1035), XSTR("You must either Accept or Decline before returning to the Main Hall", 1618)); // if we accepted moving into loop then set it up for the next time the user plays if (do_loop == 1) { // select the loop mission Campaign.loop_enabled = 1; Campaign.loop_reentry = Campaign.next_mission; // save reentry pt, so we can break out of loop Campaign.next_mission = Campaign.loop_mission; } gameseq_post_event(GS_EVENT_MAIN_MENU); return; } // process button presses for (idx=0; idx<NUM_LOOP_BRIEF_BUTTONS; idx++){ if (Loop_buttons[gr_screen.res][idx].button.pressed()){ loop_brief_button_pressed(idx); } } common_music_do(); // clear GR_MAYBE_CLEAR_RES(Loop_brief_bitmap); if (Loop_brief_bitmap >= 0) { gr_set_bitmap(Loop_brief_bitmap); gr_bitmap(0, 0, GR_RESIZE_MENU); } // draw the window Loop_brief_window.draw(); // render the briefing text brief_render_text(0, Loop_brief_text_coords[gr_screen.res][0], Loop_brief_text_coords[gr_screen.res][1], Loop_brief_text_coords[gr_screen.res][3], flFrametime); if(Loop_anim.num_frames > 0) { int x; int y; bm_get_info((Loop_anim.streaming) ? Loop_anim.bitmap_id : Loop_anim.first_frame, &x, &y, NULL, NULL, NULL); x = Loop_brief_anim_center_coords[gr_screen.res][0] - x / 2; y = Loop_brief_anim_center_coords[gr_screen.res][1] - y / 2; generic_anim_render(&Loop_anim, frametime, x, y, true); } // render all anims anim_render_all(GS_STATE_LOOP_BRIEF, flFrametime); gr_flip(); }
void cmd_brief_do_frame(float frametime) { char buf[40]; int i, k, w, h, x, y; // if no command briefing exists, skip this screen. if (!Cmd_brief_inited) { cmd_brief_exit(); return; } if ( help_overlay_active(CMD_BRIEF_OVERLAY) ) { Cmd_brief_buttons[gr_screen.res][CMD_BRIEF_BUTTON_HELP].button.reset_status(); Ui_window.set_ignore_gadgets(1); } k = Ui_window.process() & ~KEY_DEBUGGED; if ( (k > 0) || B1_JUST_RELEASED ) { if ( help_overlay_active(CMD_BRIEF_OVERLAY) ) { help_overlay_set_state(CMD_BRIEF_OVERLAY, 0); Ui_window.set_ignore_gadgets(0); k = 0; } } if ( !help_overlay_active(CMD_BRIEF_OVERLAY) ) { Ui_window.set_ignore_gadgets(0); } switch (k) { case KEY_ESC: common_music_close(); gameseq_post_event(GS_EVENT_MAIN_MENU); break; } // end switch for (i=0; i<NUM_CMD_BRIEF_BUTTONS; i++){ if (Cmd_brief_buttons[gr_screen.res][i].button.pressed()){ cmd_brief_button_pressed(i); } } cmd_brief_voice_play(Cur_stage); common_music_do(); if (cmd_brief_check_stage_done() && Player->auto_advance && (Cur_stage < Cur_cmd_brief->num_stages - 1)){ if((Cur_Anim.num_frames <= 1) || Cur_Anim.done_playing) { cmd_brief_new_stage(Cur_stage + 1); } } GR_MAYBE_CLEAR_RES(Cmd_brief_background_bitmap); if (Cmd_brief_background_bitmap >= 0) { gr_set_bitmap(Cmd_brief_background_bitmap); gr_bitmap(0, 0, GR_RESIZE_MENU); } if(Cur_Anim.num_frames > 0) { bm_get_info((Cur_Anim.streaming) ? Cur_Anim.bitmap_id : Cur_Anim.first_frame, &x, &y, NULL, NULL, NULL); x = Cmd_image_center_coords[gr_screen.res][CMD_X_COORD] - x / 2; y = Cmd_image_center_coords[gr_screen.res][CMD_Y_COORD] - y / 2; generic_anim_render(&Cur_Anim, (Cmd_brief_paused) ? 0 : frametime, x, y, true); } Ui_window.draw(); if (!Player->auto_advance){ Cmd_brief_buttons[gr_screen.res][CMD_BRIEF_BUTTON_PAUSE].button.draw_forced(2); } gr_set_font(FONT1); gr_set_color_fast(&Color_text_heading); sprintf(buf, XSTR( "Stage %d of %d", 464), Cur_stage + 1, Cur_cmd_brief->num_stages); gr_get_string_size(&w, NULL, buf); gr_string(Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_X_COORD] + Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_W_COORD] - w, Cmd_stage_y[gr_screen.res], buf, GR_RESIZE_MENU); if (brief_render_text(Top_cmd_brief_text_line, Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_X_COORD], Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_Y_COORD], Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_H_COORD], frametime, 0, 1)){ Voice_good_to_go = 1; } if (gr_screen.res == 1) { Max_cmdbrief_Lines = 166/gr_get_font_height(); //Make the max number of lines dependent on the font height. 225 and 85 are magic numbers, based on the window size in retail. } else { Max_cmdbrief_Lines = 116/gr_get_font_height(); } // maybe output the "more" indicator if ( Max_cmdbrief_Lines < Num_brief_text_lines[0] ) { // can be scrolled down int more_txt_x = Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_X_COORD] + (Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_W_COORD]/2) - 10; int more_txt_y = Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_Y_COORD] + Cmd_text_wnd_coords[Uses_scroll_buttons][gr_screen.res][CMD_H_COORD] - 2; // located below brief text, centered gr_get_string_size(&w, &h, XSTR("more", 1469), strlen(XSTR("more", 1469))); gr_set_color_fast(&Color_black); gr_rect(more_txt_x-2, more_txt_y, w+3, h, GR_RESIZE_MENU); gr_set_color_fast(&Color_red); gr_string(more_txt_x, more_txt_y, XSTR("more", 1469), GR_RESIZE_MENU); // base location on the input x and y? } // blit help overlay if active help_overlay_maybe_blit(CMD_BRIEF_OVERLAY); gr_flip(); }