]> icculus.org git repositories - btb/d2x.git/blob - main/netmisc.h
use the orientation parameter of g3_draw_bitmap
[btb/d2x.git] / main / netmisc.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  *
16  * Header for netmisc.c
17  *
18  */
19
20
21 #ifndef _NETMISC_H
22 #define _NETMISC_H
23
24 #include "multi.h"
25 #include "network.h"
26
27 // Returns a checksum of a block of memory.
28 extern ushort netmisc_calc_checksum(void *vptr, int len);
29
30 // Finds the difference between block1 and block2.  Fills in
31 // diff_buffer and returns the size of diff_buffer.
32 extern int netmisc_find_diff(void *block1, void *block2, int block_size, void *diff_buffer);
33
34 // Applies diff_buffer to block1 to create a new block1.  Returns the
35 // final size of block1.
36 extern int netmisc_apply_diff(void *block1, void *diff_buffer, int diff_size);
37
38 #ifdef WORDS_BIGENDIAN
39
40 // some mac only routines to deal with incorrectly aligned network structures
41
42 void receive_netplayer_info(ubyte *data, AllNetPlayers_info *info);
43
44 void receive_netplayers_packet(ubyte *data, AllNetPlayers_info *pinfo);
45 void send_netplayers_packet(ubyte *server, ubyte *node);
46 #define send_broadcast_netplayers_packet() \
47         send_netplayers_packet(NULL, NULL)
48
49 void send_sequence_packet(sequence_packet seq, ubyte *server, ubyte *node, ubyte *net_address);
50 #define send_internetwork_sequence_packet(seq, server, node) \
51         send_sequence_packet(seq, server, node, NULL)
52 #define send_broadcast_sequence_packet(seq) \
53         send_sequence_packet(seq, NULL, NULL, NULL)
54 void receive_sequence_packet(ubyte *data, sequence_packet *seq);
55
56 void send_netgame_packet(ubyte *server, ubyte *node, ubyte *net_address, int lite_flag);
57 #define send_full_netgame_packet(server, node, net_address) \
58         send_netgame_packet(server, node, net_address, 0)
59 #define send_lite_netgame_packet(server, node, net_address) \
60         send_netgame_packet(server, node, net_address, 1)
61 #define send_internetwork_full_netgame_packet(server, node) \
62         send_netgame_packet(server, node, NULL, 0)
63 #define send_internetwork_lite_netgame_packet(server, node) \
64         send_netgame_packet(server, node, NULL, 1)
65 #define send_broadcast_full_netgame_packet() \
66         send_netgame_packet(NULL, NULL, NULL, 0)
67 #define send_broadcast_lite_netgame_packet() \
68         send_netgame_packet(NULL, NULL, NULL, 1)
69 void receive_netgame_packet(ubyte *data, netgame_info *netgame, int lite_flag);
70 #define receive_full_netgame_packet(data, netgame) \
71         receive_netgame_packet(data, netgame, 0)
72 #define receive_lite_netgame_packet(data, netgame) \
73         receive_netgame_packet(data, netgame, 1)
74
75 void swap_object(object *obj);
76
77 #else
78
79 #define receive_netplayers_packet(data, pinfo) \
80         memcpy(pinfo, data, sizeof(AllNetPlayers_info))
81 #define send_netplayers_packet(server, node) \
82         ipx_send_internetwork_packet_data((ubyte *)&NetPlayers, sizeof(AllNetPlayers_info), server, node)
83 #define send_broadcast_netplayers_packet() \
84         ipx_send_broadcast_packet_data((ubyte *)&NetPlayers, sizeof(AllNetPlayers_info))
85
86 #define send_sequence_packet(seq, server, node, net_address) \
87         ipx_send_packet_data((ubyte *)&seq, sizeof(sequence_packet), server, node, net_address)
88 #define send_internetwork_sequence_packet(seq, server, node) \
89         ipx_send_internetwork_packet_data((ubyte *)&seq, sizeof(sequence_packet), server, node)
90 #define send_broadcast_sequence_packet(seq) \
91         ipx_send_broadcast_packet_data((ubyte *)&seq, sizeof(sequence_packet))
92
93 #define send_full_netgame_packet(server, node, net_address) \
94         ipx_send_packet_data((ubyte *)&Netgame, sizeof(netgame_info), server, node, net_address)
95 #define send_lite_netgame_packet(server, node, net_address) \
96         ipx_send_packet_data((ubyte *)&Netgame, sizeof(lite_info), server, node, net_address)
97 #define send_internetwork_full_netgame_packet(server, node) \
98         ipx_send_internetwork_packet_data((ubyte *)&Netgame, sizeof(netgame_info), server, node)
99 #define send_internetwork_lite_netgame_packet(server, node) \
100         ipx_send_internetwork_packet_data((ubyte *)&Netgame, sizeof(lite_info), server, node)
101 #define send_broadcast_full_netgame_packet() \
102         ipx_send_broadcast_packet_data((ubyte *)&Netgame, sizeof(netgame_info))
103 #define send_broadcast_lite_netgame_packet() \
104         ipx_send_broadcast_packet_data((ubyte *)&Netgame, sizeof(lite_info))
105 #define receive_full_netgame_packet(data, netgame) \
106         memcpy((ubyte *)(netgame), data, sizeof(netgame_info))
107 #define receive_lite_netgame_packet(data, netgame) \
108         memcpy((ubyte *)(netgame), data, sizeof(lite_info))
109
110 #define swap_object(obj)
111
112 #endif
113
114 #endif /* _NETMISC_H */