Files

254 lines
8.4 KiB
C
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#ifndef MATCH_SERVICE_HEAD_HEAD_FILE
#define MATCH_SERVICE_HEAD_HEAD_FILE
//////////////////////////////////////////////////////////////////////////////////
//ƽ̨<C6BD><CCA8><EFBFBD><EFBFBD>
#include "..\..\ȫ<>ֶ<EFBFBD><D6B6><EFBFBD>\Platform.h"
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
#include "..\..\<5C><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>\CMD_Commom.h"
#include "..\..\<5C><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>\CMD_Correspond.h"
#include "..\..\<5C><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>\CMD_GameServer.h"
//ƽ̨<C6BD>ļ<EFBFBD>
#include "..\..\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\ServiceCoreHead.h"
#include "..\..\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>\GameServiceHead.h"
#include "..\..\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\<5C>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>\KernelEngineHead.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#ifndef MATCH_SERVICE_CLASS
#ifdef MATCH_SERVICE_DLL
#define MATCH_SERVICE_CLASS _declspec(dllexport)
#else
#define MATCH_SERVICE_CLASS _declspec(dllimport)
#endif
#endif
//ģ<><EFBFBD><E9B6A8>
#ifndef _DEBUG
#define MATCH_SERVICE_DLL_NAME TEXT("MatchService.dll") //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#else
#define MATCH_SERVICE_DLL_NAME TEXT("MatchServiceD.dll") //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
//////////////////////////////////////////////////////////////////////////////////
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>;
#define UNSIGNUP_REASON_PLAYER 0 //<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>;
#define UNSIGNUP_REASON_SYSTEM 1 //ϵͳȡ<CDB3><C8A1>;
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CLockTimeMatch;
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagMatchManagerParameter
{
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameMatchOption * pGameMatchOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceOption * pGameServiceOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceAttrib * pGameServiceAttrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>
ITimerEngine * pITimerEngine; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDBCorrespondManager * pICorrespondManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ITCPNetworkEngineEvent * pTCPNetworkEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IAndroidUserManager * pIAndroidUserManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IServerUserManager * pIServerUserManager; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
IMainServiceFrame * pIMainServiceFrame; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IServerUserItemSink * pIServerUserItemSink; //<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
struct tagMatchScore
{
DWORD dwUserID; //<2F>û<EFBFBD>I D;
SCORE lFinishMaxScore; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õijɼ<C4B3>;
SCORE lScore; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD>õijɼ<C4B3>;
IServerUserItem * pUserItem; //<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>;
TCHAR szNickName[LEN_NICKNAME]; //<2F>û<EFBFBD><C3BB>dz<EFBFBD>;
tagMatchScore() { memset(this, 0, sizeof(tagMatchScore)); }
SCORE GetCurMaxScore() const { return lScore; }
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IMatchServiceManager INTERFACE_VERSION(1,1)
static const GUID IID_IMatchServiceManager={0xd513eace,0xb67d,0x43d9,0x0097,0xfa,0xd8,0xa7,0x9d,0x31,0x39,0x9b};
#else
#define VER_IMatchServiceManager INTERFACE_VERSION(1,1)
static const GUID IID_IMatchServiceManager={0x7d381e8a,0x8c10,0x4443,0x00b5,0xad,0x75,0x4b,0xe5,0x50,0xc5,0x53};
#endif
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
interface IMatchServiceManager : public IUnknownEx
{
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
virtual bool StopService()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool StartService()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool CreateGameMatch(BYTE cbMatchType)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool BindTableFrame(ITableFrame * pTableFrame,WORD wChairID)=NULL;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
virtual bool InitMatchInterface(tagMatchManagerParameter & MatchManagerParameter)=NULL;
//ϵͳ<CFB5>¼<EFBFBD>
public:
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter)=NULL;
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
virtual bool OnEventDataBase(WORD wRequestID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventSocketMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem, DWORD dwSocketID)=NULL;
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
public:
//<2F>û<EFBFBD><C3BB><EFBFBD>¼
virtual bool OnEventUserLogon(IServerUserItem * pIServerUserItem)=NULL;
//<2F>û<EFBFBD><C3BB>dz<EFBFBD>
virtual bool OnEventUserLogout(IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventEnterMatch(DWORD dwSocketID, VOID* pData, DWORD dwUserIP, bool bIsMobile)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnEventUserJoinMatch(IServerUserItem * pIServerUserItem, BYTE cbReason,DWORD dwSocketID)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnEventUserQuitMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, WORD *pBestRank=NULL, DWORD dwContextID=INVALID_WORD)=NULL;
//<2F>ӿ<EFBFBD><D3BF><EFBFBD>Ϣ
public:
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
virtual IUnknownEx * GetServerUserItemSink()=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IGameMatchItem INTERFACE_VERSION(1,1)
static const GUID IID_IGameMatchItem={0xd513eace,0xb67d,0x43d9,0x0097,0xfa,0xd8,0xa7,0x9d,0x31,0x39,0x9b};
#else
#define VER_IGameMatchItem INTERFACE_VERSION(1,1)
static const GUID IID_IGameMatchItem={0x7d381e8a,0x8c10,0x4443,0x00b5,0xad,0x75,0x4b,0xe5,0x50,0xc5,0x53};
#endif
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
interface IGameMatchItem : public IUnknownEx
{
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//<2F><><EFBFBD><EFBFBD>֪ͨ
virtual void OnStartService()=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool BindTableFrame(ITableFrame * pTableFrame,WORD wTableID)=NULL;
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>ӿ<EFBFBD>
virtual bool InitMatchInterface(tagMatchManagerParameter & MatchManagerParameter)=NULL;
//ϵͳ<CFB5>¼<EFBFBD>
public:
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter)=NULL;
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
virtual bool OnEventDataBase(WORD wRequestID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventSocketMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem, DWORD dwSocketID)=NULL;
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F>û<EFBFBD><C3BB><EFBFBD>¼
virtual bool OnEventUserLogon(IServerUserItem * pIServerUserItem)=NULL;
//<2F>û<EFBFBD><C3BB>dz<EFBFBD>
virtual bool OnEventUserLogout(IServerUserItem * pIServerUserItem)=NULL;
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventEnterMatch(DWORD dwSocketID, VOID* pData, DWORD dwUserIP, bool bIsMobile)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnEventUserJoinMatch(IServerUserItem * pIServerUserItem, BYTE cbReason,DWORD dwSocketID)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnEventUserQuitMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, WORD *pBestRank=NULL, DWORD dwContextID=INVALID_WORD)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_IMatchEventSink INTERFACE_VERSION(1,1)
static const GUID IID_IMatchEventSink={0x9d49ab20,0x472c,0x4b3a,0x00bc,0xb4,0x92,0xfe,0x8c,0x41,0xcd,0xaa};
#else
#define VER_IMatchEventSink INTERFACE_VERSION(1,1)
static const GUID IID_IMatchEventSink={0x91cf29a0,0x04d3,0x48da,0x0083,0x36,0x64,0xb2,0xda,0x6a,0x21,0xdb};
#endif
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>
interface IMatchEventSink :public IUnknownEx
{
//<2F><>Ϸ<EFBFBD><CFB7>ʼ
virtual bool OnEventGameStart(ITableFrame *pITableFrame, WORD wChairCount)=NULL;
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual bool OnEventGameEnd(ITableFrame *pITableFrame,WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnActionUserSitDown(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser)=NULL;
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnActionUserStandUp(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser)=NULL;
//<2F>û<EFBFBD>ͬ<EFBFBD><CDAC>
virtual bool OnActionUserOnReady(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize)=NULL;
};
///////////////////////////////////////////////////////////////////////////
#ifdef _UNICODE
#define VER_ITableFrameHook INTERFACE_VERSION(1,1)
static const GUID IID_ITableFrameHook={0xe9f19de8,0xfccb,0x42bd,0x0099,0x85,0xac,0xe9,0x26,0xf3,0xc4,0x2b};
#else
#define VER_ITableFrameHook INTERFACE_VERSION(1,1)
static const GUID IID_ITableFrameHook={0x94a90d45,0x570e,0x41d6,0x009f,0x20,0x01,0x8d,0x68,0x16,0xd5,0x0f};
#endif
//<2F><><EFBFBD>ӹ<EFBFBD><D3B9>ӽӿ<D3BD>
interface ITableFrameHook : public IUnknownEx
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetMatchEventSink(IUnknownEx * pIUnknownEx)=NULL;
//<2F><>ʼ<EFBFBD><CABC>
virtual bool InitTableFrameHook(IUnknownEx * pIUnknownEx)=NULL;
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>
public:
//<2F><>Ϸ<EFBFBD><CFB7>ʼ
virtual bool OnEventGameStart(ITableFrame *pITableFrame, WORD wChairCount)=NULL;
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual bool OnEventGameEnd(ITableFrame *pITableFrame,WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason)=NULL;
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
DECLARE_MODULE_HELPER(MatchServiceManager,MATCH_SERVICE_DLL_NAME,"CreateMatchServiceManager")
//////////////////////////////////////////////////////////////////////////////////
#endif