222 lines
7.4 KiB
C
222 lines
7.4 KiB
C
|
|
#ifndef TABLE_FRAME_SINK_HEAD_FILE
|
|||
|
|
#define TABLE_FRAME_SINK_HEAD_FILE
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "Stdafx.h"
|
|||
|
|
#include "DlgCustomRule.h"
|
|||
|
|
#include "GameLogic.h"
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
class CTableFrameSink : public ITableFrameSink, public ITableUserAction
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
protected:
|
|||
|
|
CGameLogic m_GameLogic; //<2F><>Ϸ<EFBFBD><EFBFBD>;
|
|||
|
|
ITableFrame * m_pITableFrame; //<2F><><EFBFBD>ܽӿ<DCBD>;
|
|||
|
|
const tagGameServiceOption * m_pGameServiceOption; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>;
|
|||
|
|
tagCustomRule * m_pGameCustomRule; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
|
|||
|
|
protected:
|
|||
|
|
bool m_arySendAniOver[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
bool m_aryCompareOver[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
BYTE m_aryHandStatus[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD>״̬;
|
|||
|
|
|
|||
|
|
bool m_aryShowCard[GAME_PLAYER]; //̯<><CCAF>;
|
|||
|
|
bool m_aryResponse[GAME_PLAYER]; //<2F><>Ӧ;
|
|||
|
|
BYTE m_aryRobStatus[GAME_PLAYER]; //<2F><>ׯ״̬;
|
|||
|
|
|
|||
|
|
LONG m_lTableScore[GAME_PLAYER]; //<2F><>ע<EFBFBD><D7A2>Ŀ;
|
|||
|
|
|
|||
|
|
BYTE m_aryFrontCard[GAME_PLAYER][3]; //ǰ<><C7B0><EFBFBD>˿<EFBFBD>;
|
|||
|
|
BYTE m_aryMidCard[GAME_PLAYER][5]; //<2F>ж<EFBFBD><D0B6>˿<EFBFBD>;
|
|||
|
|
BYTE m_aryBackCard[GAME_PLAYER][5]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>;
|
|||
|
|
WORD m_arySpecialType[GAME_PLAYER]; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
BYTE m_aryNormalResult[GAME_PLAYER][3];
|
|||
|
|
BYTE m_arySpecialResult[GAME_PLAYER];
|
|||
|
|
|
|||
|
|
int m_aryThreeKillResult[GAME_PLAYER]; //ȫ<>ݴ<EFBFBD><DDB4>Ӽ<EFBFBD><D3BC><EFBFBD>;
|
|||
|
|
int m_aryToltalWinDaoShu[GAME_PLAYER]; //<2F>ܹ<EFBFBD><DCB9><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
int m_aryCompareDouble[GAME_PLAYER]; //<2F><>ǹ<EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>;
|
|||
|
|
int m_aryShootDaoShu[GAME_PLAYER][GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>Һ<EFBFBD><D2BA><EFBFBD>һ<EFBFBD>Ҵ<EFBFBD>ǹҪ<C7B9>ӵ<EFBFBD>ˮ<EFBFBD><CBAE>;
|
|||
|
|
BYTE m_aryShootState[6][2]; //<2F><>ǹ(0Ӯ<30><D3AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>);
|
|||
|
|
BYTE m_cbShootCount; //<2F><><EFBFBD>Ҵ<EFBFBD>ǹ;
|
|||
|
|
SCORE m_aryGameScore[GAME_PLAYER]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
BYTE m_aryHandCardData[GAME_PLAYER][HAND_CARD_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
BYTE m_arySaveHandCard[GAME_PLAYER][HAND_CARD_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
WORD m_aryHandCardType[GAME_PLAYER][3]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
int m_arySpecialCompareResult[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱȽϽ<C8BD><CFBD><EFBFBD>;
|
|||
|
|
int m_aryCompareResult[GAME_PLAYER][3]; //ÿһ<C3BF><D2BB><EFBFBD>ȽϽ<C8BD><CFBD><EFBFBD>;
|
|||
|
|
bool m_aryDaoShui[GAME_PLAYER]; //<2F><>ˮ;
|
|||
|
|
|
|||
|
|
BYTE m_aryBankerCmpResult[GAME_PLAYER][3];
|
|||
|
|
BYTE m_aryOtherCmResult[GAME_PLAYER][3];
|
|||
|
|
|
|||
|
|
WORD m_wWinAllUser; //ȫ<>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ú<EFBFBD>;
|
|||
|
|
|
|||
|
|
BYTE m_cbRobBankerCount; //<2F><>ׯ<EFBFBD><D7AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
WORD m_wRobBankerUser[GAME_PLAYER]; //<2F><>ׯ<EFBFBD><D7AF><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>;
|
|||
|
|
|
|||
|
|
WORD m_wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
|
|||
|
|
WORD m_wPlayCount; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
|
|||
|
|
bool m_bClassicRule; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
CMD_S_Private_End_Info m_PrivateEndInfo; //˽<>г<EFBFBD><D0B3><EFBFBD>Ϣ;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>;
|
|||
|
|
CTableFrameSink();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual ~CTableFrameSink();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>;
|
|||
|
|
virtual VOID Release() { delete this; }
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч;
|
|||
|
|
virtual bool IsValid() { return AfxIsValidAddress(this,sizeof(CTableFrameSink))?true:false; }
|
|||
|
|
//<2F>ӿڲ<D3BF>ѯ;
|
|||
|
|
virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>;
|
|||
|
|
virtual bool Initialization(IUnknownEx * pIUnknownEx);
|
|||
|
|
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>;
|
|||
|
|
virtual VOID RepositionSink();
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><>Ϸ״̬;
|
|||
|
|
virtual bool IsUserPlaying(WORD wChairID) { return (HAND_STATUS_NULL != m_aryHandStatus[wChairID]); }
|
|||
|
|
|
|||
|
|
//<2F><>ѯ<EFBFBD>ӿ<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><>ѯ<EFBFBD><EFBFBD>;
|
|||
|
|
virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem){return 0;}
|
|||
|
|
//<2F><><EFBFBD>ٻ<EFBFBD><D9BB><EFBFBD>;
|
|||
|
|
virtual SCORE QueryLessEnterScore(WORD wChairID, IServerUserItem * pIServerUserItem){return 0;}
|
|||
|
|
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool QueryBuckleServiceCharge(WORD wChairID){return true;}
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7>ʼ;
|
|||
|
|
virtual bool OnEventGameStart();
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnEventGameConclude(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);
|
|||
|
|
//<2F><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>;
|
|||
|
|
virtual bool OnEventSendGameScene(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE bGameStatus, bool bSendSecret);
|
|||
|
|
|
|||
|
|
//<2F>¼<EFBFBD><C2BC>ӿ<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>¼<EFBFBD>;
|
|||
|
|
virtual bool OnTimerMessage(DWORD wTimerID, WPARAM wBindParam);
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnGameMessage(WORD wSubCmdID, VOID * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnFrameMessage(WORD wSubCmdID, VOID * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
|||
|
|
virtual bool OnDataBaseMessage(WORD wRequestID, VOID * pData, WORD wDataSize);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
|||
|
|
virtual bool OnUserScroeNotify(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F>û<EFBFBD><C3BB>¼<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnActionUserOffLine(WORD wChairID, IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnActionUserConnect(WORD wChairID, IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnActionUserSitDown(WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser);
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnActionUserStandUp(WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser);
|
|||
|
|
//<2F>û<EFBFBD>ͬ<EFBFBD><CDAC>;
|
|||
|
|
virtual bool OnActionUserOnReady(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) { return true; }
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|||
|
|
virtual bool OnSendTrumpetChat(VOID * pData, WORD wDataSize) { return true; }
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>ע;
|
|||
|
|
virtual bool OnActionUserPour(WORD wChairID, IServerUserItem * pIServerUserItem){return true;}
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>ʼ<EFBFBD><CABC>Ϸ
|
|||
|
|
virtual bool OnActionUserOnStart(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) { return true; }
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD>ʼ<EFBFBD><CABC>Ϸ
|
|||
|
|
virtual bool OnActionUserStartGame(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) { return true; }
|
|||
|
|
private:
|
|||
|
|
//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>;
|
|||
|
|
virtual void SetGameBaseScore(SCORE lBaseScore){}
|
|||
|
|
|
|||
|
|
//<2F>Ƿ<EFBFBD>֧<EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>;
|
|||
|
|
virtual bool IsHaveRule(DWORD dwGameRule);
|
|||
|
|
|
|||
|
|
virtual void SetPrivateInfo(BYTE bGameTypeIdex, DWORD bGameRuleIdex){ ; }
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|||
|
|
virtual void ResetPrivateEndInfo();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>;
|
|||
|
|
virtual void GetPrivateEndInfo(DataStream &kDataStream, bool bSend);
|
|||
|
|
//<2F>ж<EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool IsPrivateEnd();
|
|||
|
|
//<2F><>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual WORD GetRealChairCount() { return GAME_PLAYER; }
|
|||
|
|
|
|||
|
|
virtual bool OnActionUserFangKaCheck(WORD wChairID, IServerUserItem * pIServerUserItem, SCORE lUserInsure){ return true; }
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD>;
|
|||
|
|
private:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>̯<EFBFBD><CCAF>;
|
|||
|
|
void ShowCard(WORD wChairID);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>淨<EFBFBD><E6B7A8><EFBFBD><EFBFBD>;
|
|||
|
|
void GameClassicCompare();
|
|||
|
|
//<2F><>ׯ<EFBFBD><D7AF><EFBFBD>淨<EFBFBD><E6B7A8><EFBFBD><EFBFBD>;
|
|||
|
|
void GameBankerCompare();
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>淨<EFBFBD>ṹ;
|
|||
|
|
void InitClassicCompareStatus(CMD_S_ClassicCompareCard* pCompareStatus);
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ׯ<EFBFBD><D7AF><EFBFBD>淨<EFBFBD>ṹ;
|
|||
|
|
void InitBankerCompareStatus(CMD_S_BankerCompareCard* pCompareStatus);
|
|||
|
|
|
|||
|
|
//<2F><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
|
|||
|
|
private:
|
|||
|
|
//<2F><><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
bool OnSendCardOver(WORD wChairID);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>̯<EFBFBD><CCAF>;
|
|||
|
|
bool OnUserShowCard(WORD wChairID, CMD_C_OpenCard *pShowCard);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ;
|
|||
|
|
bool OnCompareCardOver(WORD wChairID);
|
|||
|
|
//<2F><>ׯ<EFBFBD>¼<EFBFBD>;
|
|||
|
|
bool OnUserRobBanker(WORD wChairID, bool bRob);
|
|||
|
|
//<2F><>ע<EFBFBD>¼<EFBFBD>;
|
|||
|
|
bool OnUserChipScore(WORD wChairID, LONG lScore);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>;
|
|||
|
|
private:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>;
|
|||
|
|
void ComputeChout();
|
|||
|
|
//<2F><><EFBFBD>ұȵ<D2B1>;
|
|||
|
|
void GetCompareResult();
|
|||
|
|
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
void AutoShowCard(WORD wChairID);
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
WORD GetOnlineCount();
|
|||
|
|
|
|||
|
|
// ¼<><C2BC><EFBFBD>¼<EFBFBD>
|
|||
|
|
public:
|
|||
|
|
// <20><>Ϸ<EFBFBD><CFB7>ʼ
|
|||
|
|
void starGameRecord();
|
|||
|
|
// <20><><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD>ʾ;
|
|||
|
|
void addGameRecordAction(WORD wSubCmdID, void* pSubMessage, int nMessageSize);
|
|||
|
|
|
|||
|
|
//¼<><C2BC>
|
|||
|
|
public:
|
|||
|
|
tagGameRecord m_kGameRecord;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#endif
|