From fbb6d44d232ccc268ef47a722de5fd0edb84fec8 Mon Sep 17 00:00:00 2001 From: Allanis Date: Thu, 13 Mar 2014 19:47:15 +0000 Subject: [PATCH] [Add] Give visual feedback of targeted ships outside of radar range. --- src/player.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/player.c b/src/player.c index 2d9240a..13a0df7 100644 --- a/src/player.c +++ b/src/player.c @@ -1162,19 +1162,43 @@ static void gui_renderPilot(const Pilot* p) { int x, y, sx, sy; double w, h; glColour* col; + double a; + /* Get position. */ x = (p->solid->pos.x - player->solid->pos.x) / gui.radar.res; y = (p->solid->pos.y - player->solid->pos.y) / gui.radar.res; + /* Get size. */ sx = PILOT_SIZE_APROX/2. * p->ship->gfx_space->sw / gui.radar.res; sy = PILOT_SIZE_APROX/2. * p->ship->gfx_space->sh / gui.radar.res; if(sx < 1.) sx = 1.; if(sy < 1.) sy = 1.; + /* Check if pilot in range. */ if(((gui.radar.shape == RADAR_RECT) && ((ABS(x) > gui.radar.w/2.+sx) || (ABS(y) > gui.radar.h/2.+sy))) || ((gui.radar.shape == RADAR_CIRCLE) && - ((x*x + y*y) > (int)(gui.radar.w*gui.radar.w)))) - return; /* Pilot isn't in range. */ + ((x*x + y*y) > (int)(gui.radar.w*gui.radar.w)))) { + + /* Draw a little targetted symbol. */ + if(p->id == player->target) { + /* Circle radars have it easy. */ + if(gui.radar.shape == RADAR_CIRCLE) { + /* We'll create a line. */ + a = ANGLE(x, y); + x = gui.radar.w*cos(a); + y = gui.radar.w*sin(a); + sx = 0.85 * x; + sy = 0.85 * y; + + COLOUR(cRadar_targ); + glBegin(GL_LINES); + glVertex2d(x, y); + glVertex2d(sx, sy); + glEnd(); + } + } + return; + } if(gui.radar.shape == RADAR_RECT) { w = gui.radar.w/2.;