mirror of
https://github.com/s1lentq/ReGameDLL_CS.git
synced 2025-03-04 01:35:23 +03:00
131 lines
5.7 KiB
C++
131 lines
5.7 KiB
C++
#ifndef PLATFORM_GAMEDLL_H
|
|
#define PLATFORM_GAMEDLL_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#define _logf regamedll_log
|
|
|
|
#include "osconfig.h"
|
|
#include "steam/steam_api.h"
|
|
#include "steam/steam_gameserver.h"
|
|
|
|
#ifdef _WIN32
|
|
typedef int(__stdcall *setsockopt_proto)(SOCKET s, int level, int optname, const char *optval, int optlen);
|
|
#endif
|
|
|
|
class IReGameDLLPlatform
|
|
{
|
|
public:
|
|
virtual uint32_t time(uint32_t *pTime) = 0;
|
|
virtual struct tm *localtime(uint32_t time) = 0;
|
|
virtual void srand(uint32_t seed) = 0;
|
|
virtual int rand() = 0;
|
|
|
|
#ifdef _WIN32
|
|
virtual void Sleep(DWORD msec) = 0;
|
|
virtual BOOL QueryPerfCounter(LARGE_INTEGER *counter) = 0;
|
|
virtual BOOL QueryPerfFreq(LARGE_INTEGER *freq) = 0;
|
|
virtual DWORD GetTickCount() = 0;
|
|
virtual void GetLocalTime(LPSYSTEMTIME time) = 0;
|
|
virtual void GetSystemTime(LPSYSTEMTIME time) = 0;
|
|
virtual void GetTimeZoneInfo(LPTIME_ZONE_INFORMATION zinfo) = 0;
|
|
virtual BOOL GetProcessTimes(HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime) = 0;
|
|
virtual void GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime) = 0;
|
|
#endif
|
|
|
|
virtual SOCKET socket(int af, int type, int protocol) = 0;
|
|
virtual int setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen) = 0;
|
|
virtual int closesocket(SOCKET s) = 0;
|
|
virtual int recvfrom(SOCKET s, char* buf, int len, int flags, struct sockaddr* from, socklen_t *fromlen) = 0;
|
|
virtual int sendto(SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen) = 0;
|
|
virtual int bind(SOCKET s, const struct sockaddr* addr, int namelen) = 0;
|
|
virtual int getsockname(SOCKET s, struct sockaddr* name, socklen_t* namelen) = 0;
|
|
virtual struct hostent* gethostbyname(const char *name) = 0;
|
|
virtual int gethostname(char *name, int namelen) = 0;
|
|
|
|
#ifdef _WIN32
|
|
virtual int ioctlsocket(SOCKET s, long cmd, u_long *argp) = 0;
|
|
virtual int WSAGetLastError() = 0;
|
|
#endif
|
|
|
|
virtual void SteamAPI_SetBreakpadAppID(uint32 unAppID) = 0;
|
|
virtual void SteamAPI_UseBreakpadCrashHandler(char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback) = 0;
|
|
virtual void SteamAPI_RegisterCallback(CCallbackBase *pCallback, int iCallback) = 0;
|
|
virtual bool SteamAPI_Init() = 0;
|
|
virtual void SteamAPI_UnregisterCallResult(class CCallbackBase *pCallback, SteamAPICall_t hAPICall) = 0;
|
|
virtual ISteamApps* SteamApps() = 0;
|
|
virtual bool SteamGameServer_Init(uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString) = 0;
|
|
virtual ISteamGameServer* SteamGameServer() = 0;
|
|
virtual void SteamGameServer_RunCallbacks() = 0;
|
|
virtual void SteamAPI_RunCallbacks() = 0;
|
|
virtual void SteamGameServer_Shutdown() = 0;
|
|
virtual void SteamAPI_UnregisterCallback(CCallbackBase *pCallback) = 0;
|
|
};
|
|
|
|
class CSimplePlatform : public IReGameDLLPlatform
|
|
{
|
|
private:
|
|
#ifdef _WIN32
|
|
setsockopt_proto setsockopt_v11;
|
|
#endif
|
|
|
|
public:
|
|
CSimplePlatform();
|
|
|
|
virtual uint32_t time(uint32_t *pTime);
|
|
virtual struct tm *localtime(uint32_t time);
|
|
virtual void srand(uint32_t seed);
|
|
virtual int rand();
|
|
|
|
#ifdef _WIN32
|
|
virtual void Sleep(DWORD msec);
|
|
virtual BOOL QueryPerfCounter(LARGE_INTEGER *counter);
|
|
virtual BOOL QueryPerfFreq(LARGE_INTEGER *freq);
|
|
virtual DWORD GetTickCount();
|
|
virtual void GetLocalTime(LPSYSTEMTIME time);
|
|
virtual void GetSystemTime(LPSYSTEMTIME time);
|
|
virtual void GetTimeZoneInfo(LPTIME_ZONE_INFORMATION zinfo);
|
|
virtual BOOL GetProcessTimes(HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
|
|
virtual void GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime);
|
|
#endif
|
|
|
|
virtual SOCKET socket(int af, int type, int protocol);
|
|
virtual int setsockopt(SOCKET s, int level, int optname, const char* optval, int optlen);
|
|
virtual int closesocket(SOCKET s);
|
|
virtual int recvfrom(SOCKET s, char* buf, int len, int flags, struct sockaddr* from, socklen_t *fromlen);
|
|
virtual int sendto(SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen);
|
|
virtual int bind(SOCKET s, const struct sockaddr* addr, int namelen);
|
|
virtual int getsockname(SOCKET s, struct sockaddr* name, socklen_t* namelen);
|
|
virtual struct hostent* gethostbyname(const char *name);
|
|
virtual int gethostname(char *name, int namelen);
|
|
|
|
#ifdef _WIN32
|
|
virtual int ioctlsocket(SOCKET s, long cmd, u_long *argp);
|
|
virtual int WSAGetLastError();
|
|
#endif
|
|
|
|
virtual void SteamAPI_SetBreakpadAppID(uint32 unAppID);
|
|
virtual void SteamAPI_UseBreakpadCrashHandler(char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback);
|
|
virtual void SteamAPI_RegisterCallback(CCallbackBase *pCallback, int iCallback);
|
|
virtual bool SteamAPI_Init();
|
|
virtual void SteamAPI_UnregisterCallResult(class CCallbackBase *pCallback, SteamAPICall_t hAPICall);
|
|
virtual ISteamApps* SteamApps();
|
|
virtual bool SteamGameServer_Init(uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString);
|
|
virtual ISteamGameServer* SteamGameServer();
|
|
virtual void SteamGameServer_RunCallbacks();
|
|
virtual void SteamAPI_RunCallbacks();
|
|
virtual void SteamGameServer_Shutdown();
|
|
virtual void SteamAPI_UnregisterCallback(CCallbackBase *pCallback);
|
|
};
|
|
|
|
class CRegamedllPlatformHolder
|
|
{
|
|
private:
|
|
static IReGameDLLPlatform *m_Platform;
|
|
public:
|
|
static IReGameDLLPlatform *get();
|
|
static void set(IReGameDLLPlatform *p);
|
|
};
|
|
|
|
#endif // PLATFORM_GAMEDLL_H
|