#if !defined(__MREPLAY_H__)
#define __MREPLAY_H__

// save
typedef void (__stdcall *MRP_ONGAMEOPEN)(const char* pcszGameName, DWORD dwMyID, const char* pcszPlayer, const char* pcszPassword);
typedef void (__stdcall *NET_ADDPLAYERTOGAME)(void/*ListOfNames*/** pListOfPlayers, char* Name, DPID dpId);
typedef void (__stdcall *NET_REMOVEPLAYERFROMGAME)(void/*ListOfNames*/** pListOfPlayers, char* Name, DPID dpId);
typedef void (__stdcall *NET_ADDREMOVE_CONNECTION)(bool bAdd, void* pConnection);
typedef void (__stdcall *NET_SESSION_LOST)();
// replay
typedef void* (__stdcall *GOS_NETINFORMATION)(gosNetInfo Info, DWORD Parameter, char* Name);
typedef void (__stdcall *GOS_NETSERVERCOMMANDS)(gos_NetCommands Command, DWORD Data1);
typedef NetPacket* (__stdcall *GOS_NETGETMESSAGE)();
typedef bool (__stdcall *GOS_NETSENDMESSAGE)(NetPacket* Message);
typedef bool (_stdcall *NET_LOCALSENDNETMESSAGE)(int message_type, void/*Stuff::MemoryStream*/* message);
typedef void (_stdcall *APP_BACKGROUNDTACK)();

extern int g_nMR; // 0: no MR, 1: recording, 2: replay, ...

// save
extern MRP_ONGAMEOPEN g_pfn_ONGAMEOPEN;
extern NET_ADDPLAYERTOGAME g_pfn_ADDPLAYERTOGAME;
extern NET_REMOVEPLAYERFROMGAME g_pfn_REMOVEPLAYERFROMGAME;
extern NET_ADDREMOVE_CONNECTION  g_pfn_ADDREMOVE_CONNECTION;
extern NET_SESSION_LOST g_pfn_SESSION_LOST;
// replay
extern GOS_NETINFORMATION g_pfn_NETINFORMATION;
extern GOS_NETSERVERCOMMANDS g_pfn_NETSERVERCOMMANDS;
extern GOS_NETGETMESSAGE g_pfn_NETGETMESSAGE;
extern GOS_NETSENDMESSAGE g_pfn_NETSENDMESSAGE;
extern NET_LOCALSENDNETMESSAGE g_pfn_LOCALSENDNETMESSAGE;
extern APP_BACKGROUNDTACK g_pfn_BACKGROUNDTACK;

#endif // !defined(__MREPLAY_H__)
