Update of /cvsroot/netrek/client/netrekxp/include
In directory sc8-pr-cvs16:/tmp/cvs-serv30344/include

Modified Files:
	data.h defs.h packets.h proto.h struct.h 
Log Message:
Add new #define PARADISE for trying to add support for paradise
servers.  There are some issues that make bronco and paradise not
compatable, namely overlapping definitions of packet types (see
CP_PLANET or GENERIC_32).  Also paradise uses a different set
of global constants (GWIDTH and MAXPLAYER come to mind as
the biggest changes).  So for now, for testing with paradise, I will
simply flip the PARADISE define in config.h.
Added in the paradise packet types and packet handlers.  The
actual functionality is commented out, it needs a lot more work.
Client is able to connect to paradise server with no broken packet
types, so that's a good start.
Don't save INL servers in UDP metacache.
Rename xtrekrc to netrekrc.txt in the help window.

Index: defs.h
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/include/defs.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- defs.h	28 Apr 2007 12:09:50 -0000	1.24
+++ defs.h	16 May 2007 00:05:11 -0000	1.25
@@ -8,6 +8,32 @@
 
 #include "copyright.h"
 
+#ifdef PARADISE
+/* defs for updatePlayer [BDyess] */
+#define NO_UPDATE	0
+#define SMALL_UPDATE	1	/* update non-blk_bozo players */
+#define LARGE_UPDATE	2	/* update blk_bozo players     */
+#define ALL_UPDATE	(SMALL_UPDATE|LARGE_UPDATE)	/* update both */
+
+/* defs for terrain */
+#define TERRAIN_STARTED 1
+#define TERRAIN_DONE    2
+
+/* defs for timer [BDyess] */
+#define T_NONE		0	/* no timer */
+#define T_DAY		1	/* time of day */
+#define T_SERVER	2	/* time on server */
+#define T_SHIP		3	/* time in ship */
+#define T_USER		4	/* user reset timer */
+#define T_TOTAL 	5	/* number of T_ defs */
+#define TIMESTRLEN	10	/* used in db_timer(), timeString() */
+
+/* defs for mapmode */
+#define GMAP_NEVER	0
+#define GMAP_FREQUENT 	1
+#define GMAP_INFREQUENT	2
+#endif /* PARADISE */
+
 /* Error handling */
 #define RETURNBASE 10
 
@@ -18,13 +44,19 @@
 #define MAX_MACRO       500
 #endif
 
-#ifndef MAXPLAYER
-#define MAXPLAYER 36            /* Defined in config.h as well */
+#ifdef PARADISE
+#define MAXPLAYER 257
+#else
+#define MAXPLAYER 36
 #endif
 
 #define TESTERS 4               /* Priveledged slots for
                                  * robots and game 'testers' */
+#ifdef PARADISE
+#define MAXPLANETS 60
+#else
 #define MAXPLANETS 40
+#endif
 #define MAXTORP 8
 #define MAXPLASMA 1
 #define PKEY 128
@@ -44,9 +76,12 @@
 #define DESIRED_TIC_LEN 10      /* for desired heading */
 
 /* These are configuration definitions */
-
+#ifdef PARADISE
+#define GWIDTH 200000
+#else
 #define GWIDTH 100000           /* galaxy is 100000 spaces
                                  * on a side */
+#endif
 #define SCALE 40                /* Window will be one pixel for
                                    these # spaces */
 #define WARP1 20                /* warp one will move 20

Index: data.h
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/include/data.h,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -d -r1.84 -r1.85
--- data.h	14 May 2007 02:56:38 -0000	1.84
+++ data.h	16 May 2007 00:05:11 -0000	1.85
@@ -37,6 +37,9 @@
 extern struct torp *torps;
 extern struct plasmatorp *plasmatorps;
 extern struct status *status;
+#ifdef PARADISE
+extern struct status2 *status2;
+#endif
 extern struct ship *myship;
 extern struct stats *mystats;
 extern struct planet *planets;
@@ -95,6 +98,10 @@
 extern int warncount;
 extern int warntimer;
 extern int infomapped;
+extern void *infothing; 	/* infow contents [BDyess] */
+extern int infoupdate;		/* update flag for infow [BDyess] */
+extern int infotype;		/* type of info thing [BDyess] */
+extern int scanmapped;		/* ATM - scanner stuff */
 extern int mustexit;
 extern int messtime;
 extern int keepPeace;

Index: packets.h
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/include/packets.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- packets.h	25 Apr 2007 06:50:41 -0000	1.7
+++ packets.h	16 May 2007 00:05:12 -0000	1.8
@@ -68,9 +68,10 @@
 #define SP_RESERVED	25      /* for future use */
 #define SP_PLANET_LOC	26      /* planet name, x, y */
 
