Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs16:/tmp/cvs-serv25761/src
Modified Files:
dashboard.c dashboard3.c data.c defaults.c enter.c helpwin.c
inform.c input.c local.c map.c mswindow.c newwin.c option.c
planetlist.c playerlist.c socket.c warning.c
Log Message:
Paradise changes:
New folder in resources tree named paradise which contains all paradise
related bitmaps.
Added support for paradise shipyard graphics, stars, ships (mono and color),
and missiles,
Added several parallel defines to deal with the problem of overlapping defines
(ie PFOBSERV overlap with PFWARP). Also things like planet graphics
having more bitmap frames due to shipyards. It moves bronco and paradise
compatability further apart, but only by keeping them separate can I attempt
to get this to work, there's just too many conflicts to try to resolve.
Moved flagship (frigate?) to overlap with galaxy class in array of ship types,
seems best solution (overlap with AT was previous way). GA and FL/FR
seem to be identical on the pserver.
Added new keys for engage warp (J), toggle warp (^j) and afterburners (.).
Apparently the bronco way of setting maxwarp (speed req to speed 99) is
the paradise way of requesting to engage warp, so that had to be switched
around a bit.
As for changes that effect bronco:
1) Added new dashboard message types for paradise, caused renumbering
of internal counter for impulse/stopped but this doesn't matter.
2) Found bug with plasma and torp fuses (mono) where the final frame was
not being drawn due to logic error regarding fuses.
3) Added check during receiving login packet, if the proper pad bits are
not set right, it will close client. So running netrek.exe, you can't connect
to a paradise server. Running paradise.exe, you can't connect to a
bronco server. Ideally would send user a popup box but ran into issue
with that, it was continually polling the password entry screen so that
popup box got sent behind the (now-frozen) netrek window. Could use
some work, to close client properly AND send a popup box explaining
why.
Index: mswindow.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- mswindow.c 17 May 2007 08:49:49 -0000 1.83
+++ mswindow.c 18 May 2007 19:54:38 -0000 1.84
@@ -578,6 +578,35 @@
free (genopic);
free (genopic2);
+#ifdef PARADISE
+ free (drone_bitmap);
+ free (dronec_bitmap);
+ free (mdronec_bitmap);
+ free (base_drone_explosion_bitmap);
+ for (i = 0; i < BMP_DRONEDET_FRAMES; i++)
+ free (drone_explosion_bitmap[i]);
+ free (base_dronec_explosion_bitmap);
+ for (i = 0; i < BMP_DRONEDET_FRAMES; i++)
+ free (dronec_explosion_bitmap[i]);
+ free (gear_bitmap);
+ free (mgear_bitmap);
+ free (base_star_bitmap);
+ for (i = 0; i < STAR_VIEWS; i++)
+ free (star_bitmap[i]);
+ free (star_mbitmap);
+ free (paradise_ship_bitmaps);
+ free (paradise_cship_self_bitmaps);
+ free (paradise_cship_bitmaps);
+ for (j = 0; j < NUM_PSHIP_TYPES; j++)
+ {
+ for (i = 0; i < NUMTEAMS; i++)
+ {
+ free (paradise_ships[j][i]);
+ free (paradise_cships_self[j][i]);
+ free (paradise_cships[j][i]);
+ }
+ }
+#endif
//Remove default objects
while (defaults)
{
Index: dashboard.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/dashboard.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- dashboard.c 13 Apr 2007 11:07:29 -0000 1.22
+++ dashboard.c 18 May 2007 19:54:36 -0000 1.23
@@ -460,18 +460,50 @@
msgtype = 4;
color = W_White;
}
+#ifdef PARADISE
+ /* Transwarp text */
+ else if (me->p_flags & PFWARP)
+ {
+ sprintf (buf, "Warp");
+ msgtype = 5;
+ color = W_White;
+ }
+ /* Afterburners */
+ else if (me->p_flags & PFAFTER)
+ {
+ sprintf (buf, "Aftrbrn");
+ msgtype = 6;
+ color = W_Red;
+ }
+ /* Warp preparation */
+ else if (me->p_flags & PFWARPPREP)
+ {
+ if (me->p_flags & PFWPSUSPENDED)
+ {
+ sprintf (buf, "WrpPaus");
+ msgtype = 7;
+ color = W_Cyan;
+ }
+ else
+ {
+ sprintf (buf, "WrpPrep");
+ msgtype = 8;
+ color = W_Cyan;
+ }
+ }
+#endif
/* Ship stopped */
else if (me->p_speed == 0)
{
sprintf (buf, "Stopped");
- msgtype = 5;
+ msgtype = 9;
color = W_Grey;
}
/* Default impulse text */
else
{
sprintf (buf, "Impulse");
- msgtype = 6;
+ msgtype = 10;
color = W_Yellow;
}
@@ -524,6 +556,11 @@
{
static float old_kills = -1.0;
static int old_torp = -1;
+#ifdef PARADISE
+ int i = 0;
+ static int old_drone = -1;
+ static int old_totmissiles = -1;
+#endif
static unsigned int old_flags = (unsigned int) -1;
static int old_tourn = 0;
register int BAR_LENGTH = W_Textwidth/3 + 9 * W_Textwidth;
@@ -637,6 +674,30 @@
}
old_torp = plr->p_ntorp;
}
+#ifdef PARADISE
+ /* code to show the number of drones out */
+ strcpy(buf, "Miss: ");
+ if (fr || plr->p_totmissiles != old_totmissiles || plr->p_ndrone != old_drone)
+ {
+ if (plr->p_totmissiles > 0)
+ sprintf(buf + strlen(buf), "L%d ", plr->p_totmissiles);
+ old_totmissiles = me->p_totmissiles;
+ if (plr->p_ndrone > 0)
+ sprintf(buf + strlen(buf), "O%d", plr->p_ndrone);
+ old_drone = plr->p_ndrone;
+ if (!plr->p_totmissiles && !plr->p_ndrone) /* clear missile text */
+ W_ClearArea(tstatw, 199 * W_Textwidth / 3, 3 + 2 * (W_Textheight + SPACING), 13 * W_Textwidth, W_Textheight);
+ else
+ {
+ for (i = strlen(buf); i < 14; i++)
+ {
+ buf[i] = ' ';
+ buf[14] = 0;
+ }
+ W_WriteText(tstatw, 199 * W_Textwidth / 3, 3 + 2 * (W_Textheight + SPACING), textColor, buf, 14, W_RegularFont);
+ }
+ }
+#endif
}
Index: map.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/map.c,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- map.c 17 May 2007 08:49:49 -0000 1.56
+++ map.c 18 May 2007 19:54:38 -0000 1.57
@@ -344,6 +344,16 @@
i += 2;
if (p->pl_flags & PLFUEL)
i += 1;
+#ifdef PARADISE
+ if (p->pl_flags & PLSHIPYARD)
+ {
+ i = 9; /* Base for shipyards */
+ if (p->pl_flags & PLFUEL)
+ i += 1;
+ if (p->pl_armies > 4)
+ i += 2;
+ }
+#endif
return bmplanets[i];
}
else
@@ -469,6 +479,18 @@
0,
mwrench_bitmap, planetColor(p),
window);
+#ifdef PARADISE
+ if (p->pl_flags & PLSHIPYARD)
+ W_WriteScaleBitmap(dx + destwidth,
+ dy - destheight/3 - 1,
+ destwidth/3 + 1,
+ destheight/3 + 1,
+ BMP_GEAR_WIDTH,
+ BMP_GEAR_HEIGHT,
+ 0,
+ mgear_bitmap, planetColor(p),
+ window);
+#endif
if (p->pl_flags & PLFUEL)
W_WriteScaleBitmap(dx + destwidth,
dy,
@@ -531,6 +553,11 @@
sendPlanetsPacket(l->pl_no);
}
+#ifdef PARADISE
+ /* Stars need to be refreshed often... */
+ if (PL_TYPE(*l) == PLSTAR)
+ l->pl_flags |= PLREDRAW;
+#endif
if (!(l->pl_flags & PLREDRAW))
continue;
@@ -550,7 +577,15 @@
odx = pl_update[l->pl_no].plu_x * GWINSIDE / GWIDTH;
ody = pl_update[l->pl_no].plu_y * GWINSIDE / GWIDTH;
-
+#ifdef PARADISE
+ if (PL_TYPE(*l) == PLSTAR)
+ W_ClearArea (mapw, dx - ( BMP_MSTAR_WIDTH / 2),
+ dy - ( BMP_MSTAR_HEIGHT / 2),
+ BMP_MSTAR_WIDTH,
+ BMP_MSTAR_HEIGHT);
+ else
+ {
+#endif
/* XFIX */
if (planetBitmapGalaxy == 3)
W_ClearArea (mapw, odx - (5 * BMP_MPLANET_WIDTH / 6) - 1,
@@ -566,11 +601,22 @@
ody + (BMP_MPLANET_HEIGHT / 2),
backColor, l->pl_name, 3, planetFont (l));
pl_update[l->pl_no].plu_update = 0;
+#ifdef PARADISE
+ }
+#endif
}
else
{
/* Clear the planet normally */
-
+#ifdef PARADISE
+ if (PL_TYPE(*l) == PLSTAR)
+ W_ClearArea (mapw, dx - ( BMP_MSTAR_WIDTH / 2),
+ dy - ( BMP_MSTAR_HEIGHT / 2),
+ BMP_MSTAR_WIDTH,
+ BMP_MSTAR_HEIGHT);
+ else
+ {
+#endif
/* XFIX */
if (planetBitmapGalaxy == 3)
W_ClearArea (mapw, dx - (5 * BMP_MPLANET_WIDTH / 6) - 1,
@@ -584,16 +630,19 @@
dy - (BMP_MPLANET_HEIGHT / 2 + 4),
BMP_MPLANET_WIDTH + 8,
BMP_MPLANET_HEIGHT + 8);
+#ifdef PARADISE
+ }
+#endif
}
/* Draw the new planet */
#ifdef PARADISE
if (PL_TYPE(*l) == PLSTAR)
- W_WriteScaleBitmap (dx - (BMP_MSTAR_WIDTH / 2) * SCALE / scaleFactor,
- dy - (BMP_MSTAR_HEIGHT / 2) * SCALE / scaleFactor,
- BMP_MSTAR_WIDTH * SCALE / scaleFactor,
- BMP_MSTAR_HEIGHT * SCALE / scaleFactor,
+ W_OverlayScaleBitmap (dx - (BMP_MSTAR_WIDTH / 2),
+ dy - (BMP_MSTAR_HEIGHT / 2),
+ BMP_MSTAR_WIDTH,
+ BMP_MSTAR_HEIGHT,
BMP_MSTAR_WIDTH,
BMP_MSTAR_HEIGHT,
0,
@@ -1304,6 +1353,9 @@
register struct phaser *ph;
register struct torp *k;
register struct plasmatorp *pt;
+#ifdef PARADISE
+ register struct thingy *th;
+#endif
int tx, ty;
for (i = 0, j = &players[i]; i < MAXPLAYER; i++, j++)
@@ -1388,7 +1440,11 @@
checkRedraw(tx * (GWIDTH / GWINSIDE), ty * (GWIDTH / GWINSIDE));
}
- if (!j->p_ntorp && !j->p_nplasmatorp)
+ if (!j->p_ntorp && !j->p_nplasmatorp
+#ifdef PARADISE
+ && !j->p_ndrone
+#endif
+ )
continue;
/* torps */
@@ -1506,6 +1562,29 @@
/* Check for overwriting planets */
checkRedraw(pt->pt_x, pt->pt_y);
}
+#ifdef PARADISE
+ /* missiles */
+ for (h = i * npthingies, th = &thingies[i * npthingies]; h < npthingies * (i + 1); h++, th++)
+ {
+ if (th->t_x < 0 || th->t_y < 0)
+ continue;
+
+ dx = th->t_x * GWINSIDE / GWIDTH;
+ dy = th->t_y * GWINSIDE / GWIDTH;
+
+ /* Draw missile as a 2x2 pixel torp */
+ W_MakeLine(mapw, dx, dy, dx + 1, dy, torpColor (th));
+ W_MakeLine(mapw, dx, dy + 1, dx + 1, dy + 1, torpColor (th));
+ mcleararea[0][mclearacount] = dx;
+ mcleararea[1][mclearacount] = dy;
+ mcleararea[2][mclearacount] = 2;
+ mcleararea[3][mclearacount] = 2;
+ mclearacount++;
+
+ /* Check for overwriting planets */
+ checkRedraw(k->t_x, k->t_y);
+ }
+#endif
}
}
/* Reset weapon update marker */
Index: newwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -d -r1.64 -r1.65
--- newwin.c 17 May 2007 08:49:49 -0000 1.64
+++ newwin.c 18 May 2007 19:54:38 -0000 1.65
@@ -458,18 +458,15 @@
{
int j, k;
- if ( access("bitmaps/shiplib/paradise_ships.bmp", R_OK) == 0 )
- {
- paradise_ship_bitmaps =
- W_StoreBitmap3 ("bitmaps/shiplib/paradise_ships.bmp", BMP_SHIP_WIDTH * NUM_PSHIP_TYPES,
- BMP_SHIP_HEIGHT * NUMTEAMS, BMP_PSHIP, w, LR_MONOCHROME);
- }
- else // No paradise ship bitmaps, doh!
- {
- LineToConsole("Failed to load paradise bitmaps, defaulting to cruiser for all ships.\n");
- noParadiseBitmaps = 1;
- return;
- }
+ paradise_ship_bitmaps =
+ W_StoreBitmap3 ("bitmaps/paradise/paradise_ships.bmp", BMP_SHIP_WIDTH * NUM_PSHIP_TYPES,
+ BMP_SHIP_HEIGHT * NUMTEAMS, BMP_PSHIP, w, LR_MONOCHROME);
+ paradise_cship_self_bitmaps =
+ W_StoreBitmap3 ("bitmaps/paradise/paradise_cships_self.bmp", BMP_SHIP_WIDTH * NUM_PSHIP_TYPES,
+ BMP_SHIP_HEIGHT * NUMTEAMS, BMP_PSHIP, w, LR_DEFAULTCOLOR);
+ paradise_cship_bitmaps =
+ W_StoreBitmap3 ("bitmaps/paradise/paradise_cships.bmp", BMP_SHIP_WIDTH * NUM_PSHIP_TYPES,
+ BMP_SHIP_HEIGHT * NUMTEAMS, BMP_PSHIP, w, LR_DEFAULTCOLOR);
for (j = 0; j < NUM_PSHIP_TYPES; j++)
{
@@ -478,9 +475,62 @@
paradise_ships[j][k] =
W_PointBitmap2 (paradise_ship_bitmaps, j, k, BMP_SHIP_WIDTH,
BMP_SHIP_HEIGHT);
+ paradise_cships_self[j][k] =
+ W_PointBitmap2 (paradise_cship_self_bitmaps, j, k, BMP_SHIP_WIDTH,
+ BMP_SHIP_HEIGHT);
+ paradise_cships[j][k] =
+ W_PointBitmap2 (paradise_cship_bitmaps, j, k, BMP_SHIP_WIDTH,
+ BMP_SHIP_HEIGHT);
}
}
}
+
+/******************************************************************************/
+/*** loadparadisethings() - misc paradise art like stars, wormholes, etc
+/******************************************************************************/
+void loadparadisethings (void)
+{
+ int i;
+
+ base_star_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/star.bmp", BMP_STAR_WIDTH,
+ BMP_STAR_HEIGHT * STAR_VIEWS, BMP_STAR, w,
+ LR_DEFAULTCOLOR);
+ for (i = 0; i < STAR_VIEWS; i++)
+ star_bitmap[i] =
+ W_PointBitmap2 (base_star_bitmap, 0, i, BMP_STAR_WIDTH, BMP_STAR_HEIGHT);
+
+ star_mbitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/starm.bmp", BMP_MSTAR_WIDTH,
+ BMP_MSTAR_HEIGHT, BMP_MSTAR, mapw,
+ LR_DEFAULTCOLOR);
+
+ drone_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/drone.bmp", BMP_DRONE_WIDTH,
+ BMP_DRONE_HEIGHT, BMP_DRONE, w, LR_MONOCHROME);
+ dronec_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/droneC.bmp", BMP_DRONE_WIDTH,
+ BMP_DRONE_HEIGHT, BMP_DRONEC, w, LR_DEFAULTCOLOR);
+ mdronec_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/mdroneC.bmp", BMP_DRONE_WIDTH,
+ BMP_DRONE_HEIGHT, BMP_MDRONEC, w, LR_DEFAULTCOLOR);
+
+ base_drone_explosion_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/dronecloud.bmp", BMP_DRONEDET_WIDTH,
+ BMP_DRONEDET_HEIGHT * BMP_DRONEDET_FRAMES, BMP_DRONECLOUD, w,
+ LR_MONOCHROME);
+ for (i = 0; i < BMP_DRONEDET_FRAMES; i++)
+ drone_explosion_bitmap[i] =
+ W_PointBitmap2 (base_drone_explosion_bitmap, 0, i, BMP_DRONEDET_WIDTH, BMP_DRONEDET_HEIGHT);
+
+ base_dronec_explosion_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/dronecloudC.bmp", BMP_DRONEDET_WIDTH,
+ BMP_DRONEDET_HEIGHT * BMP_DRONEDET_FRAMES, BMP_DRONECLOUD, w,
+ LR_DEFAULTCOLOR);
+ 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);
+}
#endif
/******************************************************************************/
@@ -723,6 +773,12 @@
W_StoreBitmap3 ("bitmaps/planlibm/color/wrench.bmp",
BMP_WRENCH_WIDTH, BMP_WRENCH_HEIGHT, BMP_WRENCHBMP, w,
LR_DEFAULTCOLOR);
+#ifdef PARADISE
+ gear_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/gear.bmp",
+ BMP_GEAR_WIDTH, BMP_GEAR_HEIGHT, BMP_GEARBMP, w,
+ LR_DEFAULTCOLOR);
+#endif
fuel_bitmap =
W_StoreBitmap3 ("bitmaps/planlibm/color/fuel.bmp",
BMP_FUEL_WIDTH, BMP_FUEL_HEIGHT, BMP_FUELBMP, w,
@@ -815,35 +871,18 @@
W_StoreBitmap3 ("bitmaps/planlibm/color/wrench.bmp",
BMP_WRENCH_WIDTH, BMP_WRENCH_HEIGHT, BMP_WRENCHBMP, mapw,
LR_DEFAULTCOLOR);
+#ifdef PARADISE
+ mgear_bitmap =
+ W_StoreBitmap3 ("bitmaps/paradise/gear.bmp",
+ BMP_GEAR_WIDTH, BMP_GEAR_HEIGHT, BMP_GEARBMP, w,
+ LR_DEFAULTCOLOR);
+#endif
mfuel_bitmap =
W_StoreBitmap3 ("bitmaps/planlibm/color/fuel.bmp",
BMP_FUEL_WIDTH, BMP_FUEL_HEIGHT, BMP_FUELBMP, mapw,
LR_DEFAULTCOLOR);
}
-#ifdef PARADISE
-/******************************************************************************/
-/*** loadparadisethings() - misc paradise art like stars, wormholes, etc
-/******************************************************************************/
-void loadparadisethings (void)
-{
- int i;
-
- base_star_bitmap =
- W_StoreBitmap3 ("bitmaps/misclib/color/star.bmp", BMP_STAR_WIDTH,
- BMP_STAR_HEIGHT * STAR_VIEWS, BMP_STAR, w,
- LR_DEFAULTCOLOR);
- for (i = 0; i < STAR_VIEWS; i++)
- star_bitmap[i] =
- W_PointBitmap2 (base_star_bitmap, 0, i, BMP_STAR_WIDTH, BMP_STAR_HEIGHT);
-
- star_mbitmap =
- W_StoreBitmap3 ("bitmaps/misclib/color/starm.bmp", BMP_MSTAR_WIDTH,
- BMP_MSTAR_HEIGHT, BMP_MSTAR, mapw,
- LR_DEFAULTCOLOR);
-}
-#endif
-
/******************************************************************************/
/*** handleMessageWindowKeyDown()
/******************************************************************************/
@@ -955,7 +994,11 @@
#endif
helpWin = W_MakeTextWindow ("help", 20,
TWINSIDE + 2 * THICKBORDER + STATSIZE + 2 * BORDER - 5,
+#ifdef PARADISE
+ 160, 23, NULL, BORDER);
+#else
160, 21, NULL, BORDER);
+#endif
#ifdef RECORDGAME
if (playback)
@@ -1233,6 +1276,10 @@
#ifdef PARADISE
loadparadisethings();
#endif
+#ifdef PARADISE
+ Planlib = "bitmaps/paradise/paradise_plan.bmp";
+ MPlanlib = "bitmaps/paradise/paradise_mplan.bmp";
+#else
switch (planetBitmap) // Case 3 = new color, but we never use Planlib
{
case 1:
@@ -1257,7 +1304,8 @@
MPlanlib = "bitmaps/planlibm/mplan.bmp";
break;
}
-
+#endif
+
if (!dynamicBitmaps) /* Only load needed bitmaps */
{
switch (colorClient)
@@ -1380,12 +1428,12 @@
mplasmatorp =
W_StoreBitmap3 ("bitmaps/weaplibm/mono/mplasma.bmp", BMP_MPLASMA_WIDTH,
BMP_MPLASMA_HEIGHT, BMP_MPLASMA, w, LR_MONOCHROME);
-
+
base_planets =
- W_StoreBitmap3 (Planlib, BMP_PLANET_WIDTH, BMP_PLANET_HEIGHT * 9,
+ W_StoreBitmap3 (Planlib, BMP_PLANET_WIDTH, BMP_PLANET_HEIGHT * PLANET_VIEWS,
BMP_PLANET000, w, LR_MONOCHROME);
base_mplanets =
- W_StoreBitmap3 (MPlanlib, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT * 9,
+ W_StoreBitmap3 (MPlanlib, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT * PLANET_VIEWS,
BMP_MPLANET000, mapw, LR_MONOCHROME);
for (k = 0; k < PLANET_VIEWS; k++)
Index: input.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/input.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- input.c 17 May 2007 08:49:48 -0000 1.40
+++ input.c 18 May 2007 19:54:38 -0000 1.41
@@ -276,7 +276,7 @@
emptyKey, /* 31 */
Key200, /* ^h */
emptyKey, /* 31 */
- emptyKey, /* 31 */
+ Key202, /* ^j */
emptyKey, /* 31 */
Key204, /* ^l */
Key205, /* ^m */
@@ -2282,7 +2282,11 @@
void
Key37 (void)
{
+#ifdef PARADISE
+ set_speed(me->p_ship.s_maxspeed);
+#else
set_speed (99); /* Max speed... */
+#endif
}
/******************************************************************************/
@@ -2391,7 +2395,11 @@
void
Key46 (void)
{
+#ifdef PARADISE
+ set_speed(98); /* afterburners */
+#else
emptyKey();
+#endif
}
/******************************************************************************/
@@ -2729,7 +2737,11 @@
void
Key74 (W_Event * data)
{
+#ifdef PARADISE
+ set_speed(99); /* warp! */
+#else
emptyKey ();
+#endif
}
/******************************************************************************/
@@ -3869,3 +3881,20 @@
{
emergency (other2, data);
}
+
+/******************************************************************************/
+/*** Key202() ***/
+/******************************************************************************/
+void
+Key202 (W_Event * data)
+{
+#ifdef PARADISE
+ /* suspend warp toggle [BDyess] */
+ if (me->p_flags & PFWPSUSPENDED)
+ set_speed(96); /* unsuspend */
+ else
+ set_speed(97); /* suspend */
+#else
+ emptyKey ();
+#endif
+}
\ No newline at end of file
Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -d -r1.102 -r1.103
--- local.c 17 May 2007 08:49:48 -0000 1.102
+++ local.c 18 May 2007 19:54:38 -0000 1.103
@@ -19,6 +19,7 @@
#include "struct.h"
#include "data.h"
#include "local.h"
+#include "packets.h"
#include "proto.h"
#include "SDL.h"
#include "SDL_mixer.h"
@@ -53,6 +54,13 @@
static int sound_plasma = 0;
static int sound_other_plasmas = 0;
static int num_other_plasmas = 0;
+#ifdef PARADISE
+static int sound_missiles = 0;
+static int sound_other_missiles = 0;
+static int num_other_missiles = 0;
+static int other_missile_dist = 0;
+static int other_missile_angle = 0;
+#endif
static unsigned int sound_flags = 0;
static int other_torp_dist = 0;
static int other_torp_angle = 0;
@@ -381,6 +389,16 @@
i += 2;
if (p->pl_flags & PLFUEL)
i += 1;
+#ifdef PARADISE
+ if (p->pl_flags & PLSHIPYARD)
+ {
+ i = 9; /* Base for shipyards */
+ if (p->pl_flags & PLFUEL)
+ i += 1;
+ if (p->pl_armies > 4)
+ i += 2;
+ }
+#endif
return (bplanets[i]);
}
else
@@ -515,6 +533,18 @@
0,
wrench_bitmap, planetColor(p),
window);
+#ifdef PARADISE
+ if (p->pl_flags & PLSHIPYARD)
+ W_WriteScaleBitmap(dx + destwidth,
+ dy - destheight/3 - 1,
+ destwidth/3 + 1,
+ destheight/3 + 1,
+ BMP_GEAR_WIDTH,
+ BMP_GEAR_HEIGHT,
+ 0,
+ gear_bitmap, planetColor(p),
+ window);
+#endif
if (p->pl_flags & PLFUEL)
W_WriteScaleBitmap(dx + destwidth,
dy,
@@ -640,7 +670,7 @@
if observer is locked onto a planet, or is show_army_count feature packet is on */
if ((showArmy == 1 || showArmy == 3) && (l->pl_info & me->p_team)
#ifdef PARADISE
- && (PL_TYPE(*l) != PLSTAR)
+ && (PL_TYPE(*l) == PLPLANET)
#endif
&& (F_show_army_count ||
( (me->p_flags & PFORBIT) && (F_sp_generic_32 ? me->pl_orbit : get_closest_planet(me->p_x, me->p_y)) == l->pl_no)
@@ -753,6 +783,9 @@
int type;
W_Icon (*ship_bits)[SHIP_VIEWS];
+#ifdef PARADISE
+ W_Icon (*ship_bits_paradise)[NUMTEAMS];
+#endif
W_Icon (*ship_bitsHR);
/* Kludge to try to fix missing ID chars on tactical (short range)
@@ -1055,11 +1088,7 @@
type = j->p_ship.s_type;
#ifdef PARADISE
- // We missing paradise bitmaps?
- if (noParadiseBitmaps)
- type = CRUISER;
- // If it's a paradise ship, we only have 1 bitmap set
- // so let's use it, rotating bitmaps realtime.
+ // If it's a paradise ship, use a paradise bitmap set.
if (type >= PARADISE_SHIP_OFFSET)
{
int pos;
@@ -1082,6 +1111,16 @@
pos = 1;
break;
}
+ if (colorClient <= 0 || colorClient > 4)
+ ship_bits_paradise = paradise_ships;
+ else
+ {
+ if (myPlayer(j))
+ ship_bits_paradise = paradise_cships_self;
+ else
+ ship_bits_paradise = paradise_cships;
+ }
+
W_WriteScaleBitmap (dx - (j->p_ship.s_width / 2) * SCALE / scaleFactor,
dy - (j->p_ship.s_height / 2) * SCALE / scaleFactor,
j->p_ship.s_width * SCALE / scaleFactor,
@@ -1089,7 +1128,7 @@
BMP_SHIP_WIDTH,
BMP_SHIP_HEIGHT,
(360 * j->p_dir/255),
- paradise_ships[type - PARADISE_SHIP_OFFSET][pos],
+ ship_bits_paradise[type - PARADISE_SHIP_OFFSET][pos],
playerColor (j),
w);
}
@@ -2105,7 +2144,7 @@
k->t_fuse--;
frame = k->t_fuse * 10 / server_ups;
- if (k->t_fuse <= 0)
+ if (k->t_fuse < 0)
{
k->t_status = TFREE;
j->p_ntorp--;
@@ -2333,7 +2372,7 @@
pt->pt_fuse--;
frame = pt->pt_fuse * 10 / server_ups;
- if (pt->pt_fuse <= 0)
+ if (pt->pt_fuse < 0)
{
pt->pt_status = PTFREE;
players[pt->pt_owner].p_nplasmatorp--;
@@ -2484,6 +2523,186 @@
}
}
+#ifdef PARADISE
+void
+draw_one_thingy(struct thingy *k)
+{
+ int dx, dy;
+ int frame;
+ int view = scaleFactor * TWINSIDE / 2;
+
+ if (k->t_shape == SHP_BLANK)
+ return;
+ /* LineToConsole("%d,%d - %d,%d\n", me->p_x, me->p_y, k->t_x, k->t_y); */
+ dx = k->t_x - me->p_x;
+ dy = k->t_y - me->p_y;
+ if (ABS(dx) > view || ABS(dy) > view)
+ return;
+
+ 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:
+#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
+ W_WriteScaleBitmap (dx - (BMP_DRONE_WIDTH / 2) * SCALE / scaleFactor,
+ dy - (BMP_DRONE_HEIGHT / 2) * SCALE / scaleFactor,
+ BMP_DRONE_WIDTH * SCALE / scaleFactor,
+ BMP_DRONE_HEIGHT * SCALE / scaleFactor,
+ BMP_DRONE_WIDTH,
+ BMP_DRONE_HEIGHT,
+ (360 * k->t_dir/255),
+ (colorWeapons ? (myPlayer(&players[k->t_owner]) ? mdronec_bitmap : dronec_bitmap) : drone_bitmap),
+ playerColor (&players[k->t_owner]),
+ w);
+ clearzone[0][clearcount] = dx - (BMP_DRONE_WIDTH / 2) * SCALE / scaleFactor - 1;
+ clearzone[1][clearcount] = dy - (BMP_DRONE_HEIGHT / 2) * SCALE / scaleFactor - 1;
+ clearzone[2][clearcount] = BMP_DRONE_WIDTH * SCALE / scaleFactor + 2;
+ 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;
+ break;
+ */
+ case SHP_DBOOM:
+ k->t_fuse--;
+ frame = k->t_fuse * 10 / server_ups;
+
+ if (k->t_fuse < 0)
+ {
+ k->t_shape = SHP_BLANK;
+ return;
+ }
+
+ if (frame >= BMP_DRONEDET_FRAMES)
+ frame = BMP_DRONEDET_FRAMES - 1;
+
+#ifdef SOUND
+ if (k->t_fuse == (MAX(2, BMP_TORPDET_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_DRONEDET_WIDTH / 2) * SCALE / scaleFactor,
+ dy - (BMP_DRONEDET_HEIGHT / 2) * SCALE / scaleFactor,
+ BMP_DRONEDET_WIDTH * SCALE / scaleFactor,
+ BMP_DRONEDET_HEIGHT * SCALE / scaleFactor,
+ BMP_DRONEDET_WIDTH,
+ BMP_DRONEDET_HEIGHT,
+ 0,
+ drone_explosion_bitmap[frame],
+ playerColor (&players[k->t_owner]),
+ w);
+ clearzone[0][clearcount] = dx - (BMP_DRONEDET_WIDTH / 2) * SCALE / scaleFactor ;
+ clearzone[1][clearcount] = dy - (BMP_DRONEDET_HEIGHT / 2) * SCALE / scaleFactor;
+ clearzone[2][clearcount] = BMP_DRONEDET_WIDTH * SCALE / scaleFactor;
+ 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;
+ case SHP_WARP_BEACON:
+ image = getImage(I_WARPBEACON);
+ frame = udcounter;
+ if (k->t_fuse > 4) {
+ image = getImage(I_WARPFLASH);
+ }
+ if (++(k->t_fuse) > 6) {
+ k->t_fuse = 0;
+ }
+ break;
+*/
+ default:
+ LineToConsole("Wierd...unknown thingy number (%d).\n", k->t_shape);
+ return;
+ }
+}
+
+void
+DrawThingies (void)
+{
+ int i, h;
+ int count;
+ struct player *j;
+
+ for (j = players; j != players + MAXPLAYER; ++j)
+ {
+ i = j->p_no;
+
+ if (!j->p_ndrone)
+ return;
+ count = 0;
+
+ for (h = i * npthingies; h < npthingies * (i + 1); h++)
+ {
+ draw_one_thingy(&thingies[h]);
+ if (thingies[h].t_shape != SHP_BLANK)
+ count++;
+ }
+ j->p_ndrone = count;
+ }
+}
+#endif
static void
DrawMisc (void)
@@ -2851,11 +3070,26 @@
else
Play_Sound_Loc(FIRE_PLASMA_OTHER_WAV, SF_OTHER|SF_WEAPONS, other_plasma_angle, other_plasma_dist);
}
+#ifdef PARADISE
+ if (sound_missiles < me->p_ndrone )
+ Play_Sound(FIRE_PLASMA_WAV, SF_WEAPONS);
+ if (sound_other_missiles < num_other_missiles)
+ {
+ if (!soundAngles || other_missile_dist < SCALE/2)
+ Play_Sound_Loc(FIRE_TORP_OTHER_WAV, SF_OTHER|SF_WEAPONS, -1, other_missile_dist);
+ else
+ Play_Sound_Loc(FIRE_TORP_OTHER_WAV, SF_OTHER|SF_WEAPONS, other_missile_angle, other_missile_dist);
+ }
+#endif
// Reset locations and fuses of other's closest torps and plasmas
other_torp_dist = SOUND_MAXRANGE;
other_torp_angle = 0;
other_plasma_dist = SOUND_MAXRANGE;
other_plasma_angle = 0;
+#ifdef PARADISE
+ other_missile_dist = SOUND_MAXRANGE;
+ other_missile_angle = 0;
+#endif
sound_flags = me->p_flags;
sound_torps = me->p_ntorp;
@@ -2864,6 +3098,11 @@
sound_plasma = me->p_nplasmatorp;
sound_other_plasmas = num_other_plasmas;
num_other_plasmas = 0;
+#ifdef PARADISE
+ sound_missiles = me->p_ndrone;
+ sound_other_missiles = num_other_missiles;
+ num_other_missiles = 0;
+#endif
#endif
/* show 'lock' icon on local map (Actually an EM hack ) */
@@ -2966,6 +3205,9 @@
DrawTorps ();
DrawPlasmaTorps ();
+#ifdef PARADISE
+ DrawThingies ();
+#endif
if (!weaponsOnMap)
weaponUpdate = 0;
Index: enter.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/enter.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- enter.c 6 Apr 2007 06:46:31 -0000 1.10
+++ enter.c 18 May 2007 19:54:37 -0000 1.11
@@ -51,6 +51,9 @@
players = universe.players;
torps = universe.torps;
plasmatorps = universe.plasmatorps;
+#ifdef PARADISE
+ thingies = universe.thingies;
+#endif
status = universe.status;
planets = universe.planets;
phasers = universe.phasers;
Index: planetlist.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/planetlist.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- planetlist.c 17 May 2007 08:49:49 -0000 1.8
+++ planetlist.c 18 May 2007 19:54:39 -0000 1.9
@@ -45,10 +45,7 @@
planetlist (void)
{
#ifdef PARADISE
- if (paradise)
- planet_list_paradise();
- else
- {
+ planet_list_paradise();
#else
register int i;
char buf[BUFSIZ];
@@ -63,9 +60,6 @@
strcpy(priorplanets[i], "");
updatePlanetw ();
#endif
-#ifdef PARADISE
- }
-#endif
}
#ifdef PARADISE
@@ -128,11 +122,7 @@
for (team_pnum = 0; team_pnum < team_pcount[i]; team_pnum++, k++) {
j = team_p[i][team_pnum];
- /* (nplanets+13)/2 is the height of window; from newwin.c */
- if (k == 0 || k >= ((nplanets + 13) / 2)) {
- if (k != 0)
- continue;
- //wind = planetw2;
+ if (k == 0) {
sprintf(buf, "Planet name sctr own armies RESOURCES SURFC ATMOS VISIT TIME");
W_WriteText(wind, 2, 1, textColor, buf, strlen(buf),
W_RegularFont);
@@ -150,14 +140,9 @@
} else { /* do the original alpa only sort planet list */
for (i = 0, j = &planets[i]; i < nplanets; i++, j++, k++) {
- if (i == 0 || i == nplanets / 2) {
+ if (i == 0) {
sprintf(buf, "Planet name sctr own armies RESOURCES SURFC ATMOS VISIT TIME");
-
- if (i != 0) {
- continue;
- //wind = planetw2;
- }
W_WriteText(wind, 2, 1, textColor, buf, strlen(buf),
W_RegularFont);
k = 2;
Index: playerlist.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/playerlist.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- playerlist.c 17 May 2007 08:49:49 -0000 1.13
+++ playerlist.c 18 May 2007 19:54:39 -0000 1.14
@@ -108,7 +108,7 @@
static int plist2Width = 0;
#ifdef PARADISE
static char *my_classes[NUM_TYPES] = {
- "SC", "DD", "CA", "BB", "AS", "SB", "GA", "JS", "FL", "WB", "CL", "CV", "UT", "PT", "PU" };
+ "SC", "DD", "CA", "BB", "AS", "SB", "AT", "JS", "FL", "WB", "CL", "CV", "UT", "PT", "PU" };
#else
static char *my_classes[NUM_TYPES] =
{ "SC", "DD", "CA", "BB", "AS", "SB", "GA", "AT" };
Index: helpwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/helpwin.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- helpwin.c 16 May 2007 00:05:15 -0000 1.11
+++ helpwin.c 18 May 2007 19:54:37 -0000 1.12
@@ -79,6 +79,11 @@
"@ speed = 12",
"% speed = maximum",
"# speed = 1/2 maximum",
+#ifdef PARADISE
+ ". Afterburners",
+ "J Engage Warp",
+ "^j Toggle warp prep",
+#endif
"< slow speed 1",
"> speed up 1",
"k Set course",
@@ -302,7 +307,7 @@
char helpmessage[MAXHELP];
- /* 4 column help window. THis may be changed depending on font size */
+ /* 2 column help window. THis may be changed depending on font size */
for (column = 0; column < 2; column++)
{
for (row = 1; row < PBHELPMESSAGES / 2 + 1; row++)
Index: socket.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/socket.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- socket.c 17 May 2007 08:49:49 -0000 1.33
+++ socket.c 18 May 2007 19:54:39 -0000 1.34
@@ -1915,8 +1915,17 @@
{
loginAccept = packet->accept;
#ifdef PARADISE
+ if ((packet->pad2 != 69) && (packet->pad3 != 42))
+ {
+ LineToConsole ("Paradise.exe only works on paradise servers, either select a paradise server or use netrek.exe.\n");
+ exit (0);
+ }
+#else
if ((packet->pad2 == 69) && (packet->pad3 == 42))
- paradise = 1;
+ {
+ LineToConsole ("Netrek.exe only works on non-paradise servers, either select a non-paradise server or use paradise.exe.\n");
+ exit (0);
+ }
#endif
if (packet->accept)
{
@@ -3008,34 +3017,46 @@
}
void handleThingy (struct thingy_spacket *packet)
{
-/*
+
struct thingy *thetorp;
- //SANITY_THINGYNUM(ntohs(packet->tnum));
+#ifdef CORRUPTED_PACKETS
+ if (packet->tnum >= npthingies*nplayers + ngthingies)
+ {
+ LineToConsole ("handleThingy: bad index %d\n", packet->tnum);
+ return;
+ }
+#endif
thetorp = &thingies[ntohs(packet->tnum)];
thetorp->t_x = ntohl(packet->x);
thetorp->t_y = ntohl(packet->y);
- // printf("drone at %d, %d\n", thetorp->t_x, thetorp->t_y);
+ // LineToConsole("drone at %d, %d\n", thetorp->t_x, thetorp->t_y);
thetorp->t_dir = packet->dir;
-
- if (rotate) {
- rotate_gcenter(&thetorp->t_x, &thetorp->t_y);
- rotate_dir(&thetorp->t_dir, rotate_deg);
+#ifdef ROTATERACE
+ if (rotate)
+ {
+ rotate_coord (&thetorp->t_x, &thetorp->t_y, rotate_deg, GWIDTH / 2,
+ GWIDTH / 2);
}
+#endif
if (thetorp->t_shape == SHP_WARP_BEACON)
redrawall = 1; // shoot, route has changed
-*/
}
void handleThingyInfo (struct thingy_info_spacket *packet)
{
-/*
struct thingy *thetorp;
- //SANITY_THINGYNUM(ntohs(packet->tnum));
+#ifdef CORRUPTED_PACKETS
+ if (packet->tnum >= npthingies*nplayers + ngthingies)
+ {
+ LineToConsole ("handleThingyInfo: bad index %d\n", packet->tnum);
+ return;
+ }
+#endif
thetorp = &thingies[ntohs(packet->tnum)];
@@ -3046,7 +3067,7 @@
if (ntohs(packet->shape) == SHP_BOOM && thetorp->t_shape == SHP_BLANK) {
// FAT: redundant explosion; don't update p_ntorp
- // printf("texplode ignored\n");
+ // LineToConsole("texplode ignored\n");
return;
}
@@ -3057,21 +3078,24 @@
players[thetorp->t_owner].p_ndrone--;
}
thetorp->t_war = packet->war;
-
if (ntohs(packet->shape) != thetorp->t_shape) {
// FAT: prevent explosion reset
int shape = ntohs(packet->shape);
if(shape == SHP_BOOM || shape == SHP_PBOOM) {
if(thetorp->t_shape == SHP_FIGHTER)
+ {
shape = SHP_FBOOM;
+ thetorp->t_fuse = MAX(2, BMP_DRONEDET_FRAMES * server_ups / 10);
+ }
if(thetorp->t_shape == SHP_MISSILE)
+ {
shape = SHP_DBOOM;
- thetorp->t_fuse = BIGINT;
+ thetorp->t_fuse = MAX(2, BMP_DRONEDET_FRAMES * server_ups / 10);
+ }
}
thetorp->t_shape = shape;
}
-*/
}
void handleScan (struct scan_spacket *packet)
Index: dashboard3.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/dashboard3.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- dashboard3.c 13 Apr 2007 12:02:46 -0000 1.10
+++ dashboard3.c 18 May 2007 19:54:37 -0000 1.11
@@ -381,6 +381,14 @@
static int old_ful = -1;
static float old_kills = -1;
static int old_torp = -1;
+#ifdef PARADISE
+ char buf[16];
+ int i = 0;
+ static int old_drone = -1;
+ static int old_totmissiles = -1;
+ int drone;
+ int totmissiles;
+#endif
int cur_max, cur_arm, label_len;
/* Was 75, too bad it wasn't defined as an even multiple of text width. */
register int BAR_LENGTH = W_Textwidth/2 + 12 * W_Textwidth;
@@ -392,11 +400,19 @@
{
kills = players[me->p_playerl].p_kills;
torp = players[me->p_playerl].p_ntorp;
+#ifdef PARADISE
+ drone = players[me->p_playerl].p_ndrone;
+ totmissiles = players[me->p_playerl].p_totmissiles;
+#endif
}
else
{
kills = me->p_kills;
torp = me->p_ntorp;
+#ifdef PARADISE
+ drone = me->p_ndrone;
+ totmissiles = me->p_totmissiles;
+#endif
}
if (fr)
@@ -632,7 +648,32 @@
}
old_torp = torp;
}
-
+
+#ifdef PARADISE
+ /* code to show the number of drones out */
+ strcpy(buf, "M: ");
+ if (fr || totmissiles != old_totmissiles || drone != old_drone)
+ {
+ if (totmissiles > 0)
+ sprintf(buf + strlen(buf), "L%d ", totmissiles);
+ old_totmissiles = totmissiles;
+ if (drone > 0)
+ sprintf(buf + strlen(buf), "O%d", drone);
+ old_drone = drone;
+ if (!totmissiles && !drone) /* clear missile text */
+ W_ClearArea(tstatw, 7 + BAR_LENGTH, 12 + 2 * W_Textheight, 10 * W_Textwidth, W_Textheight);
+ else
+ {
+ for (i = strlen(buf); i < 11; i++)
+ {
+ buf[i] = ' ';
+ buf[11] = 0;
+ }
+ W_WriteText(tstatw, 7 + BAR_LENGTH, 12 + 2 * W_Textheight, textColor, buf, 11, W_RegularFont);
+ }
+ }
+#endif
+
old_spd = me->p_speed;
old_cur_max = cur_max;
old_shl = me->p_shield;
Index: data.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -d -r1.93 -r1.94
--- data.c 17 May 2007 08:49:48 -0000 1.93
+++ data.c 18 May 2007 19:54:37 -0000 1.94
@@ -26,6 +26,7 @@
struct status *status;
#ifdef PARADISE
struct status2 *status2;
+struct thingy *thingies;
#endif
struct ship *myship;
struct stats *mystats;
@@ -274,12 +275,10 @@
extern double Sin[], Cos[];
#ifdef PARADISE
-int paradise = 0; /* is the server a paradise server */
-int noParadiseBitmaps = 0;
int gwidth = GWIDTH; /* galaxy width, adjusted for zoom [BDyess] */
int offsetx = 0;
int offsety = 0; /* offsets when zooming [BDyess] */
-int nplayers = 36;
+int nplayers = 256;
int nshiptypes = 15;
int ntorps = 8;
int npthingies = 20;
@@ -342,11 +341,21 @@
// Paradise bitmaps
#ifdef PARADISE
+W_Icon drone_bitmap, dronec_bitmap, mdronec_bitmap;
+W_Icon base_drone_explosion_bitmap;
+W_Icon drone_explosion_bitmap[BMP_DRONEDET_FRAMES];
+W_Icon base_dronec_explosion_bitmap;
+W_Icon dronec_explosion_bitmap[BMP_DRONEDET_FRAMES];
+W_Icon gear_bitmap, mgear_bitmap;
W_Icon base_star_bitmap;
W_Icon star_bitmap[STAR_VIEWS];
W_Icon star_mbitmap;
W_Icon paradise_ship_bitmaps;
W_Icon paradise_ships[NUM_PSHIP_TYPES][NUMTEAMS];
+W_Icon paradise_cship_self_bitmaps;
+W_Icon paradise_cships_self[NUM_PSHIP_TYPES][NUMTEAMS];
+W_Icon paradise_cship_bitmaps;
+W_Icon paradise_cships[NUM_PSHIP_TYPES][NUMTEAMS];
#endif
// Ships
W_Icon ship_bitmaps[5];
Index: warning.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/warning.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- warning.c 28 Feb 2007 12:21:50 -0000 1.13
+++ warning.c 18 May 2007 19:54:39 -0000 1.14
@@ -145,4 +145,15 @@
if (doPhaser)
W_MessageAllowedWindows (WAM_PHASER, 0, 0, textColor, newtext, warncount, 0);
}
+#ifdef PARADISE
+ if (strncmp(text, "Missile away", 12) == 0) {
+ /* missile total kludge. No value until one is shot :( */
+ me->p_totmissiles = atoi(text + 13);
+ } else if (strcmp(text, "Prepping for warp jump") == 0) {
+ /* keep track of when in warp prep */
+ me->p_flags |= PFWARPPREP;
+ } else if (strcmp(text, "Warp drive aborted") == 0) {
+ me->p_flags &= ~PFWARPPREP;
+ }
+#endif
}
Index: inform.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/inform.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- inform.c 17 May 2007 08:49:48 -0000 1.5
+++ inform.c 18 May 2007 19:54:38 -0000 1.6
@@ -34,7 +34,7 @@
#ifdef PARADISE
static char *my_classes[NUM_TYPES] = {
- "SC", "DD", "CA", "BB", "AS", "SB", "GA", "JS", "FL", "WB", "CL", "CV", "UT", "PT", "PU"
+ "SC", "DD", "CA", "BB", "AS", "SB", "AT", "JS", "FL", "WB", "CL", "CV", "UT", "PT", "PU",
};
#else
static char *my_classes[NUM_TYPES] = {
Index: option.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- option.c 14 May 2007 02:56:41 -0000 1.49
+++ option.c 18 May 2007 19:54:38 -0000 1.50
@@ -784,6 +784,9 @@
for (i = 0; i < PLANET_VIEWS; i++)
free (bplanets[i]);
+#ifdef PARADISE
+ Planlib = "bitmaps/paradise/paradise_plan.bmp";
+#else
switch (planetBitmap)
{
case 1:
@@ -796,6 +799,7 @@
Planlib = "bitmaps/planlibm/plan.bmp";
break;
}
+#endif
base_planets = W_StoreBitmap3 (Planlib, BMP_PLANET_WIDTH, BMP_PLANET_HEIGHT * 9,
BMP_PLANET000, w, LR_MONOCHROME);
@@ -816,7 +820,10 @@
for (i = 0; i < MPLANET_VIEWS; i++)
free (bmplanets[i]);
-
+
+#ifdef PARADISE
+ MPlanlib = "bitmaps/paradise/paradise_mplan.bmp";
+#else
switch (planetBitmapGalaxy)
{
case 1:
@@ -829,6 +836,7 @@
MPlanlib = "bitmaps/planlibm/mplan.bmp";
break;
}
+#endif
base_mplanets = W_StoreBitmap3 (MPlanlib, BMP_MPLANET_WIDTH, BMP_MPLANET_HEIGHT * 9,
BMP_MPLANET000, mapw, LR_MONOCHROME);
Index: defaults.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -d -r1.86 -r1.87
--- defaults.c 17 May 2007 08:49:48 -0000 1.86
+++ defaults.c 18 May 2007 19:54:37 -0000 1.87
@@ -31,7 +31,7 @@
{"bb", NULL, NULL, NULL, NULL},
{"as", NULL, NULL, NULL, NULL},
{"sb", NULL, NULL, NULL, NULL},
- {"ga", NULL, NULL, NULL, NULL},
+ {"att", NULL, NULL, NULL, NULL},
{"js", NULL, NULL, NULL, NULL},
{"fl", NULL, NULL, NULL, NULL},
{"wb", NULL, NULL, NULL, NULL},