Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv5643/src
Modified Files:
interface.c local.c
Log Message:
Added headingTic functionality. A white tic is drawn at some distance from
your ship, indicating your heading. A smaller tic is drawn indicating your
desired heading, or in the case that you are locked onto a target, indicating
the direction to that target. Previously unused p_desdir variable now being
used for these calculations. This smaller tic is white, except for the case of
player/planet lock, in which case the tic is green.
Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -d -r1.73 -r1.74
--- local.c 15 Mar 2007 17:45:42 -0000 1.73
+++ local.c 15 Mar 2007 20:49:34 -0000 1.74
@@ -667,6 +667,7 @@
const int view = SCALE * WINSIDE / 2 + BMP_SHIELD_WIDTH * SCALE / 2;
int dx, dy, px, py, wx, wy, tx, ty, lx, ly;
int new_dx, new_dy;
+ int startx, starty, endx, endy;
W_Icon (*ship_bits)[SHIP_VIEWS];
W_Icon (*ship_bitsHR);
@@ -1166,6 +1167,53 @@
showdetCircle--;
}
}
+ /* Self tic heading */
+ if (headingTic)
+ {
+ if (myPlayer(j))
+ {
+ startx = dx + (int) (TIC_DIST/SCALE * Cos[j->p_dir]);
+ starty = dy + (int) (TIC_DIST/SCALE * Sin[j->p_dir]);
+ endx = startx + (int) (TIC_LEN * Cos[j->p_dir]);
+ endy = starty + (int) (TIC_LEN * Sin[j->p_dir]);
+
+ W_MakeLine(w, startx, starty, endx, endy, W_White);
+ clearline[0][clearlcount] = startx;
+ clearline[1][clearlcount] = starty;
+ clearline[2][clearlcount] = endx;
+ clearline[3][clearlcount] = endy;
+ clearlcount++;
+
+ /* Update desired heading if locked, in a similiar way
+ to how the server sets our heading */
+ if (j->p_flags & PFPLOCK)
+ {
+ j->p_desdir = (int) (atan2(players[j->p_playerl].p_x - me->p_x,
+ j->p_y - players[j->p_playerl].p_y) / XPI * 128.);
+ }
+ else if (j->p_flags & PFPLLOCK)
+ {
+ j->p_desdir = (int) (atan2(planets[j->p_planet].pl_x - me->p_x,
+ j->p_y - planets[j->p_planet].pl_y) / XPI * 128.);
+ }
+
+ if (j->p_dir != j->p_desdir && !(j->p_flags & (PFORBIT | PFDOCK)))
+ {
+ startx = dx + (int) (TIC_DIST/SCALE * Cos[j->p_desdir]);
+ starty = dy + (int) (TIC_DIST/SCALE * Sin[j->p_desdir]);
+ endx = startx + (int) (DESIRED_TIC_LEN * Cos[j->p_desdir]);
+ endy = starty + (int) (DESIRED_TIC_LEN * Sin[j->p_desdir]);
+
+ W_MakeLine(w, startx, starty, endx, endy,
+ (j->p_flags & (PFPLOCK | PFPLLOCK)) ? W_Green : W_White);
+ clearline[0][clearlcount] = startx;
+ clearline[1][clearlcount] = starty;
+ clearline[2][clearlcount] = endx;
+ clearline[3][clearlcount] = endy;
+ clearlcount++;
+ }
+ }
+ }
#ifdef HOCKEY_LINES
/* Puck circle */
if (puckCircle && playing_hockey)
@@ -1180,7 +1228,7 @@
clearcount++;
}
}
- /* Puck tick heading */
+ /* Puck tic heading */
if (puckArrow && playing_hockey &&
j->p_speed != 0 &&
strcmp(j->p_name, "Puck") == 0 &&
@@ -1188,8 +1236,6 @@
j->p_team == NOBODY &&
j->p_ship.s_type == SCOUT)
{
- int startx, starty, endx, endy;
-
startx = dx + (int) ((shield_width / 2) * Cos[j->p_dir]);
starty = dy + (int) ((shield_width / 2) * Sin[j->p_dir]);
endx = startx + (int) (PUCKARROW_LEN * Cos[j->p_dir]);
Index: interface.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/interface.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- interface.c 7 May 2006 16:59:27 -0000 1.2
+++ interface.c 15 Mar 2007 20:49:34 -0000 1.3
@@ -42,6 +42,7 @@
void
set_course (unsigned char dir)
{
+ me->p_desdir = dir;
sendDirReq (dir);
}