诸暨麻将添加redis
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 
 

172 строки
5.6 KiB

  1. #ifndef LOCKTIME_MATCH_HEAD_FILE
  2. #define LOCKTIME_MATCH_HEAD_FILE
  3. #pragma once
  4. //引入文件
  5. #include "TableFrameHook.h"
  6. #include "MatchServiceHead.h"
  7. #include "DistributeManager.h"
  8. ///////////////////////////////////////////////////////////////////////////////////////////
  9. //时钟定义
  10. #define IDI_CHECK_START_MATCH (IDI_MATCH_MODULE_START+1) //开始时钟
  11. #define IDI_CHECK_END_MATCH (IDI_MATCH_MODULE_START+2) //结束时钟
  12. //移除理由
  13. #define REMOVE_BY_ENDMATCH 250 //比赛结束
  14. ///////////////////////////////////////////////////////////////////////////////////////////
  15. //结构定义
  16. //比赛状态
  17. enum emMatchStatus
  18. {
  19. MatchStatus_Free = 0,
  20. MatchStatus_Playing,
  21. MatchStatus_End
  22. };
  23. //////////////////////////////////////////////////////////////////////////////////////////
  24. //定时赛
  25. class CLockTimeMatch : public IGameMatchItem, public IMatchEventSink, IServerUserItemSink
  26. {
  27. //状态变量
  28. protected:
  29. emMatchStatus m_MatchStatus; //比赛状态
  30. //变量定义
  31. protected:
  32. CDistributeManager m_DistributeManage; //分组管理
  33. //比赛配置
  34. protected:
  35. tagGameMatchOption * m_pMatchOption; //比赛配置
  36. tagGameServiceOption * m_pGameServiceOption; //服务配置
  37. tagGameServiceAttrib * m_pGameServiceAttrib; //服务属性
  38. //内核接口
  39. protected:
  40. ITableFrame ** m_ppITableFrame; //框架接口
  41. ITimerEngine * m_pITimerEngine; //时间引擎
  42. IDBCorrespondManager * m_pIDataBaseEngine; //数据引擎
  43. ITCPNetworkEngineEvent * m_pITCPNetworkEngineEvent; //网络引擎
  44. //服务接口
  45. protected:
  46. IMainServiceFrame * m_pIGameServiceFrame; //功能接口
  47. IServerUserManager * m_pIServerUserManager; //用户管理
  48. IAndroidUserManager * m_pAndroidUserManager; //机器管理
  49. IServerUserItemSink * m_pIServerUserItemSink; //用户回调
  50. //函数定义
  51. public:
  52. //构造函数
  53. CLockTimeMatch();
  54. //析构函数
  55. virtual ~CLockTimeMatch(void);
  56. //基础接口
  57. public:
  58. //释放对象
  59. virtual VOID Release(){ delete this; }
  60. //接口查询
  61. virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
  62. //控制接口
  63. public:
  64. //启动通知
  65. virtual void OnStartService() { return; }
  66. //管理接口
  67. public:
  68. //绑定桌子
  69. virtual bool BindTableFrame(ITableFrame * pTableFrame, WORD wTableID);
  70. //初始化接口
  71. virtual bool InitMatchInterface(tagMatchManagerParameter & MatchManagerParameter);
  72. //系统事件
  73. public:
  74. //时间事件
  75. virtual bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter);
  76. //数据库事件
  77. virtual bool OnEventDataBase(WORD wRequestID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
  78. //网络事件
  79. public:
  80. //比赛事件
  81. virtual bool OnEventSocketMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem, DWORD dwSocketID);
  82. //用户接口
  83. public:
  84. //用户积分
  85. virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason);
  86. //用户状态
  87. virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID = INVALID_TABLE, WORD wOldChairID = INVALID_CHAIR, bool bSendState = false);
  88. //用户权限
  89. virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight, BYTE cbRightKind);
  90. //事件接口
  91. public:
  92. //用户登录
  93. virtual bool OnEventUserLogon(IServerUserItem * pIServerUserItem);
  94. //用户登出
  95. virtual bool OnEventUserLogout(IServerUserItem * pIServerUserItem);
  96. //进入事件
  97. virtual bool OnEventEnterMatch(DWORD dwSocketID, VOID* pData, DWORD dwUserIP, bool bIsMobile);
  98. //用户参赛
  99. virtual bool OnEventUserJoinMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, DWORD dwSocketID);
  100. //用户退赛
  101. virtual bool OnEventUserQuitMatch(IServerUserItem * pIServerUserItem, BYTE cbReason, WORD *pBestRank = NULL, DWORD dwContextID = INVALID_WORD);
  102. //功能函数
  103. public:
  104. //游戏开始
  105. virtual bool OnEventGameStart(ITableFrame *pITableFrame, WORD wChairCount);
  106. //游戏结束
  107. virtual bool OnEventGameEnd(ITableFrame *pITableFrame, WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);
  108. //用户事件
  109. public:
  110. //用户坐下
  111. virtual bool OnActionUserSitDown(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser);
  112. //用户起来
  113. virtual bool OnActionUserStandUp(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser);
  114. //用户同意
  115. virtual bool OnActionUserOnReady(WORD wTableID, WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
  116. //辅助函数
  117. protected:
  118. //清除玩家
  119. void ClearSameTableUser(DWORD dwUserID);
  120. //插入用户
  121. void InserSameTableUser(DWORD dwUserID, DWORD dwTableUserID);
  122. //发送分数
  123. bool SendMatchUserScore(IServerUserItem * pIServerUserItem);
  124. //移除分组
  125. bool RemoveDistribute(IServerUserItem * pIServerUserItem);
  126. //插入用户
  127. bool InsertDistribute(IServerUserItem * pIServerUserItem);
  128. //校验函数
  129. private:
  130. //参赛校验
  131. bool VerifyUserEnterMatch(IServerUserItem * pIServerUserItem);
  132. //时间校验
  133. bool VerifyMatchTime(LPTSTR pszMessage, WORD wMaxCount, WORD & wMessageType);
  134. //辅助函数
  135. protected:
  136. //分配用户
  137. bool PerformDistribute();
  138. //开始间隔
  139. DWORD GetMatchStartInterval();
  140. //发送比赛信息
  141. void SendTableUserMatchInfo(ITableFrame *pITableFrame, WORD wChairID);
  142. //写入奖励
  143. bool WriteUserAward(IServerUserItem *pIServerUserItem, tagMatchRankInfo * pMatchRankInfo);
  144. };
  145. #endif