void initialise_apache_upfront_display (void) { texture_screen = create_system_texture_screen (128, 128, TEXTURE_INDEX_AVCKPT_DISPLAY_UPFRONT, TEXTURE_TYPE_SINGLEALPHA); line1[0] = '\0'; line2[0] = '\0'; line3[0] = '\0'; line4[0] = '\0'; set_rgb_colour (text_colour, 0, 255, 0, 255); set_rgb_colour (clear_colour, 0, 255, 0, 0); }
void initialise_common_hud (void) { display_hud_layout_grid = FALSE; hud_bob_up_overlay = FALSE; hud_bob_up_heading = 0.0; hud_bob_up_position.x = 0.0; hud_bob_up_position.y = 0.0; hud_bob_up_position.z = 0.0; hud_mode = HUD_MODE_NAVIGATION; set_rgb_colour (hud_colour_table[HUD_COL_WHITE], 255, 255, 240, 255); set_rgb_colour (hud_colour_table[HUD_COL_RED], 255, 20, 0, 255); set_rgb_colour (hud_colour_table[HUD_COL_AMBER], 255, 153, 18, 255); set_rgb_colour (hud_colour_table[HUD_COL_GOLD], 255, 215, 0, 255); set_rgb_colour (hud_colour_table[HUD_COL_GREEN], 0, 255, 127, 255); set_rgb_colour (hud_colour_table[HUD_COL_CYAN], 0, 255, 255, 255); set_rgb_colour (hud_colour_table[HUD_COL_BLUE], 30, 144, 255, 255); set_rgb_colour (hud_colour_table[HUD_COL_BLACK], 0, 0, 0, 255); hud_colour = hud_colour_table[get_global_hud_colour ()]; }
void initialise_default_instrument_colours (void) { set_rgb_colour (white_needle_colour_level1, 200, 200, 200, 0); set_rgb_colour (red_needle_colour_level1, 188, 58, 26, 0); set_rgb_colour (white_digit_colour_level1, 200, 200, 200, 0); set_rgb_colour (white_needle_colour_level2, 192, 0, 0, 0); set_rgb_colour (red_needle_colour_level2, 192, 0, 0, 0); set_rgb_colour (white_digit_colour_level2, 192, 0, 0, 0); set_rgb_colour (white_needle_colour_level3, 192, 0, 0, 0); set_rgb_colour (red_needle_colour_level3, 192, 0, 0, 0); set_rgb_colour (white_digit_colour_level3, 192, 0, 0, 0); }
static void initialise_hud_colours(void) { set_rgb_colour(hind_hud_colours[0], 192, 255,128, 255); set_rgb_colour(hind_hud_colours[1], 128, 255, 48, 255); set_rgb_colour(hind_hud_colours[2], 48, 64, 16, 255); set_rgb_colour(hind_hud_colours[3], 255, 220, 64, 255); set_rgb_colour(backup_sight_colour, 255, 50, 0, 255); current_hud_colour = 0; hud_colour = hind_hud_colours[current_hud_colour]; set_rgb_colour (clear_hud_colour, 255, 255, 255, 0); }
void draw_apache_altitude_counter(void) { set_active_screen (altitude_counter_screen); if (lock_screen (altitude_counter_screen)) { rgb_colour bg_colour; set_rgb_colour(bg_colour, 20, 20, 25, 255); set_block (0, 0, ALTITUDE_COUNTER_WIDTH - 1, ALTITUDE_COUNTER_HEIGHT - 1, bg_colour); draw_altitude_counter_digits(); flush_screen_texture_graphics(altitude_counter_screen); unlock_screen (altitude_counter_screen); } set_active_screen (video_screen); }
static void draw_altitude_counter_digits(void) { float x_org = 0.0, y_org = 0.0, x_min, y_min, x_max, y_max; rgb_colour fg_colour; int altitude = (int)(feet(current_flight_dynamics->barometric_altitude.value) / 100.0) % 100; char buffer[20]; x_min = x_org; y_min = y_org; x_max = x_org + ALTITUDE_COUNTER_WIDTH - 0.001; y_max = y_org + ALTITUDE_COUNTER_HEIGHT - 0.001; set_viewport (x_min, y_min, x_max, y_max); set_rgb_colour(fg_colour, 180, 180, 180, 255); set_mono_font_colour(fg_colour); sprintf(buffer, "%02d", altitude); set_mono_font_type (MONO_FONT_TYPE_8X14); set_mono_font_position(13.0, 3.0); print_mono_font_string(buffer); }
void draw_hind_hud_on_texture (void) { // // set active 3D environment now else 2D clipping will be affected // set_main_3d_full_screen_params (DISPLAY_3D_TINT_CLEAR, DISPLAY_3D_LIGHT_LEVEL_HIGH, DISPLAY_3D_NOISE_LEVEL_NONE); set_3d_active_environment (main_3d_env); //////////////////////////////////////// // // set up HUD 2D environment // //////////////////////////////////////// set_2d_active_environment (hud_env); // // window // set_2d_window (hud_env, HUD_WINDOW_X_MIN, HUD_WINDOW_Y_MIN, HUD_WINDOW_X_MAX, HUD_WINDOW_Y_MAX); if (hud_display_model) { // move HUD coordinate system with head movements to simulate the collimation effect (focus on infinity) float head_offset_x = 0.0, head_offset_y = 0.0, head_offset_z = 0.0; if (get_view_mode() == VIEW_MODE_COCKPIT_PANEL_SPECIAL_HAVOC_HUD) { if (custom_3d_models.arneh_mi24v_cockpit) get_hind_3d_cockpit_hud_view_position(&head_offset_x, &head_offset_y, &head_offset_z); } else { head_offset_x = -getViewpointOffsetX(head_offset_x); head_offset_y = -getViewpointOffsetY(head_offset_y); head_offset_z = -getViewpointOffsetY(head_offset_z); head_offset_x += wide_cockpit_position[WIDEVIEW_HIND_PILOT].c.x; head_offset_y += wide_cockpit_position[WIDEVIEW_HIND_PILOT].c.y; head_offset_z += wide_cockpit_position[WIDEVIEW_HIND_PILOT].c.z; } { // move texture UV coordinates to move and scale the texture unsigned i; for (i=0; i<num_texture_coordinates; i++) { float scale, u = hud_texture_uv_coordinates[i].u, v = hud_texture_uv_coordinates[i].v; // scale hud to keep same absolute size no matter distance to hud u -= 0.5; v -= 0.5; hud_distance = hud_position_z - head_offset_z; scale = hud_position_z / hud_distance; u *= scale; v *= scale; u += 0.5; v += 0.5; // then displace hud to keep it directly in front of pilot's position u -= (scale) * head_offset_x / hud_width; v += (scale) * (head_offset_y - hud_position_y) / hud_height; hud_display_model->surface_texture_points[i].u = u; hud_display_model->surface_texture_points[i].v = v; } } } // // viewport // draw_large_hud = FALSE; hud_viewport_size = HUD_VIEWPORT_SMALL_SIZE; hud_viewport_x_org = HUD_VIEWPORT_TEXTURE_X_ORG; hud_viewport_y_org = HUD_VIEWPORT_TEXTURE_Y_ORG; hud_viewport_x_min = hud_viewport_x_org - (hud_viewport_size * 0.5); hud_viewport_y_min = hud_viewport_y_org - (hud_viewport_size * 0.5); hud_viewport_x_max = hud_viewport_x_org + (hud_viewport_size * 0.5) - 0.001; hud_viewport_y_max = hud_viewport_y_org + (hud_viewport_size * 0.5) - 0.001; set_2d_viewport (hud_env, hud_viewport_x_min, hud_viewport_y_min, hud_viewport_x_max, hud_viewport_y_max); // // get screen co-ords (vitural cockpit texture - scaling only works near screen centre) // hud_screen_x_min = full_screen_x_mid - ((HUD_VIEWPORT_SMALL_SIZE / (640.0 * 2.0)) * full_screen_width); hud_screen_y_min = full_screen_y_mid - ((HUD_VIEWPORT_SMALL_SIZE / (480.0 * 2.0)) * full_screen_height); hud_screen_x_max = full_screen_x_mid + ((HUD_VIEWPORT_SMALL_SIZE / (640.0 * 2.0)) * full_screen_width) - 0.001; hud_screen_y_max = full_screen_y_mid + ((HUD_VIEWPORT_SMALL_SIZE / (480.0 * 2.0)) * full_screen_height) - 0.001; hud_screen_x_scale = 640.0 / full_screen_width; hud_screen_y_scale = 480.0 / full_screen_height; //////////////////////////////////////// // // draw HUD // //////////////////////////////////////// set_active_screen (hud_texture_screen); if (lock_screen (hud_texture_screen)) { rgb_colour clear_hud_colour; if (backup_sight_active) { set_rgb_colour (clear_hud_colour, backup_sight_colour.r, backup_sight_colour.g, backup_sight_colour.b, 0); } else { set_rgb_colour (clear_hud_colour, hud_colour.r, hud_colour.g, hud_colour.b, 0); } set_block (0, 0, HUD_VIEWPORT_SMALL_SIZE - 1, HUD_VIEWPORT_SMALL_SIZE - 1, clear_hud_colour); if (electrical_system_active()) if (backup_sight_active) draw_backup_sight(); else if (!hind_damage.head_up_display) { set_mono_font_colour (hud_colour); draw_layout_grid (); if (hud_mode == HUD_MODE_WEAPON) draw_weapon_mode_hud (TRUE); } // last pixel must be transparent because it's repeated when texture doesn't fill entire polygon draw_line(0, 0, 0, HUD_VIEWPORT_SMALL_SIZE - 1, clear_hud_colour); draw_line(0, 0, HUD_VIEWPORT_SMALL_SIZE - 1, 0, clear_hud_colour); draw_line(0, HUD_VIEWPORT_SMALL_SIZE - 1, HUD_VIEWPORT_SMALL_SIZE - 1, HUD_VIEWPORT_SMALL_SIZE - 1, clear_hud_colour); draw_line(HUD_VIEWPORT_SMALL_SIZE - 1, 0, HUD_VIEWPORT_SMALL_SIZE - 1, HUD_VIEWPORT_SMALL_SIZE - 1, clear_hud_colour); flush_screen_texture_graphics (hud_texture_screen); unlock_screen (hud_texture_screen); } set_active_screen (video_screen); }
void initialise_graphics_colours ( void ) { set_rgb_colour (sys_col_black, 0, 0, 0, 255); set_rgb_colour (sys_col_blue, 0, 0, 255, 255); set_rgb_colour (sys_col_green, 0, 255, 0, 255); set_rgb_colour (sys_col_cyan, 0, 255, 255, 255); set_rgb_colour (sys_col_red, 255, 0, 0, 255); set_rgb_colour (sys_col_magenta, 255, 0, 255, 255); set_rgb_colour (sys_col_yellow, 255, 255, 0, 255); set_rgb_colour (sys_col_white, 255, 255, 255, 255); set_rgb_colour (sys_col_sky_blue, 135, 206, 235, 255); set_rgb_colour (sys_col_slate_grey, 112, 128, 144, 255); set_rgb_colour (sys_col_forest_green, 34, 139, 34, 255); set_rgb_colour (sys_col_ultramarine, 18, 0, 143, 255); set_rgb_colour (sys_col_seablue, 90, 130, 190, 255); set_rgb_colour (sys_col_aquamarine, 127, 255, 212, 255); set_rgb_colour (sys_col_gold, 255, 215, 0, 255); set_rgb_colour (sys_col_light_grey, 200, 200, 200, 255); set_rgb_colour (sys_col_light_red, 255, 150, 150, 255); set_rgb_colour (sys_col_dark_red, 150, 0, 0, 255); set_rgb_colour (sys_col_dark_green, 0, 150, 0, 255); set_rgb_colour (sys_col_dark_blue, 0, 0, 100, 255); set_rgb_colour (sys_col_medium_blue, 50, 50, 150, 255); set_rgb_colour (sys_col_medium_red, 255, 50, 50, 255); set_rgb_colour (sys_col_sandy_brown, 244, 164, 96, 255); set_rgb_colour (sys_col_amber, 255, 128, 0, 255); set_rgb_colour (sys_col_waypoint_route, 31, 0, 136, 255); set_rgb_colour (sys_col_red_force, 224, 27, 0, 255); set_rgb_colour (sys_col_blue_force, 41, 86, 255, 255); }
static void draw_map_display(void) { float u, v, scale; entity *source; vec3d *source_position; source = get_gunship_entity (); source_position = get_local_entity_vec3d_ptr (source, VEC3D_TYPE_POSITION); map_centre_position = *source_position; scale = RADIUS / map_range; // // match ground radar origin // get_2d_float_screen_coordinates (0.0f, 0.0f, &u, &v); u -= mfd_viewport_x_min; v -= mfd_viewport_y_min; //////////////////////////////////////// // //VJ 030423 TSD RENDER MOD // //////////////////////////////////////// { draw_tsd_terrain_map (mfd_env, 0.0f, map_range, scale, source_position, 0.0f, TRUE); draw_tsd_contour_map (mfd_env, 0.0f, map_range, scale, source_position, 0.0f, TRUE, TRUE); } // grid and towns { rgb_colour grid_colour; set_rgb_colour(grid_colour, 96, 64, 0, 255); draw_tsd_map_grid(source_position, scale, grid_colour); set_mono_font_colour (MFD_COLOUR1); set_mono_font_type (MONO_FONT_TYPE_6X10); draw_tsd_map_towns(source_position, scale); } //////////////////////////////////////// // // waypoint route // //////////////////////////////////////// { entity *wp1, *wp2; vec3d wp1_rel_position, wp2_rel_position; rgb_colour waypoint_colour = MFD_COLOUR_RED; wp1 = get_local_entity_first_waypoint (source); if (wp1) { set_2d_viewport_origin (mfd_env, u, v); // // waypoint route // get_waypoint_display_position (source, wp1, &wp1_rel_position); wp1_rel_position.x = (wp1_rel_position.x - source_position->x) * scale; wp1_rel_position.z = (wp1_rel_position.z - source_position->z) * scale; wp2 = get_local_entity_child_succ (wp1, LIST_TYPE_WAYPOINT); while (wp2) { get_waypoint_display_position (source, wp2, &wp2_rel_position); wp2_rel_position.x = (wp2_rel_position.x - source_position->x) * scale; wp2_rel_position.z = (wp2_rel_position.z - source_position->z) * scale; draw_2d_half_thick_line (wp1_rel_position.x, wp1_rel_position.z, wp2_rel_position.x, wp2_rel_position.z, waypoint_colour); // 2 wp1 = wp2; wp1_rel_position = wp2_rel_position; wp2 = get_local_entity_child_succ (wp1, LIST_TYPE_WAYPOINT); } // // waypoint markers // set_mono_font_colour (MFD_COLOUR_RED); set_mono_font_type (MONO_FONT_TYPE_10X16); wp1 = get_local_entity_first_waypoint (source); while (wp1) { get_waypoint_display_position (source, wp1, &wp1_rel_position); wp1_rel_position.x = (wp1_rel_position.x - source_position->x) * scale; wp1_rel_position.z = (wp1_rel_position.z - source_position->z) * scale; draw_2d_circle(wp1_rel_position.x, wp1_rel_position.z, 0.008, waypoint_colour); set_2d_mono_font_position (wp1_rel_position.x, wp1_rel_position.z); set_mono_font_rel_position (-4.0, 8.0); print_mono_font_char (get_local_entity_char_value (wp1, CHAR_TYPE_TAG)); wp1 = get_local_entity_child_succ (wp1, LIST_TYPE_WAYPOINT); } set_2d_viewport (mfd_env, mfd_viewport_x_min, mfd_viewport_y_min, mfd_viewport_x_max, mfd_viewport_y_max); } } //////////////////////////////////////// // // aircraft datum symbol // //////////////////////////////////////// // last pixel must be transparent because it's repeated when texture doesn't fill entire polygon draw_line(0, 0, 0, mfd_viewport_size - 1, clear_mfd_colour); draw_line(0, 0, mfd_viewport_size - 1, 0, clear_mfd_colour); draw_line(0, mfd_viewport_size - 1, mfd_viewport_size - 1, mfd_viewport_size - 1, clear_mfd_colour); draw_line(mfd_viewport_size - 1, 0, mfd_viewport_size - 1, mfd_viewport_size - 1, clear_mfd_colour); map_up_to_date = TRUE; }
static void initialize_colours(void) { //VJ 030423 TSd render mod set_rgb_colour (MFD_COLOUR1, 40, 40, 40, 255); set_rgb_colour (MFD_COLOUR2, 0, 200, 0, 255); set_rgb_colour (MFD_COLOUR3, 0, 176, 0, 255); set_rgb_colour (MFD_COLOUR4, 0, 151, 0, 255); set_rgb_colour (MFD_COLOUR5, 0, 128, 0, 255); set_rgb_colour (MFD_EO_TEXT_COLOUR, 220,200, 56, 255); set_rgb_colour (MFD_CONTOUR_COLOUR, 110, 80, 60, 255); set_rgb_colour (MFD_RIVER_COLOUR, 150, 160, 225, 255); set_rgb_colour (MFD_ROAD_COLOUR, 50, 35, 25, 255); set_rgb_colour (MFD_BACKGROUND_COLOUR, 220, 220, 200, 255); set_rgb_colour (MFD_CLEAR_COLOUR, 0, 0, 0, 0); set_rgb_colour (MFD_COLOUR_BLUE, 60, 160, 255, 255); set_rgb_colour (MFD_COLOUR_DARK_BLUE, 0, 0, 96, 255); set_rgb_colour (MFD_COLOUR_YELLOW, 230, 230, 40, 255); set_rgb_colour (MFD_COLOUR_DARK_YELLOW, 165, 165, 30, 255); set_rgb_colour (MFD_COLOUR_RED, 230, 50, 20, 255); set_rgb_colour (MFD_COLOUR_DARK_RED, 148, 32, 0, 255); set_rgb_colour (MFD_COLOUR_CYAN, 60, 255, 230, 255); set_rgb_colour (clear_mfd_colour, 220, 220, 200, 255); Initialise_TSD_render_terrain(); set_tsd_map_contour_colour(MFD_CONTOUR_COLOUR); set_tsd_map_river_colour(MFD_RIVER_COLOUR); set_tsd_map_road_colour(MFD_ROAD_COLOUR); }
void draw_hind_virtual_cockpit_ort_symbology(void) { int mfd_screen_x_min, mfd_screen_y_min, mfd_screen_x_max, mfd_screen_y_max; rgb_colour background_colour, symbology_colour; set_3d_active_environment (main_3d_env); // // set up MFD 2D environment // set_2d_active_environment (mfd_env); set_2d_window (mfd_env, MFD_WINDOW_X_MIN, MFD_WINDOW_Y_MIN, MFD_WINDOW_X_MAX, MFD_WINDOW_Y_MAX); mfd_viewport_size = EO_VIEWPORT_SIZE; mfd_viewport_x_org = EO_VIEWPORT_SIZE * 0.5; mfd_viewport_y_org = EO_VIEWPORT_SIZE * 0.5; mfd_viewport_x_min = 0.0; mfd_viewport_y_min = 0.0; mfd_viewport_x_max = EO_VIEWPORT_SIZE - 0.001; mfd_viewport_y_max = EO_VIEWPORT_SIZE - 0.001; set_2d_viewport (mfd_env, mfd_viewport_x_min, mfd_viewport_y_min, mfd_viewport_x_max, mfd_viewport_y_max); mfd_screen_x_min = full_screen_x_mid - ((256.0 / (640.0 * 2.0)) * full_screen_width); mfd_screen_y_min = full_screen_y_mid - ((256.0 / (480.0 * 2.0)) * full_screen_height); mfd_screen_x_max = full_screen_x_mid + ((256.0 / (640.0 * 2.0)) * full_screen_width) - 0.001; mfd_screen_y_max = full_screen_y_mid + ((256.0 / (480.0 * 2.0)) * full_screen_height) - 0.001; i_translate_3d = mfd_screen_x_min; j_translate_3d = mfd_screen_y_min; i_scale_3d = 640.0 / full_screen_width; j_scale_3d = 480.0 / full_screen_height; symbology_colour = MFD_EO_TEXT_COLOUR; set_rgb_colour(background_colour, 255, 255, 255, 0); set_system_texture_screen (eo_texture_screen, TEXTURE_INDEX_AVCKPT_DISPLAY_RHS_MFD); draw_symbology_to_texture( eo_texture_screen, TEXTURE_INDEX_AVCKPT_DISPLAY_RHS_MFD, mfd_viewport_size, mfd_viewport_size, mfd_screen_x_min, mfd_screen_y_min, mfd_screen_x_max, mfd_screen_y_max, symbology_colour, background_colour, draw_hind_ort_symbology); }