诸暨麻将添加redis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

140 lines
3.9 KiB

  1. #ifndef ANDROID_USER_ITEM_SINK_HEAD_FILE
  2. #define ANDROID_USER_ITEM_SINK_HEAD_FILE
  3. #pragma once
  4. #include "Stdafx.h"
  5. #include "GameLogic.h"
  6. //////////////////////////////////////////////////////////////////////////
  7. //出牌结果
  8. struct tagOutCardResult
  9. {
  10. BYTE cbOperateCode; //出牌代码
  11. BYTE cbOperateCard; //出牌值
  12. };
  13. //听牌分析结果
  14. struct tagTingCardResult
  15. {
  16. BYTE bAbandonCount; //可丢弃牌数
  17. BYTE bAbandonCard[MAX_COUNT]; //可丢弃牌
  18. BYTE bTingCardCount[MAX_COUNT]; //听牌数目
  19. BYTE bTingCard[MAX_COUNT][MAX_COUNT-1]; //听牌
  20. BYTE bRemainCount[MAX_COUNT]; //听的牌的剩余数
  21. };
  22. //////////////////////////////////////////////////////////////////////////
  23. //机器人类
  24. class CAndroidUserItemSink : public IAndroidUserItemSink
  25. {
  26. //用户变量
  27. protected:
  28. WORD m_wBankerUser; //庄家用户
  29. WORD m_wCurrentUser; //当前用户
  30. BYTE m_cbActionMask; //动作标识
  31. BYTE m_cbActionCard; //操作牌
  32. //扑克变量
  33. protected:
  34. BYTE m_cbLeftCardCount; //剩余数目
  35. BYTE m_cbCardIndex[GAME_PLAYER][MAX_INDEX]; //手中扑克
  36. BYTE m_cbRepertoryCard[MAX_REPERTORY]; //库存扑克
  37. //组合扑克
  38. protected:
  39. BYTE m_cbWeaveCount[GAME_PLAYER]; //组合数目
  40. tagWeaveItem m_WeaveItemArray[GAME_PLAYER][MAX_WEAVE]; //组合扑克
  41. //出牌信息
  42. protected:
  43. WORD m_wOutCardUser; //出牌用户
  44. BYTE m_cbOutCardData; //出牌扑克
  45. BYTE m_cbDiscardCount[GAME_PLAYER]; //丢弃数目
  46. BYTE m_cbDiscardCard[GAME_PLAYER][55]; //丢弃记录
  47. //控件变量
  48. protected:
  49. CGameLogic m_GameLogic; //游戏逻辑
  50. IAndroidUserItem * m_pIAndroidUserItem; //用户接口
  51. //函数定义
  52. public:
  53. //构造函数
  54. CAndroidUserItemSink();
  55. //析构函数
  56. virtual ~CAndroidUserItemSink();
  57. //基础接口
  58. public:
  59. //释放对象
  60. virtual VOID Release() { delete this; }
  61. //接口查询
  62. virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
  63. //控制接口
  64. public:
  65. //初始接口
  66. virtual bool Initialization(IUnknownEx * pIUnknownEx);
  67. //重置接口
  68. virtual bool RepositionSink();
  69. //游戏事件
  70. public:
  71. //时间消息
  72. virtual bool OnEventTimer(UINT nTimerID);
  73. //游戏消息
  74. virtual bool OnEventGameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  75. //游戏消息
  76. virtual bool OnEventFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize);
  77. //场景消息
  78. virtual bool OnEventSceneMessage(BYTE cbGameStatus, bool bLookonOther, VOID * pData, WORD wDataSize);
  79. //用户事件
  80. public:
  81. //用户进入
  82. virtual VOID OnEventUserEnter(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser);
  83. //用户离开
  84. virtual VOID OnEventUserLeave(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser);
  85. //用户积分
  86. virtual VOID OnEventUserScore(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser);
  87. //用户状态
  88. virtual VOID OnEventUserStatus(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser);
  89. //用户段位
  90. virtual VOID OnEventUserSegment(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser);
  91. //消息处理
  92. protected:
  93. //游戏开始
  94. bool OnSubGameStart(const void * pBuffer, WORD wDataSize);
  95. //用户出牌
  96. bool OnSubOutCard(const void * pBuffer, WORD wDataSize);
  97. //发牌消息
  98. bool OnSubSendCard(const void * pBuffer, WORD wDataSize);
  99. //操作提示
  100. bool OnSubOperateNotify(const void * pBuffer, WORD wDataSize);
  101. //操作结果
  102. bool OnSubOperateResult(const void * pBuffer, WORD wDataSize);
  103. //游戏结束
  104. bool OnSubGameEnd(const void * pBuffer, WORD wDataSize);
  105. //处理函数
  106. protected:
  107. //出牌
  108. void OnOutCard( BYTE cbOutCard );
  109. //操作牌
  110. void OnOperateCard( BYTE cbOperateCode,BYTE cbOperateCard );
  111. //辅助函数
  112. protected:
  113. //返回废弃的牌
  114. bool SearchTingCard( tagTingCardResult &TingCardResult );
  115. //搜索出牌
  116. bool SearchOutCard( tagOutCardResult &OutCardResult );
  117. };
  118. //////////////////////////////////////////////////////////////////////////
  119. #endif