#ifndef MATCH_SERVICE_HEAD_HEAD_FILE #define MATCH_SERVICE_HEAD_HEAD_FILE ////////////////////////////////////////////////////////////////////////////////// //平台定义 #include "..\..\GlobalDef\Platform.h" //消息定义 #include "..\..\MessageDef\CMD_Commom.h" #include "..\..\MessageDef\CMD_Correspond.h" #include "..\..\MessageDef\CMD_GameServer.h" //平台文件 #include "..\..\SharedControl\ServiceCore\ServiceCoreHead.h" #include "..\..\ServerControl\GameService\GameServiceHead.h" #include "..\..\ServerControl\KernelEngine\KernelEngineHead.h" ////////////////////////////////////////////////////////////////////////////////// //导出定义 //导出定义 #ifndef MATCH_SERVICE_CLASS #ifdef MATCH_SERVICE_DLL #define MATCH_SERVICE_CLASS _declspec(dllexport) #else #define MATCH_SERVICE_CLASS _declspec(dllimport) #endif #endif //模块定义 #ifndef _DEBUG #define MATCH_SERVICE_DLL_NAME TEXT("MatchService.dll") //组件名字 #else #define MATCH_SERVICE_DLL_NAME TEXT("MatchServiceD.dll") //组件名字 #endif ////////////////////////////////////////////////////////////////////////////////// //类型声明 class CLockTimeMatch; ////////////////////////////////////////////////////////////////////////////////// //比赛参数 struct tagMatchManagerParameter { //配置参数 tagGameMatchOption * pGameMatchOption; //比赛配置 tagGameServiceOption * pGameServiceOption; //服务配置 tagGameServiceAttrib * pGameServiceAttrib; //服务属性 //内核组件 ITimerEngine * pITimerEngine; //时间引擎 IDBCorrespondManager * pICorrespondManager; //数据引擎 ITCPNetworkEngineEvent * pTCPNetworkEngine; //网络引擎 //服务组件 IAndroidUserManager * pIAndroidUserManager; //机器管理 IServerUserManager * pIServerUserManager; //用户管理 IMainServiceFrame * pIMainServiceFrame; //服务框架 IServerUserItemSink * pIServerUserItemSink; //用户接口 }; //排行信息 struct tagMatchRankInfo { WORD wRankID; //比赛名次 DWORD dwUserID; //用户标识 SCORE lMatchScore; //比赛分数 SCORE lRewardGold; //奖励金币 DWORD dwRewardIngot; //奖励元宝 DWORD dwRewardExperience; //奖励经验 }; ////////////////////////////////////////////////////////////////////////////////// #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 //比赛服务器管理接口 interface IMatchServiceManager : public IUnknownEx { //控制接口 public: //停止服务 virtual bool StopService() = NULL; //启动服务 virtual bool StartService() = NULL; //管理接口 public: //创建比赛 virtual bool CreateGameMatch(BYTE cbMatchType) = NULL; //绑定桌子 virtual bool BindTableFrame(ITableFrame * pTableFrame, WORD wChairID) = NULL; //初始化接口 virtual bool InitMatchInterface(tagMatchManagerParameter & MatchManagerParameter) = NULL; //系统事件 public: //时间事件 virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter) = NULL; //数据库事件 virtual bool OnEventDataBase(WORD wRequestID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL; //网络事件 public: //比赛事件 virtual bool OnEventSocketMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem, DWORD dwSocketID) = NULL; //用户接口 public: //用户登录 virtual bool OnEventUserLogon(IServerUserItem * pIServerUserItem) = NULL; //用户登出 virtual bool OnEventUserLogout(IServerUserItem * pIServerUserItem) = NULL; //进入事件 virtual bool OnEventEnterMatch(DWORD dwSocketID, VOID* pData, DWORD dwUserIP, bool bIsMobile) = NULL; //用户参赛 virtual bool OnEventUserJoinMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, DWORD dwSocketID) = NULL; //用户退赛 virtual bool OnEventUserQuitMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, WORD *pBestRank = NULL, DWORD dwContextID = INVALID_WORD) = NULL; //接口信息 public: //用户接口 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 //游戏比赛接口 interface IGameMatchItem : public IUnknownEx { //控制接口 public: //启动通知 virtual void OnStartService() = NULL; //管理接口 public: //绑定桌子 virtual bool BindTableFrame(ITableFrame * pTableFrame, WORD wTableID) = NULL; //初始化接口 virtual bool InitMatchInterface(tagMatchManagerParameter & MatchManagerParameter) = NULL; //系统事件 public: //时间事件 virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter) = NULL; //数据库事件 virtual bool OnEventDataBase(WORD wRequestID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL; //网络事件 public: //比赛事件 virtual bool OnEventSocketMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem, DWORD dwSocketID) = NULL; //信息接口 public: //用户登录 virtual bool OnEventUserLogon(IServerUserItem * pIServerUserItem) = NULL; //用户登出 virtual bool OnEventUserLogout(IServerUserItem * pIServerUserItem) = NULL; //进入事件 virtual bool OnEventEnterMatch(DWORD dwSocketID, VOID* pData, DWORD dwUserIP, bool bIsMobile) = NULL; //用户参赛 virtual bool OnEventUserJoinMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, DWORD dwSocketID) = NULL; //用户退赛 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 //游戏事件 interface IMatchEventSink :public IUnknownEx { //游戏开始 virtual bool OnEventGameStart(ITableFrame *pITableFrame, WORD wChairCount) = NULL; //游戏结束 virtual bool OnEventGameEnd(ITableFrame *pITableFrame, WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason) = NULL; //用户坐下 virtual bool OnActionUserSitDown(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser) = NULL; //用户起来 virtual bool OnActionUserStandUp(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser) = NULL; //用户同意 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 //桌子钩子接口 interface ITableFrameHook : public IUnknownEx { //管理接口 public: //设置接口 virtual bool SetMatchEventSink(IUnknownEx * pIUnknownEx) = NULL; //初始化 virtual bool InitTableFrameHook(IUnknownEx * pIUnknownEx) = NULL; //游戏事件 public: //游戏开始 virtual bool OnEventGameStart(ITableFrame *pITableFrame, WORD wChairCount) = NULL; //游戏结束 virtual bool OnEventGameEnd(ITableFrame *pITableFrame, WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// //游戏服务 DECLARE_MODULE_HELPER(MatchServiceManager, MATCH_SERVICE_DLL_NAME, "CreateMatchServiceManager") ////////////////////////////////////////////////////////////////////////////////// #endif