血战麻将-机器人【源码】
http://img.woaidaima.com//upload/image/20170516/1494897406596096412.jpghttp://img.woaidaima.com//upload/image/20170516/1494897408064059417.jpg#ifndef TABLE_FRAME_SINK_HEAD_FILE#define TABLE_FRAME_SINK_HEAD_FILE
#pragma once
#include "Stdafx.h"
#include "GameLogic.h"
//////////////////////////////////////////////////////////////////////////
//枚举定义
//效验类型
enum enEstimatKind
{
EstimatKind_OutCard, //出牌效验
EstimatKind_GangCard, //杠牌效验
};
//杠牌得分
struct tagGangScore
{
BYTE cbGangCount; //杠个数
LONGLONG lScore; //每个杠得分
};
//////////////////////////////////////////////////////////////////////////
//游戏桌子类
class CTableFrameSink : public ITableFrameSink, public ITableUserAction
{
//游戏变量
protected:
LONG m_lSiceCount; //骰子点数
WORD m_wBankerUser; //庄家用户
LONGLONG m_lGameScore; //游戏得分
BYTE m_cbCardIndex; //用户扑克
bool m_bTrustee; //是否托管
BYTE m_cbGenCount; //
bool m_bPlayStatus; //
BYTE m_cbWinCount; //
WORD m_wWinOrder; //
LONG m_lGameTax; //
tagGangScore m_GangScore; //
WORD m_wLostFanShu;//
//出牌信息
protected:
WORD m_wOutCardUser; //出牌用户
BYTE m_cbOutCardData; //出牌扑克
BYTE m_cbOutCardCount; //出牌数目
BYTE m_cbDiscardCount; //丢弃数目
BYTE m_cbDiscardCard; //丢弃记录
//发牌信息
protected:
BYTE m_cbSendCardData; //发牌扑克
BYTE m_cbSendCardCount; //发牌数目
BYTE m_cbLeftCardCount; //剩余数目
BYTE m_cbRepertoryCard; //库存扑克
//堆立变量
protected:
WORD m_wHeapHand; //堆立头部
WORD m_wHeapTail; //堆立尾部
BYTE m_cbHeapCardInfo; //堆牌信息
//运行变量
protected:
WORD m_wResumeUser; //还原用户
WORD m_wCurrentUser; //当前用户
WORD m_wProvideUser; //供应用户
BYTE m_cbProvideCard; //供应扑克
//状态变量
protected:
bool m_bSendStatus; //发牌状态
bool m_bGangStatus; //抢杆状态
bool m_bGangOutStatus; //
bool m_bEnjoinChiHu; //禁止吃胡
bool m_bEnjoinChiPeng; //禁止吃碰
//用户状态
public:
bool m_bResponse; //响应标志
BYTE m_cbUserAction; //用户动作
BYTE m_cbOperateCard; //操作扑克
BYTE m_cbPerformAction; //执行动作
//组合扑克
protected:
BYTE m_cbWeaveItemCount; //组合数目
tagWeaveItem m_WeaveItemArray;//组合扑克
//结束信息
protected:
BYTE m_cbChiHuCard; //吃胡扑克
DWORD m_dwChiHuKind; //吃胡结果
CChiHuRight m_ChiHuRight; //
WORD m_wProvider; //
//组件变量
protected:
CGameLogic m_GameLogic; //游戏逻辑
ITableFrame * m_pITableFrame; //框架接口
const tagGameServiceOption * m_pGameServiceOption; //配置参数
//函数定义
public:
//构造函数
CTableFrameSink();
//析构函数
virtual ~CTableFrameSink();
//基础接口
public:
//释放对象
virtual VOID Release() { }
//接口查询
virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer);
//管理接口
public:
//初始化
virtual bool Initialization(IUnknownEx * pIUnknownEx);
//复位桌子
virtual VOID RepositionSink();
//查询接口
public:
//查询限额
virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem){return 0; };
//最少积分
virtual SCORE QueryLessEnterScore(WORD wChairID, IServerUserItem * pIServerUserItem){ return 0; };
//查询是否扣服务费
virtual bool QueryBuckleServiceCharge(WORD wChairID){return true;}
//比赛接口
public:
//设置基数
virtual void SetGameBaseScore(LONG lBaseScore){};
//游戏事件
public:
//游戏开始
virtual bool OnEventGameStart();
//游戏结束
virtual bool OnEventGameConclude(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);
//发送场景
virtual bool OnEventSendGameScene(WORD wChiarID, IServerUserItem * pIServerUserItem, BYTE cbGameStatus, bool bSendSecret);
//事件接口
public:
//定时器事件
virtual bool OnTimerMessage(DWORD wTimerID, WPARAM wBindParam);
//数据事件
virtual bool OnDataBaseMessage(WORD wRequestID, VOID * pData, WORD wDataSize) { return false; }
//积分事件
virtual bool OnUserScroeNotify(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason) { return false; }
//网络接口
public:
//游戏消息处理
virtual bool OnGameMessage(WORD wSubCmdID, VOID * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem);
//框架消息处理
virtual bool OnFrameMessage(WORD wSubCmdID, VOID * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem);
//用户事件
public:
//用户断线
virtual bool OnActionUserOffLine(WORD wChairID,IServerUserItem * pIServerUserItem) { return true; }
//用户重入
virtual bool OnActionUserConnect(WORD wChairID,IServerUserItem * pIServerUserItem) { return true; }
//用户坐下
virtual bool OnActionUserSitDown(WORD wChairID,IServerUserItem * pIServerUserItem, bool bLookonUser);
//用户起立
virtual bool OnActionUserStandUp(WORD wChairID,IServerUserItem * pIServerUserItem, bool bLookonUser);
//用户同意
virtual bool OnActionUserOnReady(WORD wChairID,IServerUserItem * pIServerUserItem, void * pData, WORD wDataSize) { return true; }
//游戏事件
protected:
//用户出牌
bool OnUserOutCard(WORD wChairID, BYTE cbCardData);
//用户操作
bool OnUserOperateCard(WORD wChairID, BYTE cbOperateCode, BYTE cbOperateCard);
//辅助函数
protected:
//发送操作
bool SendOperateNotify();
//派发扑克
bool DispatchCardData(WORD wCurrentUser,bool bTail=false);
//响应判断
bool EstimateUserRespond(WORD wCenterUser, BYTE cbCenterCard, enEstimatKind EstimatKind);
//
void ProcessChiHuUser( WORD wChairId, bool bGiveUp );
//
void FiltrateRight( WORD wChairId,CChiHuRight &chr );
};
//////////////////////////////////////////////////////////////////////////
#endif
页:
[1]