From 03ad09da681c0b0ceeda7faa6fab8aef44b3fef4 Mon Sep 17 00:00:00 2001 From: Bradley Bell Date: Fri, 30 Aug 2002 01:01:18 +0000 Subject: [PATCH] more networking fixes --- main/Makefile.am | 14 ++-- main/multi.c | 12 ++-- main/network.c | 168 +++++++++++++++++++++++------------------------ main/network.h | 128 ++++++++---------------------------- 4 files changed, 126 insertions(+), 196 deletions(-) diff --git a/main/Makefile.am b/main/Makefile.am index 7ac00895..17e0c5c0 100644 --- a/main/Makefile.am +++ b/main/Makefile.am @@ -22,7 +22,8 @@ cmd.c cntrlcen.c collide.c config.c console.c \ controls.c credits.c crypt.c effects.c endlevel.c \ escort.c fireball.c fuelcen.c fvi.c game.c \ gamecntl.c gamefont.c gamemine.c gamepal.c gamerend.c \ -gamesave.c gameseg.c gameseq.c gauges.c hostage.c \ +gamesave.c gameseg.c gameseq.c gauges.c hoard.c \ +hostage.c \ hud.c inferno.c kconfig.c kludge.c laser.c \ lighting.c menu.c mglobal.c mission.c morph.c \ movie.c mvelib.c mve_audio.c mveplay.c netmisc.c \ @@ -33,9 +34,8 @@ songs.c state.c switch.c terrain.c texmerge.c \ text.c titles.c vclip.c wall.c weapon.c EXTRA_libmain_a_SOURCES = \ -ipx_drv.c kmatrix.c multi.c multibot.c network.c netpkt.c \ -bmread.c ipclienc.c netlist.c multipow.c \ -ip_base.cpp ipclient.cpp +kmatrix.c multi.c multibot.c network.c \ +bmread.c EXTRA_DIST = ${EXTRA_SUBDIRS} \ descent.cfg inferno.ini \ @@ -43,10 +43,10 @@ link.bat \ ai.h aistruct.h automap.h bm.h bmread.h cntrlcen.h collide.h \ compbit.h config.h controls.h credits.h desc_id.h desw.h digi.h effects.h \ endlevel.h fireball.h fuelcen.h fvi.h fvi_a.h game.h gamefont.h gamemine.h \ -gamepal.h gamesave.h gameseg.h gameseq.h gamestat.h gauges.h hostage.h \ -hudmsg.h inferno.h ip_base.h ip_basec.h ipclient.h joydefs.h kconfig.h \ +gamepal.h gamesave.h gameseg.h gameseq.h gamestat.h gauges.h hoard.h \ +hostage.h hudmsg.h inferno.h joydefs.h kconfig.h \ kmatrix.h laser.h lighting.h menu.h mission.h modem.h morph.h movie.h multi.h \ -multibot.h multipow.h netmisc.h netpkt.h network.h newdemo.h newmenu.h \ +multibot.h netmisc.h network.h newdemo.h newmenu.h \ object.h paging.h physics.h piggy.h player.h playsave.h polyobj.h powerup.h \ render.h reorder.h robot.h scores.h screens.h segment.h segpoint.h slew.h \ songs.h sounds.h state.h switch.h terrain.h texmerge.h text.h textures.h \ diff --git a/main/multi.c b/main/multi.c index a759b508..0b247b8f 100644 --- a/main/multi.c +++ b/main/multi.c @@ -13,13 +13,16 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. /* * $Source: /cvs/cvsroot/d2x/main/multi.c,v $ - * $Revision: 1.5 $ - * $Author: bradleyb $ - * $Date: 2001-10-23 21:53:19 $ + * $Revision: 1.6 $ + * $Author: btb $ + * $Date: 2002-08-30 01:01:18 $ * * FIXME: put description here * * $Log: not supported by cvs2svn $ + * Revision 1.5 2001/10/23 21:53:19 bradleyb + * No longer #ifdef'ing out the whole file. RCS header added + * * */ @@ -1219,9 +1222,7 @@ extern fix StartingShields; fix PingLaunchTime,PingReturnTime; extern void network_send_ping (ubyte); -extern void network_dump_player(ubyte * server, ubyte *node, int why); extern int network_who_is_master(); -extern void network_send_netgame_update(); extern char NameReturning; extern int force_cockpit_redraw; @@ -4938,7 +4939,6 @@ void multi_do_start_trigger (char *buf) Triggers[(int)buf[1]].flags |=TF_DISABLED; } -extern int GetMyNetRanking(); extern char *RankStrings[]; void multi_add_lifetime_kills () diff --git a/main/network.c b/main/network.c index f5a41c78..b24553f4 100644 --- a/main/network.c +++ b/main/network.c @@ -1,3 +1,4 @@ +/* $Id: network.c,v 1.11 2002-08-30 01:01:18 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -7,38 +8,18 @@ IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS -AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. +AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ -/* - * $Source: /cvs/cvsroot/d2x/main/network.c,v $ - * $Revision: 1.10 $ - * $Author: bradleyb $ - * $Date: 2002-07-16 08:14:35 $ - * - * FIXME: put description here - * - * $Log: not supported by cvs2svn $ - * Revision 1.9 2002/04/19 21:27:00 bradleyb - * let hoard.ham be a cfile - * - * Revision 1.8 2002/02/14 09:24:19 bradleyb - * d1x->d2x - * - * Revision 1.7 2002/02/13 10:39:21 bradleyb - * Lotsa networking stuff from d1x - * - * Revision 1.6 2001/10/23 22:03:03 bradleyb - * No longer #ifdef'ing out the whole file. RCS header added - * - * - */ - #ifdef HAVE_CONFIG_H #include #endif +#ifdef RCS +static char rcsid[] = "$Id: network.c,v 1.11 2002-08-30 01:01:18 btb Exp $"; +#endif + #define PATCH12 #include @@ -85,6 +66,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "netmisc.h" #include "kconfig.h" #include "playsave.h" +#include "hoard.h" #ifdef MACINTOSH #include @@ -92,42 +74,38 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "appltalk.h" #endif -void network_send_rejoin_sync(int player_num); -void network_update_netgame(void); -void network_read_endlevel_packet( ubyte *data ); -void network_read_object_packet( ubyte *data ); -void network_read_sync_packet( netgame_info * sp, int d1x ); -void network_flush(); -void network_listen(); -void network_read_pdata_packet(frame_info *pd ); - -void network_check_for_old_version (char pnum); -void network_send_endlevel_short_sub(int from_player_num,int to_player); -int network_wait_for_playerinfo(); -void network_process_pdata (char *data); -void network_read_endlevel_short_packet( ubyte *data ); -void network_ping (ubyte flag,int pnum); -void network_handle_ping_return (ubyte pnum); -void network_process_names_return (char *data); -void network_send_player_names (sequence_packet *their); -int network_choose_connect (); -void network_more_game_options (); -void network_count_powerups_in_mine(void); -int network_wait_for_all_info (int choice); -void network_do_big_wait(int choice); -void network_send_extras (); -void network_read_pdata_short_packet(short_frame_info *pd ); - -void network_AdjustMaxDataSize (); - -void ClipRank (signed char *rank); -void DoRefuseStuff (sequence_packet *their); -void SetAllAllowablesTo (int on); -int GetNewPlayerNumber (sequence_packet *their); - #define LHX(x) ((x)*(MenuHires?2:1)) #define LHY(y) ((y)*(MenuHires?2.4:1)) +#define PID_LITE_INFO 43 +#define PID_SEND_ALL_GAMEINFO 44 +#define PID_PLAYERSINFO 45 +#define PID_REQUEST 46 +#define PID_SYNC 47 +#define PID_PDATA 48 +#define PID_ADDPLAYER 49 +#define PID_DUMP 51 +#define PID_ENDLEVEL 52 +#define PID_QUIT_JOINING 54 +#define PID_OBJECT_DATA 55 +#define PID_GAME_LIST 56 +#define PID_GAME_INFO 57 +#define PID_PING_SEND 58 +#define PID_PING_RETURN 59 +#define PID_GAME_UPDATE 60 +#define PID_ENDLEVEL_SHORT 61 +#define PID_NAKED_PDATA 62 +#define PID_GAME_PLAYERS 63 +#define PID_NAMES_RETURN 64 + +#define NETGAME_ANARCHY 0 +#define NETGAME_TEAM_ANARCHY 1 +#define NETGAME_ROBOT_ANARCHY 2 +#define NETGAME_COOPERATIVE 3 +#define NETGAME_CAPTURE_FLAG 4 +#define NETGAME_HOARD 5 +#define NETGAME_TEAM_HOARD 6 + #define NETSECURITY_OFF 0 #define NETSECURITY_WAIT_FOR_PLAYERS 1 #define NETSECURITY_WAIT_FOR_GAMEINFO 2 @@ -137,6 +115,16 @@ int GetNewPlayerNumber (sequence_packet *their); // headaches by keeping alignment if these are changed!!!! Contact // me for info. +typedef struct endlevel_info { + ubyte type; + ubyte player_num; + byte connected; + ubyte seconds_left; + short kill_matrix[MAX_PLAYERS][MAX_PLAYERS]; + short kills; + short killed; +} endlevel_info; + typedef struct endlevel_info_short { ubyte type; ubyte player_num; @@ -208,6 +196,39 @@ extern int newmenu_dotiny( char * title, char * subtitle, int nitems, newmenu_it void network_process_naked_pdata (char *,int); extern void multi_send_robot_controls(char); +void network_flush(); +void network_listen(); +void network_update_netgame(); +void network_check_for_old_version(char pnum); +void network_send_objects(); +void network_send_rejoin_sync(int player_num); +void network_send_game_info(sequence_packet *their); +void network_send_endlevel_short_sub(int from_player_num, int to_player); +void network_read_sync_packet(netgame_info * sp, int rsinit); +int network_wait_for_playerinfo(); +void network_process_pdata(char *data); +void network_read_object_packet(ubyte *data ); +void network_read_endlevel_packet(ubyte *data ); +void network_read_endlevel_short_packet(ubyte *data ); +void network_ping(ubyte flat, int pnum); +void network_handle_ping_return(ubyte pnum); +void network_process_names_return(char *data); +void network_send_player_names(sequence_packet *their); +int network_choose_connect(); +void network_more_game_options(); +void network_count_powerups_in_mine(); +int network_wait_for_all_info(int choice); +void network_AdjustMaxDataSize(); +void network_do_big_wait(int choice); +void network_send_extras(); +void network_read_pdata_packet(frame_info *pd); +void network_read_pdata_short_packet(short_frame_info *pd); + +void ClipRank(signed char *rank); +void DoRefuseStuff(sequence_packet *their); +int GetNewPlayerNumber(sequence_packet *their); +void SetAllAllowablesTo(int on); + int num_active_games = 0; int PacketsPerSec=10; int MaxXDataSize=NET_XDATA_SIZE; @@ -223,9 +244,6 @@ int Network_games_changed = 0; int Network_socket = 0; int Network_allow_socket_changes = 1; -int Network_initial_pps = 10; -int Network_initial_shortpackets = 0; - int NetSecurityFlag=NETSECURITY_OFF; int NetSecurityNum=0; int Network_sending_extras=0; @@ -827,7 +845,7 @@ void network_welcome_player(sequence_packet *their) if (FindArg("-NoMatrixCheat")) { - if (their->player.version_minor & (0x0F<3)) + if ((their->player.version_minor & 0x0F) < 3) { network_dump_player(their->player.network.ipx.server, their->player.network.ipx.node, DUMP_DORK); return; @@ -2222,9 +2240,9 @@ void network_process_dump(sequence_packet *their) { // Our request for join was denied. Tell the user why. - char temp[40]; - int i; - + char temp[40]; + int i; + mprintf((0, "Dumped by player %s, type %d.\n", their->player.callsign, their->player.connected)); if (their->player.connected!=7) @@ -4421,7 +4439,7 @@ void network_join_game() if (Network_allow_socket_changes) sprintf( m[0].text, "\tCurrent IPX Socket is default %+d (PgUp/PgDn to change)", Network_socket ); else - strcpy( m[0].text, "" ); + strcpy( m[0].text, "" ); //sprintf( m[0].text, "" ); #ifdef MACINTOSH } else { p2cstr(Network_zone_name); @@ -6465,21 +6483,3 @@ void network_send_player_names (sequence_packet *their) ipx_send_internetwork_packet_data((ubyte *)buf, count, their->player.network.ipx.server, their->player.network.ipx.node); #endif } - -#include "cfile.h" -int HoardEquipped () -{ - static int checked=-1; - -#ifdef WINDOWS - return 0; -#endif - - if (checked==-1) { - if (cfexist("hoard.ham")) - checked=1; - else - checked=0; - } - return (checked); -} diff --git a/main/network.h b/main/network.h index 87a26452..194fd1e7 100644 --- a/main/network.h +++ b/main/network.h @@ -1,3 +1,4 @@ +/* $Id: network.h,v 1.8 2002-08-30 01:01:18 btb Exp $ */ /* THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO @@ -7,31 +8,10 @@ IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS -AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. +AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. */ -/* - * $Source: /cvs/cvsroot/d2x/main/network.h,v $ - * $Revision: 1.7 $ - * $Author: bradleyb $ - * $Date: 2002-07-16 08:14:35 $ - * - * FIXME: put description here - * - * $Log: not supported by cvs2svn $ - * Revision 1.6 2002/02/14 09:24:19 bradleyb - * d1x->d2x - * - * Revision 1.5 2002/02/13 10:39:22 bradleyb - * Lotsa networking stuff from d1x - * - * Revision 1.4 2001/10/25 02:15:57 bradleyb - * conditionalize including multi.h and network.h, fix backslashes - * - * - */ - #ifndef _NETWORK_H #define _NETWORK_H @@ -39,28 +19,28 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "multi.h" #include "newmenu.h" -#define NETSTAT_MENU 0 -#define NETSTAT_PLAYING 1 -#define NETSTAT_BROWSING 2 -#define NETSTAT_WAITING 3 -#define NETSTAT_STARTING 4 -#define NETSTAT_ENDLEVEL 5 +#define NETSTAT_MENU 0 +#define NETSTAT_PLAYING 1 +#define NETSTAT_BROWSING 2 +#define NETSTAT_WAITING 3 +#define NETSTAT_STARTING 4 +#define NETSTAT_ENDLEVEL 5 -#define CONNECT_DISCONNECTED 0 -#define CONNECT_PLAYING 1 -#define CONNECT_WAITING 2 -#define CONNECT_DIED_IN_MINE 3 -#define CONNECT_FOUND_SECRET 4 -#define CONNECT_ESCAPE_TUNNEL 5 -#define CONNECT_END_MENU 6 +#define CONNECT_DISCONNECTED 0 +#define CONNECT_PLAYING 1 +#define CONNECT_WAITING 2 +#define CONNECT_DIED_IN_MINE 3 +#define CONNECT_FOUND_SECRET 4 +#define CONNECT_ESCAPE_TUNNEL 5 +#define CONNECT_END_MENU 6 -#define NETGAMEIPX 1 -#define NETGAMETCP 2 +#define NETGAMEIPX 1 +#define NETGAMETCP 2 // defines and other things for appletalk/ipx games on mac -#define IPX_GAME 1 -#define APPLETALK_GAME 2 +#define IPX_GAME 1 +#define APPLETALK_GAME 2 #ifdef MACINTOSH extern int Network_game_type; #else @@ -68,11 +48,11 @@ extern int Network_game_type; #endif typedef struct sequence_packet { - ubyte type; - int Security; - ubyte pad1[3]; + ubyte type; + int Security; + ubyte pad1[3]; netplayer_info player; -} __pack__ sequence_packet; +} sequence_packet; #define NET_XDATA_SIZE 454 @@ -123,6 +103,7 @@ void network_leave_game(); int network_endlevel(int *secret); void network_endlevel_poll2( int nitems, struct newmenu_item * menus, int * key, int citem ); + int network_level_sync(); void network_send_endlevel_packet(); @@ -131,9 +112,13 @@ int network_find_max_net_players(); int network_objnum_is_past(int objnum); char * network_get_player_name( int objnum ); void network_send_endlevel_sub(int player_num); - void network_disconnect_player(int playernum); +extern void network_dump_player(ubyte * server, ubyte *node, int why); +extern void network_send_netgame_update(); + +extern int GetMyNetRanking(); + extern int NetGameType; extern int Network_send_objects; extern int Network_send_objnum; @@ -146,10 +131,6 @@ extern int Network_status; extern fix LastPacketTime[MAX_PLAYERS]; extern ushort my_segments_checksum; - -extern int Network_initial_pps; -extern int Network_initial_shortpackets; - // By putting an up-to-20-char-message into Network_message and // setting Network_message_reciever to the player num you want to // send it to (100 for broadcast) the next frame the player will @@ -162,55 +143,4 @@ void network_do_frame(int force, int listen); // packet that we're transmitting. void network_send_data( ubyte * ptr, int len, int urgent ); -void network_send_objects(void); -void network_dump_player(ubyte * server, ubyte *node, int why); -void network_send_game_info(sequence_packet *their); - -int GetMyNetRanking(); -int HoardEquipped(); - -#define PID_LITE_INFO 43 -#define PID_SEND_ALL_GAMEINFO 44 -#define PID_PLAYERSINFO 45 -#define PID_REQUEST 46 -#define PID_SYNC 47 -#define PID_PDATA 48 -#define PID_ADDPLAYER 49 -#define PID_DUMP 51 -#define PID_ENDLEVEL 52 -#define PID_QUIT_JOINING 54 -#define PID_OBJECT_DATA 55 -#define PID_GAME_LIST 56 -#define PID_GAME_INFO 57 -#define PID_PING_SEND 58 -#define PID_PING_RETURN 59 -#define PID_GAME_UPDATE 60 -#define PID_ENDLEVEL_SHORT 61 -#define PID_NAKED_PDATA 62 -#define PID_GAME_PLAYERS 63 -#define PID_NAMES_RETURN 64 - -#define PID_SHORTPDATA 42 -#define PID_D2X_GAME_INFO_REQ 65 -#define PID_D2X_GAME_LITE 68 -#define PID_PDATA_SHORT2 70 - -#define NETGAME_ANARCHY 0 -#define NETGAME_TEAM_ANARCHY 1 -#define NETGAME_ROBOT_ANARCHY 2 -#define NETGAME_COOPERATIVE 3 -#define NETGAME_CAPTURE_FLAG 4 -#define NETGAME_HOARD 5 -#define NETGAME_TEAM_HOARD 6 - -typedef struct endlevel_info { - ubyte type; - ubyte player_num; - byte connected; - ubyte seconds_left; - short kill_matrix[MAX_PLAYERS][MAX_PLAYERS]; - short kills; - short killed; -} __pack__ endlevel_info; - #endif -- 2.39.2