]> icculus.org git repositories - btb/d2x.git/blob - main/netmisc.h
enabled mouse control of menus
[btb/d2x.git] / main / netmisc.h
1 /* $Id: netmisc.h,v 1.5 2003-10-10 09:36:35 btb Exp $ */
2 /*
3 THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
4 SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
5 END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
6 ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
7 IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
8 SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
9 FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
10 CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
11 AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
12 COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.
13 */
14
15 /*
16  *
17  * Header for netmisc.c
18  *
19  * Old Log:
20  * Revision 1.1  1995/05/16  16:00:08  allender
21  * Initial revision
22  *
23  * Revision 2.0  1995/02/27  11:30:18  john
24  * New version 2.0, which has no anonymous unions, builds with
25  * Watcom 10.0, and doesn't require parsing BITMAPS.TBL.
26  *
27  * Revision 1.2  1994/08/09  19:31:54  john
28  * Networking changes.
29  *
30  * Revision 1.1  1994/08/08  11:18:40  john
31  * Initial revision
32  *
33  *
34  */
35
36
37 #ifndef _NETMISC_H
38 #define _NETMISC_H
39
40 #include "multi.h"
41 #include "network.h"
42
43 // Returns a checksum of a block of memory.
44 extern ushort netmisc_calc_checksum(void *vptr, int len);
45
46 // Finds the difference between block1 and block2.  Fills in
47 // diff_buffer and returns the size of diff_buffer.
48 extern int netmisc_find_diff(void *block1, void *block2, int block_size, void *diff_buffer);
49
50 // Applies diff_buffer to block1 to create a new block1.  Returns the
51 // final size of block1.
52 extern int netmisc_apply_diff(void *block1, void *diff_buffer, int diff_size);
53
54 #ifdef WORDS_BIGENDIAN
55
56 // some mac only routines to deal with incorrectly aligned network structures
57
58 void receive_netplayer_info(ubyte *data, AllNetPlayers_info *info);
59
60 void receive_netplayers_packet(ubyte *data, AllNetPlayers_info *pinfo);
61 void send_netplayers_packet(ubyte *server, ubyte *node);
62 #define send_broadcast_netplayers_packet() \
63         send_netplayers_packet(NULL, NULL)
64
65 void send_sequence_packet(sequence_packet seq, ubyte *server, ubyte *node, ubyte *net_address);
66 #define send_internetwork_sequence_packet(seq, server, node) \
67         send_sequence_packet(seq, server, node, NULL)
68 #define send_broadcast_sequence_packet(seq) \
69         send_sequence_packet(seq, NULL, NULL, NULL)
70 void receive_sequence_packet(ubyte *data, sequence_packet *seq);
71
72 void send_netgame_packet(ubyte *server, ubyte *node, ubyte *net_address, int lite_flag);
73 #define send_full_netgame_packet(server, node, net_address) \
74         send_netgame_packet(server, node, net_address, 0)
75 #define send_lite_netgame_packet(server, node, net_address) \
76         send_netgame_packet(server, node, net_address, 1)
77 #define send_internetwork_full_netgame_packet(server, node) \
78         send_netgame_packet(server, node, NULL, 0)
79 #define send_internetwork_lite_netgame_packet(server, node) \
80         send_netgame_packet(server, node, NULL, 1)
81 #define send_broadcast_full_netgame_packet() \
82         send_netgame_packet(NULL, NULL, NULL, 0)
83 #define send_broadcast_lite_netgame_packet() \
84         send_netgame_packet(NULL, NULL, NULL, 1)
85 void receive_netgame_packet(ubyte *data, netgame_info *netgame, int lite_flag);
86 #define receive_full_netgame_packet(data, netgame) \
87         receive_netgame_packet(data, netgame, 0)
88 #define receive_lite_netgame_packet(data, netgame) \
89         receive_netgame_packet(data, netgame, 1)
90
91 void swap_object(object *obj);
92
93 #else
94
95 #define receive_netplayers_packet(data, pinfo) \
96         memcpy(pinfo, data, sizeof(AllNetPlayers_info))
97 #define send_netplayers_packet(server, node) \
98         ipx_send_internetwork_packet_data((ubyte *)&NetPlayers, sizeof(AllNetPlayers_info), server, node)
99 #define send_broadcast_netplayers_packet() \
100         ipx_send_broadcast_packet_data((ubyte *)&NetPlayers, sizeof(AllNetPlayers_info))
101
102 #define send_sequence_packet(seq, server, node, net_address) \
103         ipx_send_packet_data((ubyte *)&seq, sizeof(sequence_packet), server, node, net_address)
104 #define send_internetwork_sequence_packet(seq, server, node) \
105         ipx_send_internetwork_packet_data((ubyte *)&seq, sizeof(sequence_packet), server, node)
106 #define send_broadcast_sequence_packet(seq) \
107         ipx_send_broadcast_packet_data((ubyte *)&seq, sizeof(sequence_packet))
108
109 #define send_full_netgame_packet(server, node, net_address) \
110         ipx_send_packet_data((ubyte *)&Netgame, sizeof(netgame_info), server, node, net_address)
111 #define send_lite_netgame_packet(server, node, net_address) \
112         ipx_send_packet_data((ubyte *)&Netgame, sizeof(lite_info), server, node, net_address)
113 #define send_internetwork_full_netgame_packet(server, node) \
114         ipx_send_internetwork_packet_data((ubyte *)&Netgame, sizeof(netgame_info), server, node)
115 #define send_internetwork_lite_netgame_packet(server, node) \
116         ipx_send_internetwork_packet_data((ubyte *)&Netgame, sizeof(lite_info), server, node)
117 #define send_broadcast_full_netgame_packet() \
118         ipx_send_broadcast_packet_data((ubyte *)&Netgame, sizeof(netgame_info))
119 #define send_broadcast_lite_netgame_packet() \
120         ipx_send_broadcast_packet_data((ubyte *)&Netgame, sizeof(lite_info))
121 #define receive_full_netgame_packet(data, netgame) \
122         memcpy((ubyte *)(netgame), data, sizeof(netgame_info))
123 #define receive_lite_netgame_packet(data, netgame) \
124         memcpy((ubyte *)(netgame), data, sizeof(lite_info))
125
126 #define swap_object(obj)
127
128 #endif
129
130 #endif /* _NETMISC_H */