-/* NOTE: not implemented */
+#ifdef PARADISE
 #define SP_SCAN         27      /* ATM: results of player
                                  * scan */
+#endif
 
 #define SP_UDP_REPLY    28      /* notify client of UDP
                                  * status */
@@ -83,8 +84,19 @@
                                  * verification */
 #endif
 
+#ifdef PARADISE
+#define SP_MOTD_PIC     32	/* motd bitmap pictures */
+#define SP_STATS2	33	/* new stats packet */
+#define SP_STATUS2	34	/* new status packet */
+#define SP_PLANET2	35	/* new planet packet */
+#define SP_NEW_MOTD     36	/* New MOTD info notification uses */
+#define SP_THINGY	37	/* thingy location */
+#define SP_THINGY_INFO	38	/* thingy status */
+#else
 #define SP_GENERIC_32	32	/* 32 byte generic, see struct */
 #define SP_FLAGS_ALL	33	/* abbreviated flags for all players */
+#endif
+
 #define SP_SHIP_CAP	39	/* Handles server ship mods */
 
 #ifdef SHORT_PACKETS
@@ -110,6 +122,18 @@
 #define SP_S_8_TORP     49      /* optimized SP_S_TORP */
 #define SP_S_PLANET     50      /* see SP_PLANET */
 
+#ifdef PARADISE
+#define SP_GPARAM	51	/* game params packet */
+/* the following is a family of packets with the same type, but a
+   discriminating subtype */
+#define SP_PARADISE_EXT1	52
+#define SP_PE1_MISSING_BITMAP	0
+#define SP_PE1_NUM_MISSILES	1
+/* end of packet 52 subtypes */
+#define SP_TERRAIN2	53	/* Terrain packets */
+#define SP_TERRAIN_INFO2 54	/* Terrain info */
+#endif
+
 /* S_P2 */
 #define SP_S_SEQUENCE   56      /* SP_SEQUENCE for
                                  * compressed packets */
@@ -1095,3 +1119,180 @@
 };
 
 #endif
