126 lines
2.9 KiB
C
126 lines
2.9 KiB
C
|
#ifndef __NETWORK
|
||
|
#define __NETWORK
|
||
|
|
||
|
#include "gameinitexit.h"
|
||
|
|
||
|
enum{
|
||
|
kMessageTypeSynch=1,
|
||
|
kMessageTypeSynchStart=2,
|
||
|
kMessageTypeID=3,
|
||
|
kMessageTypeCarID=4,
|
||
|
kMessageTypeStart=5,
|
||
|
kMessageTypeEndGame=6,
|
||
|
kMessageTypeEndReplay=7,
|
||
|
kMessageTypeGameInfo=8,
|
||
|
kMessageTypePhysics=9,
|
||
|
kMessageTypeChat=10,
|
||
|
kMessageTypePing=11,
|
||
|
kMessageTypePong=12,
|
||
|
kMessageTypeJoinDenied=13,
|
||
|
kMessageTypeVersionConfirmed=14,
|
||
|
kMessageTypeVersionDenied=15,
|
||
|
kMessageTypePause=16,
|
||
|
kMessageTypeResume=17,
|
||
|
kMessageTypePlayerLeft=18,
|
||
|
kMessageTypePlayerJoined=19,
|
||
|
kMessageTypeGameTerminated=20,
|
||
|
kMessageTypeVersion=21,
|
||
|
kMessageTypeKicked=22,
|
||
|
kMessageTypeBye=23,
|
||
|
kMessageTypeFinishTime=24,
|
||
|
};
|
||
|
|
||
|
enum{
|
||
|
kJoinDeniedInProgress,
|
||
|
kJoinDeniedVersion
|
||
|
};
|
||
|
|
||
|
enum{
|
||
|
kMessagePriorityLow,
|
||
|
kMessagePriorityNormal,
|
||
|
kMessagePriorityHigh
|
||
|
};
|
||
|
|
||
|
enum{
|
||
|
kMessageNoRecipients=-1,
|
||
|
kMessageSendToAll=-2,
|
||
|
kMessageSendToAllButSelf=-3,
|
||
|
kMessageSendToHostOnly=-4
|
||
|
};
|
||
|
|
||
|
typedef struct{
|
||
|
UInt8 playerID;
|
||
|
UInt8 color;
|
||
|
UInt64 license;
|
||
|
UInt32 licenseCopies;
|
||
|
char carName[kMaxFileNameLength];
|
||
|
char playerName[256];
|
||
|
// UInt32 checksum;
|
||
|
}tCarIDMessage;
|
||
|
|
||
|
enum{
|
||
|
kChatFlagAlert=1<<0,
|
||
|
kChatFlagSystem=1<<1,
|
||
|
kChatFlagSilent=1<<2
|
||
|
};
|
||
|
|
||
|
typedef struct{
|
||
|
UInt8 flags;
|
||
|
float recvTime;
|
||
|
char str[256];
|
||
|
} tChatMessage;
|
||
|
|
||
|
typedef struct{
|
||
|
int player;
|
||
|
int time;
|
||
|
}tFinishTimeMessage;
|
||
|
|
||
|
typedef struct{
|
||
|
void *opaqueRef;
|
||
|
void *data;
|
||
|
long size;
|
||
|
int from;
|
||
|
char what;
|
||
|
} tNetworkPacket;
|
||
|
|
||
|
enum{
|
||
|
kNetworkDisconnectBan,
|
||
|
kNetworkDisconnectLicenseCopies,
|
||
|
kNetworkDisconnectPirate,
|
||
|
kNetworkDisconnectNoDemo,
|
||
|
};
|
||
|
|
||
|
void NetworkInit();
|
||
|
void NetworkExit();
|
||
|
int JoinNetGame(char *address,char *errorString);
|
||
|
void HostNetGame(int maxPlayers,char *password);
|
||
|
int NetworkSynch(int numPlayers);
|
||
|
void ExitNetGame();
|
||
|
int NetworkGetLocalNetID();
|
||
|
void NetworkSendPacket(char messageType,void *message,long size,int priority,int to);
|
||
|
void NetworkSendPacket(char messageType,void *message,long size,int priority,int to,int notTo);
|
||
|
void NetworkDisconnectPlayer(int netID,UInt8 type);
|
||
|
void NetworkIdle();
|
||
|
int NetworkReceivePacket(tNetworkPacket* packet);
|
||
|
void NetworkDisposePacket(tNetworkPacket* packet);
|
||
|
void NetworkQueuePacket(tNetworkPacket *insert);
|
||
|
void NetworkClearPacketQueue();
|
||
|
void NetworkGetStatusString(char *str);
|
||
|
void NetworkGetBandwidth(float *rcv,float *snd);
|
||
|
void NetworkPreSession();
|
||
|
float NetworkGetPlayerPing(int netID);
|
||
|
void NetworkLockOutNewPlayers();
|
||
|
void NetworkUnlockOutNewPlayers();
|
||
|
void NetworkChangePassword(char *pass);
|
||
|
|
||
|
#define S64Swap(value) ((value)=EndianS64_BtoN(value))
|
||
|
#define U64Swap(value) ((value)=EndianU64_BtoN(value))
|
||
|
#define S32Swap(value) ((value)=EndianS32_BtoN(value))
|
||
|
#define U32Swap(value) ((value)=EndianU32_BtoN(value))
|
||
|
#define S16Swap(value) ((value)=EndianS16_BtoN(value))
|
||
|
#define U16Swap(value) ((value)=EndianU16_BtoN(value))
|
||
|
#define F32Swap(value) ((*((UInt32*)(&(value))))=EndianU32_BtoN(*((UInt32*)(&(value)))))
|
||
|
#define F64Swap(value) ((*((UInt64*)(&(value))))=EndianU64_BtoN(*((UInt64*)(&(value)))))
|
||
|
|
||
|
extern int gInternetAvailable;
|
||
|
#endif
|