Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv19922/src
Modified Files:
local.c short.c socket.c
Log Message:
FPS support for planet rotation, torp and plasma explosions, and torp and plasma rotations.
Fix for varyShields option to display shields in 3 colors rather than just red/green.
Index: short.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/short.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- short.c 10 Dec 2006 02:49:14 -0000 1.10
+++ short.c 22 Feb 2007 17:44:34 -0000 1.11
@@ -1094,7 +1094,7 @@
thetorp->t_status = status;
if (thetorp->t_status == TEXPLODE)
{
- thetorp->t_fuse = BMP_TORPDET_FRAMES;
+ thetorp->t_fuse = BMP_TORPDET_FRAMES * fps / 10;
}
}
} /* if */
Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -d -r1.52 -r1.53
--- local.c 22 Feb 2007 16:22:13 -0000 1.52
+++ local.c 22 Feb 2007 17:44:34 -0000 1.53
@@ -55,6 +55,8 @@
static int warpchange = 0;
static unsigned int twarpflag = 0;
static int cloak_phases = 0;
+static int bmp_torpdet_frames = 0;
+static int bmp_torp_frames = 0;
#endif
/* Background Stars Definitions */
@@ -335,7 +337,7 @@
* Choose the color bitmap for a planet.
*/
{
- int i;
+ int i, j;
W_Icon (*planet_bits);
if ((p->pl_info & me->p_team)
@@ -399,10 +401,14 @@
}
else // Unknown planet
{
- if ((planet_frame >= CPLANET_VIEWS - 1) || (planet_frame < 0))
+ j = planet_frame * 10 / fps;
+ if ((j >= CPLANET_VIEWS - 1) || (j < 0))
+ {
+ j = 0;
planet_frame = 0;
+ }
if (rotatePlanets)
- return planet_unknown[planet_frame];
+ return planet_unknown[j];
else
return planet_unknown_NR;
}
@@ -1080,19 +1086,19 @@
if (j == me && varyShields)
{
+ int value;
+
shieldnum =
SHIELD_FRAMES * me->p_shield / me->p_ship.s_maxshield;
if (shieldnum >= SHIELD_FRAMES)
shieldnum = SHIELD_FRAMES - 1;
- color = gColor;
- if (shieldnum < SHIELD_FRAMES * 2 / 3)
- {
+ value = (100 * me->p_shield) / me->p_ship.s_maxshield;
+ if (value <= 33)
+ color = rColor;
+ else if (value <= 66)
color = yColor;
- if (shieldnum < SHIELD_FRAMES * 2 / 3)
- {
- color = rColor;
- }
- }
+ else
+ color = gColor;
}
else
{
@@ -1804,6 +1810,7 @@
struct player *j;
int torpCount;
int torpTeam;
+ int frame;
const int view = SCALE * WINSIDE / 2;
for (t = torps, j = players; j != players + MAXPLAYER; t += MAXTORP, ++j)
@@ -1901,21 +1908,23 @@
if (k->t_status == TEXPLODE)
{
-
k->t_fuse--;
+ bmp_torpdet_frames = BMP_TORPDET_FRAMES * fps / 10;
+ frame = k->t_fuse * 10 / fps;
if (k->t_fuse <= 0)
{
k->t_status = TFREE;
j->p_ntorp--;
continue;
}
- if (k->t_fuse >= BMP_TORPDET_FRAMES)
+
+ if (k->t_fuse >= bmp_torpdet_frames)
{
- k->t_fuse = BMP_TORPDET_FRAMES - 1;
+ k->t_fuse = bmp_torpdet_frames - 1;
}
#ifdef SOUND
- if (k->t_fuse == BMP_TORPDET_FRAMES - 1)
+ if (k->t_fuse == bmp_torpdet_frames - 1)
{
if (newSound)
{
@@ -1974,7 +1983,7 @@
}
W_WriteBitmap (dx - (BMP_CTORPDET_WIDTH / 2),
dy - (BMP_CTORPDET_HEIGHT / 2),
- cloudC[torpTeam][k->t_fuse], torpColor (k), w);
+ cloudC[torpTeam][frame], torpColor (k), w);
clearzone[0][clearcount] = dx - (BMP_CTORPDET_WIDTH / 2);
clearzone[1][clearcount] = dy - (BMP_CTORPDET_HEIGHT / 2);
clearzone[2][clearcount] = BMP_CTORPDET_WIDTH;
@@ -1985,7 +1994,7 @@
{
W_WriteBitmap (dx - (BMP_TORPDET_WIDTH / 2),
dy - (BMP_TORPDET_HEIGHT / 2),
- cloud[k->t_fuse], torpColor (k), w);
+ cloud[frame], torpColor (k), w);
clearzone[0][clearcount] = dx - (BMP_TORPDET_WIDTH / 2);
clearzone[1][clearcount] = dy - (BMP_TORPDET_HEIGHT / 2);
clearzone[2][clearcount] = BMP_TORPDET_WIDTH;
@@ -1997,7 +2006,12 @@
{
if (colorWeapons)
{
- if ((k->t_fuse++ >= BMP_TORP_FRAMES - 1) || (k->t_fuse < 0))
+ k->t_fuse++;
+
+ bmp_torp_frames = BMP_TORP_FRAMES * fps / 10;
+ frame = k->t_fuse * 10 / fps;
+
+ if ((k->t_fuse >= bmp_torp_frames - 1) || (k->t_fuse < 0))
k->t_fuse = 0;
if (myPlayer(j))
@@ -2028,13 +2042,13 @@
{
W_WriteBitmap (dx - (BMP_CTORP_WIDTH / 2),
dy - (BMP_CTORP_HEIGHT / 2),
- torpC[torpTeam][k->t_fuse], torpColor (k), w);
+ torpC[torpTeam][frame], torpColor (k), w);
}
else
{
W_WriteBitmap (dx - (BMP_CTORP_WIDTH / 2),
dy - (BMP_CTORP_HEIGHT / 2),
- mtorpC[torpTeam][k->t_fuse], torpColor (k), w);
+ mtorpC[torpTeam][frame], torpColor (k), w);
}
clearzone[0][clearcount] = dx - (BMP_CTORP_WIDTH / 2);
@@ -2085,6 +2099,7 @@
register int dx, dy;
const int view = SCALE * WINSIDE / 2;
int ptorpTeam;
+ int frame;
/* MAXPLASMA is small so work through all the plasmas rather than
look at the number of outstanding plasma torps for each player. */
@@ -2163,6 +2178,8 @@
if (pt->pt_status == PTEXPLODE)
{
pt->pt_fuse--;
+ bmp_torpdet_frames = BMP_TORPDET_FRAMES * fps / 10;
+ frame = pt->pt_fuse * 10 / fps;
if (pt->pt_fuse <= 0)
{
pt->pt_status = PTFREE;
@@ -2170,13 +2187,13 @@
continue;
}
- if (pt->pt_fuse >= BMP_TORPDET_FRAMES)
+ if (pt->pt_fuse >= bmp_torpdet_frames)
{
- pt->pt_fuse = BMP_TORPDET_FRAMES - 1;
+ pt->pt_fuse = bmp_torpdet_frames - 1;
}
#ifdef SOUND
- if (pt->pt_fuse == BMP_TORPDET_FRAMES - 1)
+ if (pt->pt_fuse == bmp_torpdet_frames - 1)
{
if (newSound)
{
@@ -2235,7 +2252,7 @@
}
W_WriteBitmap (dx - (BMP_CPLASMATORPDET_WIDTH / 2),
dy - (BMP_CPLASMATORPDET_HEIGHT / 2),
- plcloudC[ptorpTeam][pt->pt_fuse],
+ plcloudC[ptorpTeam][frame],
plasmatorpColor (pt), w);
clearzone[0][clearcount] = dx - (BMP_CPLASMATORPDET_WIDTH / 2);
clearzone[1][clearcount] = dy - (BMP_CPLASMATORPDET_HEIGHT / 2);
@@ -2247,7 +2264,7 @@
{
W_WriteBitmap (dx - (BMP_PLASMATORPDET_WIDTH / 2),
dy - (BMP_PLASMATORPDET_HEIGHT / 2),
- plasmacloud[pt->pt_fuse], plasmatorpColor (pt), w);
+ plasmacloud[frame], plasmatorpColor (pt), w);
clearzone[0][clearcount] = dx - (BMP_PLASMATORPDET_WIDTH / 2);
clearzone[1][clearcount] = dy - (BMP_PLASMATORPDET_HEIGHT / 2);
clearzone[2][clearcount] = BMP_PLASMATORPDET_WIDTH;
@@ -2259,7 +2276,12 @@
{
if (colorWeapons)
{
- if ((pt->pt_fuse++ >= BMP_TORP_FRAMES - 1) || (pt->pt_fuse < 0))
+ pt->pt_fuse++;
+
+ bmp_torp_frames = BMP_TORP_FRAMES * fps / 10;
+ frame = pt->pt_fuse * 10 / fps;
+
+ if ((pt->pt_fuse >= bmp_torp_frames - 1) || (pt->pt_fuse < 0))
pt->pt_fuse = 0;
if (pt->pt_owner == me->p_no)
@@ -2288,14 +2310,14 @@
{
W_WriteBitmap (dx - (BMP_CPLASMATORP_WIDTH / 2),
dy - (BMP_CPLASMATORP_HEIGHT / 2),
- plasmaC[ptorpTeam][pt->pt_fuse],
+ plasmaC[ptorpTeam][frame],
plasmatorpColor (pt), w);
}
else
{
W_WriteBitmap (dx - (BMP_CPLASMATORP_WIDTH / 2),
dy - (BMP_CPLASMATORP_HEIGHT / 2),
- mplasmaC[ptorpTeam][pt->pt_fuse],
+ mplasmaC[ptorpTeam][frame],
plasmatorpColor (pt), w);
}
clearzone[0][clearcount] = dx - (BMP_CPLASMATORP_WIDTH / 2);
Index: socket.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/socket.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- socket.c 13 Dec 2006 23:47:15 -0000 1.14
+++ socket.c 22 Feb 2007 17:44:35 -0000 1.15
@@ -1158,7 +1158,7 @@
thetorp->t_status = packet->status;
if (thetorp->t_status == TEXPLODE)
{
- thetorp->t_fuse = BMP_TORPDET_FRAMES;
+ thetorp->t_fuse = BMP_TORPDET_FRAMES * fps / 10;
}
}
}
@@ -1778,7 +1778,7 @@
thetorp->pt_status = packet->status;
if (thetorp->pt_status == PTEXPLODE)
{
- thetorp->pt_fuse = BMP_TORPDET_FRAMES;
+ thetorp->pt_fuse = BMP_TORPDET_FRAMES * fps / 10;
}
}
}