Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv28758/src
Modified Files:
data.c local.c map.c mswindow.c newwin.c
Log Message:
Adds support for paradise fighters, haven't been tested yet, no
server available that has them.
Index: data.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -d -r1.97 -r1.98
--- data.c 7 Jun 2007 06:29:05 -0000 1.97
+++ data.c 12 Jun 2007 01:23:17 -0000 1.98
@@ -352,6 +352,13 @@
W_Icon drone_explosion_bitmap[BMP_DRONEDET_FRAMES];
W_Icon base_dronec_explosion_bitmap;
W_Icon dronec_explosion_bitmap[BMP_DRONEDET_FRAMES];
+W_Icon fighter_bitmap;
+W_Icon base_fighterc_bitmap;
+W_Icon fighterc_bitmap[NUM_CTORP_TYPES];
+W_Icon base_fighter_explosion_bitmap;
+W_Icon fighter_explosion_bitmap[BMP_FIGHTERDET_FRAMES];
+W_Icon base_fighterc_explosion_bitmap;
+W_Icon fighterc_explosion_bitmap[BMP_FIGHTERDET_FRAMES];
W_Icon gear_bitmap, mgear_bitmap;
W_Icon base_star_bitmap;
W_Icon star_bitmap[STAR_VIEWS];
Index: newwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -d -r1.68 -r1.69
--- newwin.c 7 Jun 2007 06:29:06 -0000 1.68
+++ newwin.c 12 Jun 2007 01:23:18 -0000 1.69
@@ -542,6 +542,32 @@
for (i = 0; i < BMP_DRONEDET_FRAMES; i++)
dronec_explosion_bitmap[i] =
W_PointBitmap2 (base_dronec_explosion_bitmap, 0, i, BMP_DRONEDET_WIDTH, BMP_DRONEDET_HEIGHT);
+
+ fighter_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/fighter.bmp", BMP_FIGHTER_WIDTH,
+ BMP_FIGHTER_HEIGHT, BMP_FIGHTER, w, LR_MONOCHROME);
+ base_fighterc_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/fighterC.bmp", BMP_FIGHTER_WIDTH * NUM_CTORP_TYPES,
+ BMP_FIGHTER_HEIGHT, BMP_FIGHTERC, w, LR_DEFAULTCOLOR);
+ for (i = 0; i < NUM_CTORP_TYPES; i++)
+ fighterc_bitmap[i] =
+ W_PointBitmap2 (base_fighterc_bitmap, i, 0, BMP_FIGHTER_WIDTH, BMP_FIGHTER_HEIGHT);
+
+ base_fighter_explosion_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/fightercloud.bmp", BMP_FIGHTERDET_WIDTH,
+ BMP_FIGHTERDET_HEIGHT * BMP_FIGHTERDET_FRAMES, BMP_FIGHTERCLOUD, w,
+ LR_MONOCHROME);
+ for (i = 0; i < BMP_FIGHTERDET_FRAMES; i++)
+ fighter_explosion_bitmap[i] =
+ W_PointBitmap2 (base_fighter_explosion_bitmap, 0, i, BMP_FIGHTERDET_WIDTH, BMP_FIGHTERDET_HEIGHT);
+
+ base_fighterc_explosion_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/fightercloudC.bmp", BMP_FIGHTERDET_WIDTH,
+ BMP_FIGHTERDET_HEIGHT * BMP_FIGHTERDET_FRAMES, BMP_FIGHTERCLOUD, w,
+ LR_DEFAULTCOLOR);
+ for (i = 0; i < BMP_FIGHTERDET_FRAMES; i++)
+ fighterc_explosion_bitmap[i] =
+ W_PointBitmap2 (base_fighterc_explosion_bitmap, 0, i, BMP_FIGHTERDET_WIDTH, BMP_FIGHTERDET_HEIGHT);
}
#endif
Index: mswindow.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- mswindow.c 7 Jun 2007 06:29:06 -0000 1.86
+++ mswindow.c 12 Jun 2007 01:23:18 -0000 1.87
@@ -589,6 +589,16 @@
free (base_dronec_explosion_bitmap);
for (i = 0; i < BMP_DRONEDET_FRAMES; i++)
free (dronec_explosion_bitmap[i]);
+ free (fighter_bitmap);
+ free (base_fighterc_bitmap);
+ for (i = 0; i < NUM_CTORP_TYPES; i++)
+ free (fighterc_bitmap[i]);
+ free (base_fighter_explosion_bitmap);
+ for (i = 0; i < BMP_FIGHTERDET_FRAMES; i++)
+ free (fighter_explosion_bitmap[i]);
+ free (base_fighterc_explosion_bitmap);
+ for (i = 0; i < BMP_FIGHTERDET_FRAMES; i++)
+ free (fighterc_explosion_bitmap[i]);
free (gear_bitmap);
free (mgear_bitmap);
free (base_star_bitmap);
Index: map.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/map.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- map.c 7 Jun 2007 06:29:06 -0000 1.59
+++ map.c 12 Jun 2007 01:23:18 -0000 1.60
@@ -744,7 +744,11 @@
#ifdef BEEPLITE
}
#endif
- if (planetHighlighting && (l->pl_info & me->p_team)) /* Draw halo */
+ if (planetHighlighting && (l->pl_info & me->p_team)
+#ifdef PARADISE
+ && PL_TYPE(*l) != PLSTAR && PL_TYPE(*l) != PLWHOLE
+#endif
+ ) /* Draw halo */
W_WriteCircle(mapw, dx, dy, BMP_MPLANET_WIDTH / 2,
l->pl_armies > 4 ? 1 : 0, 0, planetColor(l));
@@ -1580,7 +1584,7 @@
checkRedraw(pt->pt_x, pt->pt_y);
}
#ifdef PARADISE
- /* missiles */
+ /* missiles/fighters */
for (h = i * npthingies, th = &thingies[i * npthingies]; h < npthingies * (i + 1); h++, th++)
{
if (th->t_x < 0 || th->t_y < 0)
Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- local.c 7 Jun 2007 06:29:06 -0000 1.105
+++ local.c 12 Jun 2007 01:23:18 -0000 1.106
@@ -2572,7 +2572,7 @@
struct player *j;
int dx, dy;
int frame;
- int droneTeam;
+ int droneTeam, fighterTeam;
int view = scaleFactor * TWINSIDE / 2;
if (k->t_shape == SHP_BLANK)
@@ -2586,17 +2586,6 @@
dx = scaleLocal(dx);
dy = scaleLocal(dy);
switch (k->t_shape) {
-/* case SHP_BOOM:
- k->t_fuse--;
- if (k->t_fuse <= 0) {
- k->t_shape = SHP_BLANK;
- return;
- }
- if (k->t_fuse > image->frames)
- k->t_fuse = image->frames;
-
- frame = image->frames - k->t_fuse;
- break;*/
case SHP_MISSILE:
j = &players[k->t_owner];
#ifdef SOUND
@@ -2665,40 +2654,48 @@
clearzone[3][clearcount] = BMP_DRONE_HEIGHT * SCALE / scaleFactor + 2;
clearcount++;
break;
-/* case SHP_TORP:
- image = getImage(friendlyThingy(k) ? I_MTORP : I_ETORP);
- frame = udcounter + k->t_no;
- break;
- case SHP_PLASMA:
- case SHP_MINE: // use plasma until I get a nifty bitmap
- image = getImage(friendlyThingy(k) ? I_MPLASMATORP : I_EPLASMATORP);
- frame = udcounter + k->t_no;
- break;
- case SHP_PBOOM:
- image = getImage(friendlyThingy(k) ? I_MPLASMACLOUD : I_EPLASMACLOUD);
- k->t_fuse--;
- if (k->t_fuse < 0) {
- k->t_shape = SHP_BLANK;
- return;
- }
- if (k->t_fuse > image->frames) {
- k->t_fuse = image->frames;
- }
- frame = image->frames - k->t_fuse;
- break;
case SHP_FBOOM:
- image = getImage(friendlyThingy(k) ? I_MFIGHTERCLOUD : I_EFIGHTERCLOUD);
- k->t_fuse--;
- if (k->t_fuse < 0) {
- k->t_shape = SHP_BLANK;
- return;
- }
- if (k->t_fuse > image->frames) {
- k->t_fuse = image->frames;
- }
- frame = image->frames - k->t_fuse;
+ k->t_fuse--;
+ frame = k->t_fuse * 10 / server_ups;
+
+ if (k->t_fuse < 0)
+ {
+ k->t_shape = SHP_BLANK;
+ return;
+ }
+
+ if (frame >= BMP_FIGHTERDET_FRAMES)
+ frame = BMP_FIGHTERDET_FRAMES - 1;
+
+#ifdef SOUND
+ if (k->t_fuse == (MAX(2, BMP_FIGHTERDET_FRAMES * server_ups / 10) - 1))
+ {
+ SetDistAngle(dx, dy);
+ // At short distances, don't use angular sound
+ if (!soundAngles || distance < SCALE/2)
+ Play_Sound_Loc(PLASMA_HIT_WAV, SF_WEAPONS, -1, distance);
+ else
+ Play_Sound_Loc(PLASMA_HIT_WAV, SF_WEAPONS, angle, distance);
+ }
+#endif
+ W_WriteScaleBitmap (dx - (BMP_FIGHTERDET_WIDTH / 2) * SCALE / scaleFactor,
+ dy - (BMP_FIGHTERDET_HEIGHT / 2) * SCALE / scaleFactor,
+ BMP_FIGHTERDET_WIDTH * SCALE / scaleFactor,
+ BMP_FIGHTERDET_HEIGHT * SCALE / scaleFactor,
+ BMP_FIGHTERDET_WIDTH,
+ BMP_FIGHTERDET_HEIGHT,
+ 0,
+ colorWeapons ? fighterc_explosion_bitmap[frame] : fighter_explosion_bitmap[frame],
+ playerColor (&players[k->t_owner]),
+ w);
+ clearzone[0][clearcount] = dx - (BMP_FIGHTERDET_WIDTH / 2) * SCALE / scaleFactor ;
+ clearzone[1][clearcount] = dy - (BMP_FIGHTERDET_HEIGHT / 2) * SCALE / scaleFactor;
+ clearzone[2][clearcount] = BMP_FIGHTERDET_WIDTH * SCALE / scaleFactor;
+ clearzone[3][clearcount] = BMP_FIGHTERDET_HEIGHT * SCALE / scaleFactor;
+ clearcount++;
break;
- */
+ /* It appears all missile/fighter explosions are sent as SHP_PBOOM, oh well */
+ case SHP_PBOOM:
case SHP_DBOOM:
k->t_fuse--;
frame = k->t_fuse * 10 / server_ups;
@@ -2713,7 +2710,7 @@
frame = BMP_DRONEDET_FRAMES - 1;
#ifdef SOUND
- if (k->t_fuse == (MAX(2, BMP_TORPDET_FRAMES * server_ups / 10) - 1))
+ if (k->t_fuse == (MAX(2, BMP_DRONEDET_FRAMES * server_ups / 10) - 1))
{
SetDistAngle(dx, dy);
// At short distances, don't use angular sound
@@ -2739,11 +2736,83 @@
clearzone[3][clearcount] = BMP_DRONEDET_HEIGHT * SCALE / scaleFactor;
clearcount++;
break;
- /*
case SHP_FIGHTER:
- image = getImage(friendlyThingy(k) ? I_MFIGHTER : I_EFIGHTER);
- frame = (int) (k->t_dir * image->frames + 128) / 256;
- break;
+ j = &players[k->t_owner];
+#ifdef SOUND
+ if (k->t_owner != me->p_no)
+ {
+ num_other_missiles++;
+ SetDistAngle(dx, dy);
+ if (distance < other_missile_dist)
+ {
+ other_missile_dist = distance;
+ other_missile_angle = angle;
+ }
+ }
+#endif
+ if (colorWeapons)
+ {
+ if (myPlayer(j))
+ fighterTeam = 0;
+ else
+ {
+ switch (j->p_team)
+ {
+ case FED:
+ fighterTeam = 1;
+ break;
+ case KLI:
+ fighterTeam = 3;
+ break;
+ case ORI:
+ fighterTeam = 4;
+ break;
+ case ROM:
+ fighterTeam = 5;
+ break;
+ default: // IND
+ fighterTeam = 2;
+ }
+ }
+ W_WriteScaleBitmap (dx - (BMP_FIGHTER_WIDTH / 2) * SCALE / scaleFactor,
+ dy - (BMP_FIGHTER_HEIGHT / 2) * SCALE / scaleFactor,
+ BMP_FIGHTER_WIDTH * SCALE / scaleFactor,
+ BMP_FIGHTER_HEIGHT * SCALE / scaleFactor,
+ BMP_FIGHTER_WIDTH,
+ BMP_FIGHTER_HEIGHT,
+ (360 * k->t_dir/255),
+ fighterc_bitmap[fighterTeam],
+ playerColor (j),
+ w);
+ }
+ else
+ {
+ W_WriteScaleBitmap (dx - (BMP_FIGHTER_WIDTH / 2) * SCALE / scaleFactor,
+ dy - (BMP_FIGHTER_HEIGHT / 2) * SCALE / scaleFactor,
+ BMP_FIGHTER_WIDTH * SCALE / scaleFactor,
+ BMP_FIGHTER_HEIGHT * SCALE / scaleFactor,
+ BMP_FIGHTER_WIDTH,
+ BMP_FIGHTER_HEIGHT,
+ (360 * k->t_dir/255),
+ fighter_bitmap,
+ playerColor (j),
+ w);
+ }
+ clearzone[0][clearcount] = dx - (BMP_FIGHTER_WIDTH / 2) * SCALE / scaleFactor - 1;
+ clearzone[1][clearcount] = dy - (BMP_FIGHTER_HEIGHT / 2) * SCALE / scaleFactor - 1;
+ clearzone[2][clearcount] = BMP_FIGHTER_WIDTH * SCALE / scaleFactor + 2;
+ clearzone[3][clearcount] = BMP_FIGHTER_HEIGHT * SCALE / scaleFactor + 2;
+ clearcount++;
+ break;
+/*
+ These 4 appear unused....
+
+ case SHP_TORP:
+ case SHP_PLASMA:
+ case SHP_MINE:
+ case SHP_BOOM:
+*/
+/*
case SHP_WARP_BEACON:
image = getImage(I_WARPBEACON);
frame = udcounter;