192 lines
6.3 KiB
C
192 lines
6.3 KiB
C
|
|
#ifndef TableFrameSink_h__
|
|||
|
|
#define TableFrameSink_h__
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "Stdafx.h"
|
|||
|
|
#include "GameLogic.h"
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
class CTableFrameSink : public ITableFrameSink, public ITableUserAction
|
|||
|
|
{
|
|||
|
|
protected:
|
|||
|
|
WORD m_wBankerUser; //ׯ<><D7AF><EFBFBD>û<EFBFBD>;
|
|||
|
|
LONG m_lTableScore[GAME_PLAYER]; //<2F><>ע<EFBFBD><D7A2>Ŀ;
|
|||
|
|
bool m_bActiveUser[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
BYTE m_cbUserResponse[GAME_PLAYER]; //<2F>ظ<EFBFBD>״̬;
|
|||
|
|
BYTE m_cbHandCardCount[GAME_PLAYER]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
BYTE m_cbHandCardData[GAME_PLAYER][MAX_COUNT]; //<2F><><EFBFBD><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>;
|
|||
|
|
tagOpenCardRlt m_stOpenCardRlt[GAME_PLAYER]; //<2F><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
DWORD m_dwOwnerID; //<2F><><EFBFBD><EFBFBD>ID;
|
|||
|
|
tagOpenRuleCfg *m_pOpenRuleCfg; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
CMD_S_Private_End_Info m_PrivateEndInfo; //˽<>г<EFBFBD><D0B3><EFBFBD>Ϣ;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
CGameLogic m_GameLogic; //<2F><>Ϸ<EFBFBD><EFBFBD>;
|
|||
|
|
ITableFrame *m_pITableFrame; //<2F><><EFBFBD>ܽӿ<DCBD>;
|
|||
|
|
const tagGameServiceOption *m_pGameServiceOption; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>;
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
static const WORD m_wPlayerCount; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>;
|
|||
|
|
static tagGameRuleCfg m_stGameRuleCfg; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>;
|
|||
|
|
CTableFrameSink();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual ~CTableFrameSink();
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
static bool ReadServerConfig(const tagGameServiceOption *pGameServiceOption);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>;
|
|||
|
|
virtual VOID Release() { if (IsValid()) delete this; }
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ч;
|
|||
|
|
virtual bool IsValid() { return AfxIsValidAddress(this, sizeof(CTableFrameSink)) ? true : false; }
|
|||
|
|
//<2F>ӿڲ<D3BF>ѯ;
|
|||
|
|
virtual void * QueryInterface(const IID & Guid, DWORD dwQueryVer);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F><>ʼ<EFBFBD><CABC>;
|
|||
|
|
virtual bool Initialization(IUnknownEx * pIUnknownEx);
|
|||
|
|
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>;
|
|||
|
|
virtual void RepositionSink();
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F><>Ϸ״̬;
|
|||
|
|
virtual bool IsUserPlaying(WORD wChairID);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnActionUserOffLine(WORD wChairID, IServerUserItem * pIServerUserItem) { return true; }
|
|||
|
|
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnActionUserConnect(WORD wChairID, IServerUserItem * pIServerUserItem) { return true; }
|
|||
|
|
//<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><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; }
|
|||
|
|
//<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 cbGameStatus, 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 * pData, WORD wDataSize, IServerUserItem * pIServerUserItem);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool OnFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem);
|
|||
|
|
|
|||
|
|
//<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><EFBFBD><EFBFBD>¼<EFBFBD>;
|
|||
|
|
virtual bool OnDataBaseMessage(WORD wRequestID, VOID * pData, WORD wDataSize){ return false; }
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>;
|
|||
|
|
virtual bool OnUserScroeNotify(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason){ return false; }
|
|||
|
|
//<2F><>ѯ<EFBFBD>Ƿ<EFBFBD><C7B7>۷<EFBFBD><DBB7><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
virtual bool QueryBuckleServiceCharge(WORD wChairID){ return true; }
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>;
|
|||
|
|
//tagOpenRuleCfg * GetValidConfig()const { return (nullptr!=m_pOpenRuleCfg) ? m_pOpenRuleCfg : &m_stGameRuleCfg; }
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>С<EFBFBD><D0A1><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD>ע;
|
|||
|
|
LONG GetMinFreeChip()const {
|
|||
|
|
return 0; //GetValidConfig()->cbMinFreeChip;
|
|||
|
|
}
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD><C9BF><EFBFBD>ע;
|
|||
|
|
LONG GetMaxFreeChip()const {
|
|||
|
|
return 0;//GetValidConfig()->cbMaxFreeChip;
|
|||
|
|
}
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7>л<EFBFBD>ţģʽ;
|
|||
|
|
//bool IsHaveHuaNiuMode()const { return (0!=(GetValidConfig()->wGameRule&RULE_HUA_NIU)) ? true : false; }
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ;
|
|||
|
|
//bool IsThreeCardMode()const { return (0!=(GetValidConfig()->wGameRule&RULE_SAN_ZHANG)) ? true : false; }
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ţ<EFBFBD><C5A3>ģʽ;
|
|||
|
|
//bool IsHaveNiuFanMode()const { return (0!=(GetValidConfig()->wGameRule&RULE_NIU_FAN)) ? true : false; }
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ׯģʽ;
|
|||
|
|
bool IsRobBankerMode()
|
|||
|
|
{
|
|||
|
|
//return BANKER_ROB==GetValidConfig()->wBankerRule || BANKER_ROB4==GetValidConfig()->wBankerRule;
|
|||
|
|
return IsHasGameRule(eNNRuleEnum_BANKER_ROB);
|
|||
|
|
}
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7>ǹ̶<C7B9>ׯ<EFBFBD><D7AF>ģʽ;
|
|||
|
|
bool IsFixBankerMode() {
|
|||
|
|
//return BANKER_OWNER==GetValidConfig()->wBankerRule || BANKER_TURNS==GetValidConfig()->wBankerRule;
|
|||
|
|
return (IsHasGameRule(eNNRuleEnum_BANKER_OWNER) || IsHasGameRule(eNNRuleEnum_BANKER_TURNS));
|
|||
|
|
}
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ƴ<EFBFBD>̵<EFBFBD>ģʽ;
|
|||
|
|
bool IsBayonetMode()
|
|||
|
|
{
|
|||
|
|
return IsHasGameRule(eNNRuleEnum_BAYONET);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ţ;
|
|||
|
|
bool IsHasSpecialNiu(eNNRuleEnum eType)
|
|||
|
|
{
|
|||
|
|
return !IsHasGameRule(eType);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>м<EFBFBD>ʱ<EFBFBD><CAB1>;
|
|||
|
|
void KillAllTimer();
|
|||
|
|
//<2F><><EFBFBD>Ϳ<EFBFBD>ʼ<EFBFBD><CABC>ע;
|
|||
|
|
void SendStartChip();
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>;
|
|||
|
|
bool IsUserNoOperate(bool bIgnoreBanker);
|
|||
|
|
|
|||
|
|
protected:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
bool OnUserSendCard(WORD wChairID);
|
|||
|
|
//<2F><>ׯ<EFBFBD>¼<EFBFBD>;
|
|||
|
|
bool OnUserRobBanker(WORD wChairID, bool bRob);
|
|||
|
|
//<2F><>ע<EFBFBD>¼<EFBFBD>;
|
|||
|
|
bool OnUserChipScore(WORD wChairID, LONG lScore);
|
|||
|
|
//̯<><CCAF><EFBFBD>¼<EFBFBD>;
|
|||
|
|
bool OnUserOpenCard(WORD wChairID);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>;
|
|||
|
|
virtual void SetGameBaseScore(LONG lBaseScore){};
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>Ϣ;
|
|||
|
|
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; }
|
|||
|
|
|
|||
|
|
//˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
|||
|
|
public:
|
|||
|
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>;
|
|||
|
|
bool IsHasGameRule(eNNRuleEnum eType);
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif // TableFrameSink_h__
|