#ifndef ANDROID_USER_ITEM_SINK_HEAD_FILE #define ANDROID_USER_ITEM_SINK_HEAD_FILE #pragma once #include "Stdafx.h" #include "GameLogic.h" ////////////////////////////////////////////////////////////////////////// //出牌结果 struct tagOutCardResult { BYTE cbOperateCode; //出牌代码 BYTE cbOperateCard; //出牌值 }; //听牌分析结果 struct tagTingCardResult { BYTE bAbandonCount; //可丢弃牌数 BYTE bAbandonCard[MAX_COUNT]; //可丢弃牌 BYTE bTingCardCount[MAX_COUNT]; //听牌数目 BYTE bTingCard[MAX_COUNT][MAX_COUNT-1]; //听牌 BYTE bRemainCount[MAX_COUNT]; //听的牌的剩余数 }; ////////////////////////////////////////////////////////////////////////// //机器人类 class CAndroidUserItemSink : public IAndroidUserItemSink { //用户变量 protected: WORD m_wBankerUser; //庄家用户 WORD m_wCurrentUser; //当前用户 BYTE m_cbActionMask; //动作标识 BYTE m_cbActionCard; //操作牌 //扑克变量 protected: BYTE m_cbLeftCardCount; //剩余数目 BYTE m_cbCardIndex[GAME_PLAYER][MAX_INDEX]; //手中扑克 BYTE m_cbRepertoryCard[MAX_REPERTORY]; //库存扑克 //组合扑克 protected: BYTE m_cbWeaveCount[GAME_PLAYER]; //组合数目 tagWeaveItem m_WeaveItemArray[GAME_PLAYER][MAX_WEAVE]; //组合扑克 //出牌信息 protected: WORD m_wOutCardUser; //出牌用户 BYTE m_cbOutCardData; //出牌扑克 BYTE m_cbDiscardCount[GAME_PLAYER]; //丢弃数目 BYTE m_cbDiscardCard[GAME_PLAYER][55]; //丢弃记录 //控件变量 protected: CGameLogic m_GameLogic; //游戏逻辑 IAndroidUserItem * m_pIAndroidUserItem; //用户接口 //函数定义 public: //构造函数 CAndroidUserItemSink(); //析构函数 virtual ~CAndroidUserItemSink(); //基础接口 public: //释放对象 virtual VOID Release() { delete this; } //接口查询 virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer); //控制接口 public: //初始接口 virtual bool Initialization(IUnknownEx * pIUnknownEx); //重置接口 virtual bool RepositionSink(); //游戏事件 public: //时间消息 virtual bool OnEventTimer(UINT nTimerID); //游戏消息 virtual bool OnEventGameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize); //游戏消息 virtual bool OnEventFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize); //场景消息 virtual bool OnEventSceneMessage(BYTE cbGameStatus, bool bLookonOther, VOID * pData, WORD wDataSize); //用户事件 public: //用户进入 virtual VOID OnEventUserEnter(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser); //用户离开 virtual VOID OnEventUserLeave(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser); //用户积分 virtual VOID OnEventUserScore(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser); //用户状态 virtual VOID OnEventUserStatus(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser); //用户段位 virtual VOID OnEventUserSegment(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser); //消息处理 protected: //游戏开始 bool OnSubGameStart(const void * pBuffer, WORD wDataSize); //用户出牌 bool OnSubOutCard(const void * pBuffer, WORD wDataSize); //发牌消息 bool OnSubSendCard(const void * pBuffer, WORD wDataSize); //操作提示 bool OnSubOperateNotify(const void * pBuffer, WORD wDataSize); //操作结果 bool OnSubOperateResult(const void * pBuffer, WORD wDataSize); //游戏结束 bool OnSubGameEnd(const void * pBuffer, WORD wDataSize); //处理函数 protected: //出牌 void OnOutCard( BYTE cbOutCard ); //操作牌 void OnOperateCard( BYTE cbOperateCode,BYTE cbOperateCard ); //辅助函数 protected: //返回废弃的牌 bool SearchTingCard( tagTingCardResult &TingCardResult ); //搜索出牌 bool SearchOutCard( tagOutCardResult &OutCardResult ); }; ////////////////////////////////////////////////////////////////////////// #endif