aboutsummaryrefslogtreecommitdiff
path: root/src/parsec/include/net_subh.h
blob: 439a9b03566751930de0ea96255bc5655f30b8b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/*
 * PARSEC HEADER: net_subh.h
 */

#ifndef _NET_SUBH_H_
#define _NET_SUBH_H_


// ----------------------------------------------------------------------------
// NETWORKING SUBSYSTEM (NET) system-dependent function declarations          -
// ----------------------------------------------------------------------------


// remote event functions (RMEV)

int							NET_RmEvAllowed( int re_type );
size_t						NET_RmEvGetSize( RE_Header *relist );
int							NET_RmEvPlayerName( const char *name );
int							NET_RmEvSendText( const char *text );
int 						NET_RmEvObject( const GenObject *objpo );
int							NET_RmEvLaser( const LaserObject *laserpo );
int  						NET_RmEvMissile( const MissileObject *missilepo, dword targetobjid );
int  						NET_RmEvExtra( const ExtraObject *extrapo );
	int                                             NET_RmEvMine( const ExtraObject *extrapo );
int  						NET_RmEvParticleObject( int type, const Vertex3& origin );
int  						NET_RmEvKillObject( dword objid, byte listno );
int							NET_RmEvWeaponState( dword weapon, byte state, int energy, dword specials );
int							NET_RmEvStateSync( dword statekey, dword stateval );
int 						NET_RmEvCreateSwarm( Vector3 *origin, dword targetobjid, dword seed );
int 						NET_RmEvCreateEmp( int upgradelevel );
RE_PlayerStatus*			NET_RmEvPlayerStatus( byte last_unjoin_flag );
RE_PlayerAndShipStatus*		NET_RmEvPlayerAndShipStatus( byte last_unjoin_flag );
RE_ClientInfo*				NET_RmEvClientInfo( int nSendFreq, int nRecvRate );