+
+#ifdef PARADISE
+/* Shapes of thingys.  It would be best to add to the end of this list and
+   try to coordinate your additions with other hackers. */
+enum thingy_types {
+    SHP_BLANK, SHP_MISSILE, SHP_BOOM, SHP_TORP, SHP_PLASMA, SHP_MINE,
+    SHP_PBOOM, SHP_FIGHTER, SHP_WARP_BEACON, SHP_FBOOM, SHP_DBOOM
+};
+
+struct thingy_info_spacket {
+    char    type;		/* SP_THINGY_INFO */
+    char    war;
+    unsigned short   shape;		/* a thingy_types */
+    unsigned short   tnum;
+    unsigned short   owner;
+};
+
+struct thingy_spacket {
+    char    type;		/* SP_THINGY */
+    char    dir;
+    unsigned short   tnum;
+    LONG    x, y;
+};
+
+/* terrain info for Paradise terrain */
+/* 5/16/95 rpg */
+
+struct terrain_info_packet2 {
+    char   type;		/* SP_TERRAIN_INFO2 */
+    char   pad;
+    unsigned short  pad2;
+    unsigned short  xdim;
+    unsigned short  ydim;
+};
+
+struct terrain_packet2 {
+    char   type;		/* SP_TERRAIN2 */
+    char   sequence;
+    char   total_pkts;
+    char   length;
+    char   terrain_type[128];	/* Ugh... this needs to be fixed 5/16/95 rpg */
+ /* unsigned short  terrain_alt1[128]; */
+ /* unsigned short  terrain_alt2[128]; */
+};
+
+struct scan_spacket {		/* ATM */
+    char    type;		/* SP_SCAN */
+    char    pnum;
+    char    success;
+    char    pad1;
+    LONG    p_fuel;
+    LONG    p_armies;
+    LONG    p_shield;
+    LONG    p_damage;
+    LONG    p_etemp;
+    LONG    p_wtemp;
+};
+
+struct motd_pic_spacket {
+    char    type;		/* SP_MOTD_PIC */
+    char    pad1;
+    unsigned short   x, y, page;
+    unsigned short   width, height;
+    char    bits[1016];
+};
+
+ /* This is used to send paradise style stats */
+struct stats_spacket2 {
+    char    type;		/* SP_STATS2 */
+    char    pnum;
+    char    pad1;
+    char    pad2;
+
+    LONG   genocides;		/* number of genocides participated in */
+    LONG   maxkills;		/* max kills ever * 100  */
+    LONG   di;			/* destruction inflicted for all time * 100 */
+    LONG   kills;		/* Kills in tournament play */
+    LONG   losses;		/* Losses in tournament play */
+    LONG   armsbomb;		/* Tournament armies bombed */
+    LONG   resbomb;		/* resources bombed off */
+    LONG   dooshes;		/* armies killed while being carried */
+    LONG   planets;		/* Tournament planets conquered */
+    LONG   tticks;		/* Tournament ticks */
+    /* SB/WB/JS stats are entirely separate */
+    LONG   sbkills;		/* Kills as starbase */
+    LONG   sblosses;		/* Losses as starbase */
+    LONG   sbticks;		/* Time as starbase */
+    LONG   sbmaxkills;		/* Max kills as starbase * 100 */
+    LONG   wbkills;		/* Kills as warbase */
+    LONG   wblosses;		/* Losses as warbase */
+    LONG   wbticks;		/* Time as warbase */
+    LONG   wbmaxkills;		/* Max kills as warbase * 100 */
+    LONG   jsplanets;		/* planets assisted with in JS */
+    LONG   jsticks;		/* ticks played as a JS */
+    LONG   rank;		/* Ranking of the player */
+    LONG   royal;		/* royaly, specialty, rank */
+};
+
+ /* status info for paradise stats */
+struct status_spacket2 {
+    char    type;		/* SP_STATUS2 */
+    char    tourn;
+    char    pad1;
+    char    pad2;
+    unsigned int  dooshes;		/* total number of armies dooshed */
+    unsigned int  armsbomb;		/* all t-mode armies bombed */
+    unsigned int  resbomb;		/* resources bombed */
+    unsigned int  planets;		/* all t-mode planets taken */
+    unsigned int  kills;		/* all t-mode kills made */
+    unsigned int  losses;		/* all t-mode losses */
+    unsigned int  sbkills;		/* total kills in SB's */
+    unsigned int  sblosses;		/* total losses in Sb's */
+    unsigned int  sbtime;		/* total time in SB's */
+    unsigned int  wbkills;		/* kills in warbases */
+    unsigned int  wblosses;		/* losses in warbases */
+    unsigned int  wbtime;		/* total time played in wb's */
+    unsigned int  jsplanets;		/* total planets taken by jump ships */
+    unsigned int  jstime;		/* total time in a jump ship */
+    unsigned int  time;		/* t mode time in this game */
+    unsigned int  timeprod;		/* t-mode ship ticks--sort of like */
+};
+
+
+ /* planet info for a paradise planet */
+struct planet_spacket2 {
+    char    type;		/* SP_PLANET2 */
+    char    pnum;		/* planet number */
+    char    owner;		/* owner of the planet */
+    char    info;		/* who has touched planet */
+    LONG   flags;		/* planet's flags */
+    LONG   timestamp;		/* timestamp for info on planet */
+    LONG   armies;		/* armies on the planet */
+};
+
+struct obvious_packet {
+    char    type;		/* SP_NEW_MOTD */
+    char    pad1;		/* CP_ASK_MOTD */
+};
+
+struct paradiseext1_spacket {
+    char   type;
+    char   subtype;
+    short   pad;
+};
+
+struct pe1_missing_bitmap_spacket {
+    char    type;
+    char   subtype;
+
+    short   page;
+
+    short   x, y;
+    short   width, height;
+};
+
+struct pe1_num_missiles_spacket {
+    char    type;		/* SP_PARADISE_EXT1 */
+    char   subtype;		/* SP_PE1_NUM_MISSILES */
+
+    short   num;		/* number of missiles */
+};
+
+struct scan_cpacket {		/* ATM */
+    char    type;		/* CP_SCAN */
+    char    pnum;
+    char    pad1;
+    char    pad2;
+};
+
+struct gameparam_spacket {
+    char   type;
+    char   subtype;		/* this packet is not real */
+    /* generic game parameter packet */
+    int pad;
+};
+
+#endif

Index: struct.h
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/include/struct.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- struct.h	10 Apr 2007 00:44:02 -0000	1.18
+++ struct.h	16 May 2007 00:05:13 -0000	1.19
@@ -44,6 +44,35 @@
     unsigned LONG timeprod;
 };
 
