|
- #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
|