void		NET_ExecRmEvCreateObject	( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvCreateLaser		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvCreateMissile	( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvParticleObject	( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvCreateExtra		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvKillObject		( RE_Header *rmev );
void		NET_ExecRmEvSendText		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvPlayerName		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvWeaponState		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvStateSync		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvCreateSwarm		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvCreateEmp		( RE_Header *rmev, int ownerid );

void		NET_ExecRmEvPlayerAndShipStatus	( RE_PlayerAndShipStatus* pas_status, dword messageid );
void		NET_ExecRmEvGameState			( RE_GameState* gamestate );
void		NET_ExecRmEvKillStats			( RE_KillStats* killstats );
void		NET_ExecRmEvCommandInfo			( RE_CommandInfo* commandinfo );
void		NET_ExecRmEvCreateExtra2		( RE_Header *rmev, int ownerid );
void		NET_ExecRmEvIPv4ServerInfo		( RE_IPv4ServerInfo* pIPv4ServerInfo );
void		NET_ExecRmEvServerLinkInfo		( RE_ServerLinkInfo* pServerLinkInfo );
void		NET_ExecRmEvMapObject			( RE_MapObject* pMapObject );
void		NET_ExecRmEvStargate			( RE_Stargate* pRE_Stargate );
	
// utility functions (UTIL)

int			NET_ProtocolPEER();
int			NET_ProtocolGMSV();

int			NET_ConnectedPEER();
int			NET_ConnectedGMSV();

char*		NET_FetchPlayerName( int playerid );
int			NET_SetPlayerName( const char *name );
ShipObject*	NET_FetchOwnersShip( int ownerid );
void 		NET_SetPlayerKillStat( int playerid, int amount );

int			NET_KillStatLimitReached( int limit );
void		NET_KillStatForceIdleZero();

void		NET_DrawEntryModeText();


#ifdef DBIND_PROTOCOL

	// protocol api functions

	#define NETs_Connect				(*net_subsys_jtab.Connect)
	#define NETs_Disconnect				(*net_subsys_jtab.Disconnect)
	#define NETs_Join					(*net_subsys_jtab.Join)
	#define NETs_Unjoin					(*net_subsys_jtab.Unjoin)

	#define NETs_UpdateName				(*net_subsys_jtab.UpdateName)

	#define NETs_MaintainNet			(*net_subsys_jtab.MaintainNet)

	// protocol api - game functions

	#define NETs_RmEvList_GetMaxSize	(*net_subsys_jtab.RmEvList_GetMaxSize)
	#define NETs_UpdateKillStats		(*net_subsys_jtab.UpdateKillStats)

	// protocol api - packet handling functions 

	#define NETs_HandleOutPacket				(*net_subsys_jtab.HandleOutPacket)
	#define NETs_HandleOutPacket_DEMO			(*net_subsys_jtab.HandleOutPacket_DEMO)
	#define NETs_HandleInPacket					(*net_subsys_jtab.HandleInPacket)
	#define NETs_HandleInPacket_DEMO			(*net_subsys_jtab.HandleInPacket_DEMO)
	#define NETs_NetPacketExternal_DEMO_GetSize (*net_subsys_jtab.NetPacketExternal_DEMO_GetSize)
	#define NETs_StdGameHeader					(*net_subsys_jtab.StdGameHeader)
	#define NETs_WritePacketInfo				(*net_subsys_jtab.WritePacketInfo)
	
#else // DBIND_PROTOCOL

	// protocol api functions

	int			NETs_Connect();
	int			NETs_Disconnect();
	int			NETs_Join();
	int			NETs_Unjoin( byte flag );

	int			NETs_UpdateName();

	void		NETs_MaintainNet();

	// protocol api - game functions
	
	size_t		NETs_RmEvList_GetMaxSize();
	void		NETs_UpdateKillStats( RE_KillStats* killstats );

	// protocol api - packet handling functions 
	
	size_t		NETs_HandleOutPacket		( const NetPacket*			int_gamepacket, NetPacketExternal* ext_gamepacket );
	size_t		NETs_HandleOutPacket_DEMO	( const NetPacket*			int_gamepacket, NetPacketExternal* ext_gamepacket );
	int			NETs_HandleInPacket			( const NetPacketExternal*	ext_gamepacket, const int ext_pktsize, NetPacket* int_gamepacket );
	int			NETs_HandleInPacket_DEMO	( const NetPacketExternal*	ext_gamepacket, NetPacket* int_gamepacket, size_t* psize_external );
	size_t		NETs_NetPacketExternal_DEMO_GetSize( NetPacketExternal* ext_gamepacket );
	void		NETs_StdGameHeader( byte command, NetPacket* gamepacket );
	void		NETs_WritePacketInfo( FILE *fp, NetPacketExternal* ext_gamepacket );
	
#endif // DBIND_PROTOCOL


// packet api functions

int			NETs_CompareNodes( node_t *node1, node_t *node2 );
int			NETs_VirtualNode( node_t *node );
void		NETs_SetVirtualAddress( node_t *node );
void		NETs_SetBroadcastAddress( node_t *node );

void		NETs_ResolveNode( node_t* node_dst, node_t* node_src );
void		NETs_MakeNodeRaw( node_t* node_dst, node_t* node_src );
node_t*		NETs_GetSender( int bufid );
void		NETs_ResolveSender( node_t *node, int bufid );

void		NETs_PrintNode( node_t *node );

void		NETs_FlushListenBuffers();
void		NETs_ProcessPacketChain	( void (*procfunc)(NetPacket* gamepacket,int bufid) );
int			NETs_InsertVirtualPacket( NetPacket* gamepacket );
int			NETs_DeterminePacketLoss( char **info, int *isiz, int incoming );

int			NETs_SleepUntilInput( int timeout_msec );

void		NETs_SendPacket			( NetPacket* gamepacket, node_t* node );
void		NETs_AuxSendPacket		( NetPacket* gamepacket, node_t* node );

int			NETs_ResetAPI();
int			NETs_InitAPI();
int			NETs_KillAPI();


#endif // _NET_SUBH_H_