+#ifdef PARADISE
+struct status2 {		/* paradise status struct */
+    int     active;		/* for interfacing with people who */
+    unsigned int wait, count;	/* want to get into the game */
+    unsigned int number, request, answer;
+    unsigned char tourn;	/* Tournament mode? */
+    unsigned long dooshes;	/* total number of armies dooshed */
+    unsigned long armsbomb;	/* all t-mode armies bombed */
+    unsigned long resbomb;	/* resources bombed */
+    unsigned long planets;	/* all t-mode planets taken */
+    unsigned long kills;	/* all t-mode kills made */
+    unsigned long losses;	/* all t-mode losses */
+    unsigned long genocides;	/* number of genocides */
+    unsigned long sbkills;	/* total kills in SB's */
+    unsigned long sblosses;	/* total losses in Sb's */
+    unsigned long sbtime;	/* total time in SB's */
+    unsigned long wbkills;	/* kills in warbases */
+    unsigned long wblosses;	/* losses in warbases */
+    unsigned long wbtime;	/* total time played in wb's */
+    unsigned long jsplanets;	/* total planets taken by jump ships */
+    unsigned long jstime;	/* total time in a jump ship */
+    unsigned long time;		/* t-mode time */
+    unsigned long timeprod;	/* t-mode ship ticks--sort of like */
+    /* manhours in t-mode */
+    int     gameup;		/* is game up */
+    unsigned long clock;	/* clock for planet info timestamp */
+};
+#endif
+
 enum dist_type
 {
     /* help me do series */
@@ -214,6 +243,37 @@
     int st_rank;                /* Ranking of the player */
 };
 
+#ifdef PARADISE
+struct stats2 {			/* paradise stats */
+    int     st_genocides;	/* number of genocides participated in */
+    float   st_tmaxkills;	/* max kills ever */
+    float   st_di;		/* total destruction inflicted for all time */
+    int     st_tkills;		/* Kills in tournament play */
+    int     st_tlosses;		/* Losses in tournament play */
+    int     st_tarmsbomb;	/* Tournament armies bombed */
+    int     st_tresbomb;	/* resources bombed off */
+    int     st_tdooshes;	/* armies killed while being carried */
+    int     st_tplanets;	/* Tournament planets conquered */
+    int     st_tticks;		/* Tournament ticks */
+    /* SB/WB/JS stats are entirely separate */
+    int     st_sbkills;		/* Kills as starbase */
+    int     st_sblosses;	/* Losses as starbase */
+    int     st_sbticks;		/* Time as starbase */
+    float   st_sbmaxkills;	/* Max kills as starbase */
+    int     st_wbkills;		/* Kills as warbase */
+    int     st_wblosses;	/* Losses as warbase */
+    int     st_wbticks;		/* Time as warbase */
+    float   st_wbmaxkills;	/* Max kills as warbase */
+    int     st_jsplanets;	/* planets assisted with in JS */
+    int     st_jsticks;		/* ticks played as a JS */
+    long    st_lastlogin;	/* Last time this player was played */
+    int     st_flags;		/* Misc option flags */
+    unsigned char st_keymap[256];	/* keymap for this player */
+    int     st_rank;		/* Ranking of the player */
+    int     st_royal;		/* royaly, specialty, rank */
+};
+#endif
+
 #define ST_MAPMODE      1
 #define ST_NAMEMODE     2
 #define ST_SHOWSHIELDS  4
@@ -277,6 +337,9 @@
     short p_whydead;            /* Tells you why you died */
     short p_whodead;            /* Tells you who killed you */
     struct stats p_stats;       /* player statistics */
+#ifdef PARADISE
+    struct stats2 p_stats2;     /* Paradise stats */
+#endif
     short p_genoplanets;        /* planets taken since last
                                  * genocide */
     short p_genoarmsbomb;       /* armies bombed since last

Index: proto.h
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/include/proto.h,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- proto.h	28 Apr 2007 12:09:50 -0000	1.54
+++ proto.h	16 May 2007 00:05:12 -0000	1.55
@@ -1142,10 +1142,19 @@
 void handleFlagsAll (struct flags_all_spacket *packet);
 struct rsa_key_spacket;
 void handleRSAKey (struct rsa_key_spacket *packet);
-#ifdef INCLUDE_SCAN
-void
-handleScan (packet)
-     struct scan_spacket *packet;
+#ifdef PARADISE
+void handleScan (struct scan_spacket *packet);
+void handleMotdPic (struct motd_pic_spacket * packet);
+void handleStats2 (struct stats_spacket2 * packet);
+void handleStatus2 (struct status_spacket2 * packet);
+void handlePlanet2 (struct planet_spacket2 * packet);
+void handleTerrain2 (struct terrain_packet2 * pkt);
+void handleTerrainInfo2 (struct terrain_info_packet2 *pkt);
+void handleTempPack (struct obvious_packet * packet);
+void handleThingy (struct thingy_spacket * packet);
+void handleThingyInfo (struct thingy_info_spacket * packet);
+void handleExtension1 (struct paradiseext1_spacket * packet);
+void handleGameparams (struct gameparam_spacket * packet);
 #endif
 void sendUdpReq (int req);
 struct udp_reply_spacket;