void HudGaugeRadarDradis::plotBlip(blip* b, vec3d *pos, float *alpha) { *pos = b->position; vm_vec_normalize(pos); if (ship_is_tagged(b->objp)) { *alpha = 1.0f; return; } float fade_multi = 1.5f; if (b->objp->type == OBJ_SHIP) { if (Ships[b->objp->instance].flags[Ship::Ship_Flags::Stealth]) { fade_multi *= 2.0f; } } b->time_since_update += flFrametime; // If the blip has been pinged by the local x-axis sweep, update if (std::abs(vm_vec_dot(&sweep_normal_x, pos)) < 0.01f) { b->time_since_update = 0.0f; } *alpha = ((sweep_duration - b->time_since_update)/sweep_duration)*fade_multi/2.0f; if (*alpha < 0.0f) { *alpha = 0.0f; } }
void radar_stuff_blip_info(object *objp, int is_bright, color **blip_color, int *blip_type) { ship *shipp = NULL; switch(objp->type) { case OBJ_SHIP: shipp = &Ships[objp->instance]; if (shipp->flags & SF_ARRIVING_STAGE_1) { *blip_color = &Radar_colors[RCOL_WARPING_SHIP][is_bright]; *blip_type = BLIP_TYPE_WARPING_SHIP; } else if (ship_is_tagged(objp)) { *blip_color = &Radar_colors[RCOL_TAGGED][is_bright]; *blip_type = BLIP_TYPE_TAGGED_SHIP; } else if (Ship_info[shipp->ship_info_index].flags & (SIF_NAVBUOY|SIF_CARGO)) { *blip_color = &Radar_colors[RCOL_NAVBUOY_CARGO][is_bright]; *blip_type = BLIP_TYPE_NAVBUOY_CARGO; } else { *blip_color = iff_get_color_by_team_and_object(shipp->team, Player_ship->team, is_bright, objp); *blip_type = BLIP_TYPE_NORMAL_SHIP; } break; case OBJ_WEAPON: if ((Weapons[objp->instance].lssm_stage == 2) || (Weapons[objp->instance].lssm_stage == 4)) { *blip_color = &Radar_colors[RCOL_WARPING_SHIP][is_bright]; *blip_type = BLIP_TYPE_WARPING_SHIP; } else { *blip_color = &Radar_colors[RCOL_BOMB][is_bright]; *blip_type = BLIP_TYPE_BOMB; } break; case OBJ_JUMP_NODE: *blip_color = &Radar_colors[RCOL_JUMP_NODE][is_bright]; *blip_type = BLIP_TYPE_JUMP_NODE; break; default: Error(LOCATION, "Illegal blip type in radar."); break; } }
// determine what color the object blip should be drawn as int radar_blip_color(object *objp) { int color = 0; ship *shipp = NULL; switch(objp->type) { case OBJ_SHIP: shipp = &Ships[objp->instance]; if ( shipp->flags & SF_ARRIVING_STAGE_1 ) { color = RCOL_WARPING_SHIP; } else if ( ship_is_tagged(objp) ) { color = RCOL_TAGGED; } else if ( Ship_info[shipp->ship_info_index].flags & (SIF_NAVBUOY|SIF_CARGO) ) { color = RCOL_NAVBUOYS; } else { if ( (Player_ship->team == shipp->team) && (Player_ship->team != TEAM_TRAITOR) ) { color = RCOL_FRIENDLY; } else { switch (shipp->team) { case TEAM_FRIENDLY: case TEAM_HOSTILE: case TEAM_TRAITOR: color = RCOL_HOSTILE; break; case TEAM_NEUTRAL: color = RCOL_NEUTRAL; break; case TEAM_UNKNOWN: color = RCOL_UNKNOWN; break; default: color = RCOL_HOSTILE; Int3(); // Bogus team id in shipp->team break; } } } break; case OBJ_WEAPON: color = RCOL_BOMB; break; case OBJ_JUMP_NODE: color = RCOL_JUMP_NODE; break; default: Error(LOCATION, "Illegal ship type in radar."); break; } return color; }
void HudGaugeRadarDradis::plotBlip(blip* b, vec3d *pos, float *alpha) { *pos = b->position; vm_vec_normalize(pos); if (ship_is_tagged(b->objp)) { *alpha = 1.0f; return; } float fade_multi = 1.5f; if (b->objp->type == OBJ_SHIP) { if (Ships[b->objp->instance].flags2 & SF2_STEALTH) { fade_multi *= 2.0f; } } *alpha = 1.0f - (sweep_percent /(PI*2))*fade_multi/2.0f; if (*alpha < 0.0f) { *alpha = 0.0f; } }