// run the popup in a tight loop (no states) void multi_pinfo_popup_do() { int k; // if there was an error in initialization, return immediately if (Multi_pinfo_popup_error) { return; } // tight loop while (!Multi_pinfo_popup_done) { multi_pinfo_maybe_reload_pic(&Mp_pilot); multi_pinfo_maybe_reload_pic(&Mp_squad); // process the window k = Multi_pinfo_window.process(); switch (k) { case KEY_ESC : Multi_pinfo_popup_done = 1; break; } // check button presses multi_pinfo_popup_check_buttons(); // set frametime and run background stuff game_set_frametime(-1); game_do_state_common(gameseq_get_state()); // draw the background bitmap and the ui window over it Assert(Multi_pinfo_screen_save != -1); gr_reset_clip(); gr_restore_screen(Multi_pinfo_screen_save); // grey the screen gr_set_shader(&Grey_shader); gr_shade(0, 0, gr_screen.clip_width, gr_screen.clip_height, false); // draw the background bitmap gr_set_bitmap(Multi_pinfo_bitmap); gr_bitmap(0, 0); // blit the selected pilot image multi_pinfo_blit_pilot_image(); // blit the squadron logo multi_pinfo_blit_squadron_logo(); // blit the player statistics multi_pinfo_blit_player_stats(); // draw the ui window and flip Multi_pinfo_window.draw(); gr_flip(); } }
void context_help_grey_screen() { gr_set_shader(&Grey_shader); gr_shade(0, 0, gr_screen.clip_width, gr_screen.clip_height, false); }
void context_help_grey_screen() { gr_set_shader(&Grey_shader); gr_shade(0,0,gr_screen.clip_width, gr_screen.clip_height, GR_RESIZE_NONE); }
// displays (renders) the training message to the screen void message_training_display() { char *str, buf[256]; int i, z, x, y, height, mode, count; Training_msg_visible = 0; message_training_que_check(); training_obj_display(); if (Training_failure){ return; } if (timestamp_elapsed(Training_msg_timestamp) || !strlen(Training_text)){ return; } message_translate_tokens(Training_buf, Training_text); training_process_msg(Training_text); Training_num_lines = split_str(Training_buf, TRAINING_LINE_WIDTH, Training_line_sizes, Training_lines, MAX_TRAINING_MSG_LINES); Assert(Training_num_lines > 0); for (i=0; i<Training_num_lines; i++) { Training_lines[i][Training_line_sizes[i]] = 0; drop_leading_white_space(Training_lines[i]); } if (Training_num_lines <= 0){ return; } height = gr_get_font_height(); gr_set_shader(&Training_msg_glass); gr_shade(Training_msg_window_coords[gr_screen.res][0], Training_msg_window_coords[gr_screen.res][1], TRAINING_MSG_WINDOW_WIDTH, Training_num_lines * height + height); gr_set_color_fast(&Color_bright_blue); mode = count = 0; Training_msg_visible = 1; for (i=0; i<Training_num_lines; i++) { // loop through all lines of message str = Training_lines[i]; z = 0; x = Training_msg_window_coords[gr_screen.res][0] + (TRAINING_MSG_WINDOW_WIDTH - TRAINING_LINE_WIDTH) / 2; y = Training_msg_window_coords[gr_screen.res][1] + i * height + height / 2 + 1; while (*str) { // loop through each character of each line if ((count < MAX_TRAINING_MSG_MODS) && (str == Training_msg_mods[count].pos)) { buf[z] = 0; gr_printf(x, y, buf); gr_get_string_size(&z, NULL, buf); x += z; z = 0; mode = Training_msg_mods[count++].mode; switch (mode) { case TMMOD_NORMAL: gr_set_color_fast(&Color_bright_blue); break; case TMMOD_BOLD: gr_set_color_fast(&Color_white); break; } } buf[z++] = *str++; } if (z) { buf[z] = 0; gr_printf(x, y, "%s", buf); } } Training_msg_method = 0; // if (Training_msg_method) { // char *msg = "Press a key to continue"; // gr_get_string_size(&i, NULL, msg); // gr_printf(TRAINING_MSG_WINDOW_X + TRAINING_MSG_WINDOW_WIDTH / 2 - i / 2, TRAINING_MSG_WINDOW_Y + (Training_num_lines + 2) * height, msg); // } if ((Training_voice >= 0) && (Training_num_lines > 0) && !(Training_msg_timestamp)) { if (Training_voice_type) z = audiostream_is_playing(Training_voice_handle); else z = snd_is_playing(Training_voice_handle); if (!z) Training_msg_timestamp = timestamp(2000); // 2 second delay } }
/** * Displays (renders) the training message to the screen */ void HudGaugeTrainingMessages::render(float frametime) { const char *str; char buf[256]; int i, z, x, y, height, mode, count; if (Training_failure){ return; } if (timestamp_elapsed(Training_message_timestamp) || !strlen(Training_buf)){ return; } if (Training_num_lines <= 0){ return; } gr_set_screen_scale(base_w, base_h); height = gr_get_font_height(); gr_set_shader(&Training_msg_glass); gr_shade(position[0], position[1], TRAINING_MESSAGE_WINDOW_WIDTH, Training_num_lines * height + height); gr_reset_screen_scale(); gr_set_color_fast(&Color_bright_blue); mode = count = 0; for (i=0; i<Training_num_lines; i++) { // loop through all lines of message str = Training_lines[i]; z = 0; x = position[0] + (TRAINING_MESSAGE_WINDOW_WIDTH - TRAINING_LINE_WIDTH) / 2; y = position[1] + i * height + height / 2 + 1; while ((str - Training_lines[i]) < Training_line_lengths[i]) { // loop through each character of each line if ((count < MAX_TRAINING_MESSAGE_MODS) && (str == Training_message_mods[count].pos)) { buf[z] = 0; renderPrintf(x, y, buf); gr_get_string_size(&z, NULL, buf); x += z; z = 0; mode = Training_message_mods[count++].mode; switch (mode) { case TMMOD_NORMAL: gr_set_color_fast(&Color_bright_blue); break; case TMMOD_BOLD: gr_set_color_fast(&Color_white); break; } } buf[z++] = *str++; } if (z) { buf[z] = 0; renderPrintf(x, y, "%s", buf); } } }