]> icculus.org git repositories - btb/d2x.git/blob - main/network.h
Change args_init back to InitArgs
[btb/d2x.git] / main / network.h
1 /*
2 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
3 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
4 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
5 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
6 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
7 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
8 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
9 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
10 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
11 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
12 */
13
14 /*
15  * $Source: /cvs/cvsroot/d2x/main/network.h,v $
16  * $Revision: 1.4 $
17  * $Author: bradleyb $
18  * $Date: 2001-10-25 02:15:57 $
19  *
20  * FIXME: put description here
21  *
22  * $Log: not supported by cvs2svn $
23  *
24  */
25
26 #ifndef _NETWORK_H
27 #define _NETWORK_H
28
29 #include "gameseq.h"
30 #include "multi.h"
31 #include "newmenu.h"
32
33 #define NETSTAT_MENU                                    0
34 #define NETSTAT_PLAYING                         1
35 #define NETSTAT_BROWSING                        2
36 #define NETSTAT_WAITING                         3
37 #define NETSTAT_STARTING                        4
38 #define NETSTAT_ENDLEVEL                        5
39
40 #define CONNECT_DISCONNECTED            0
41 #define CONNECT_PLAYING                         1
42 #define CONNECT_WAITING                         2
43 #define CONNECT_DIED_IN_MINE            3
44 #define CONNECT_FOUND_SECRET            4
45 #define CONNECT_ESCAPE_TUNNEL           5
46 #define CONNECT_END_MENU                        6
47
48 #define NETGAMEIPX                              1
49 #define NETGAMETCP                              2
50
51 // defines and other things for appletalk/ipx games on mac
52
53 #define IPX_GAME                1
54 #define APPLETALK_GAME  2
55 #ifdef MACINTOSH
56 extern int Network_game_type;
57 #else
58 #define Network_game_type IPX_GAME
59 #endif
60
61 typedef struct sequence_packet {
62         ubyte                                   type;
63         int                                     Security;
64    ubyte pad1[3];
65         netplayer_info          player;
66 } sequence_packet;
67
68 #define NET_XDATA_SIZE 454
69
70
71 // frame info is aligned -- 01/18/96 -- MWA
72 // if you change this structure -- be sure to keep
73 // alignment:
74 //              bytes on byte boundries
75 //              shorts on even byte boundries
76 //              ints on even byte boundries
77
78 typedef struct frame_info {
79         ubyte                           type;                                           // What type of packet
80         ubyte                           pad[3];                                 // Pad out length of frame_info packet
81         int                             numpackets;                     
82         vms_vector              obj_pos;
83         vms_matrix              obj_orient;
84         vms_vector              phys_velocity;
85         vms_vector              phys_rotvel;
86         short                           obj_segnum;
87         ushort                  data_size;              // Size of data appended to the net packet
88         ubyte                           playernum;
89         ubyte                           obj_render_type;
90         ubyte                           level_num;
91         ubyte                           data[NET_XDATA_SIZE];           // extra data to be tacked on the end
92 } __pack__ frame_info;
93
94 // short_frame_info is not aligned -- 01/18/96 -- MWA
95 // won't align because of shortpos.  Shortpos needs
96 // to stay in current form.
97
98 typedef struct short_frame_info {
99         ubyte                           type;                                           // What type of packet
100         ubyte                           pad[3];                                 // Pad out length of frame_info packet
101         int                             numpackets;                     
102         shortpos                        thepos;
103         ushort                  data_size;              // Size of data appended to the net packet
104         ubyte                           playernum;
105         ubyte                           obj_render_type;
106         ubyte                           level_num;
107         ubyte                           data[NET_XDATA_SIZE];           // extra data to be tacked on the end
108 } __pack__ short_frame_info;
109
110 void network_start_game();
111 void network_join_game();
112 void network_rejoin_game();
113 void network_leave_game();
114 int network_endlevel(int *secret);
115 void network_endlevel_poll2( int nitems, struct newmenu_item * menus, int * key, int citem );
116
117 int network_level_sync();
118 void network_send_endlevel_packet();
119
120 int network_delete_extra_objects();
121 int network_find_max_net_players();
122 int network_objnum_is_past(int objnum);
123 char * network_get_player_name( int objnum );
124 void network_send_endlevel_sub(int player_num);
125
126 void network_disconnect_player(int playernum);
127
128 extern int NetGameType;
129 extern int Network_send_objects;
130 extern int Network_send_objnum;
131 extern int PacketUrgent;
132 extern int Network_rejoined;
133
134 extern int Network_new_game;
135 extern int Network_status;
136
137 extern fix LastPacketTime[MAX_PLAYERS];
138
139 extern ushort my_segments_checksum;
140
141 extern int Network_initial_pps;
142 extern int Network_initial_shortpackets;
143
144 // By putting an up-to-20-char-message into Network_message and 
145 // setting Network_message_reciever to the player num you want to
146 // send it to (100 for broadcast) the next frame the player will
147 // get your message.
148
149 // Call once at the beginning of a frame
150 void network_do_frame(int force, int listen);
151
152 // Tacks data of length 'len' onto the end of the next
153 // packet that we're transmitting.
154 void network_send_data( ubyte * ptr, int len, int urgent );
155
156 void network_send_objects(void);
157 void network_dump_player(ubyte * server, ubyte *node, int why);
158 void network_send_game_info(sequence_packet *their);
159
160 int GetMyNetRanking();
161 int HoardEquipped();
162
163 #endif