Files

373 lines
11 KiB
C
Raw Permalink Normal View History

2026-03-03 13:56:44 +08:00
#ifndef TABLE_FRAME_HEAD_FILE
#define TABLE_FRAME_HEAD_FILE
#include "Stdafx.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><E9B6A8>
typedef IServerUserItem * CTableUserItemArray[MAX_CHAIR]; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
typedef CWHArray<IServerUserItem *> CLookonUserItemArray; //<2F>Թ<EFBFBD><D4B9><EFBFBD><EFBFBD><EFBFBD>
typedef CWHArray<tagGameScoreRecord *> CGameScoreRecordArray; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
typedef CWHArray<tagGameCardLibrary *> CGameCardLibraryArray; //<2F>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>
interface IMatchTableFrameNotify;
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD>
class CTableFrame : public ITableFrame
{
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
protected:
WORD m_wTableID; //<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
WORD m_wChairCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE m_cbStartMode; //<2F><>ʼģʽ
WORD m_wUserCount; //<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
protected:
bool m_bGameStarted; //<2F><>Ϸ<EFBFBD><CFB7>־
bool m_bDrawStarted; //<2F><>Ϸ<EFBFBD><CFB7>־
bool m_bTableStarted; //<2F><>Ϸ<EFBFBD><CFB7>־
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
protected:
bool m_bAllowLookon[MAX_CHAIR]; //<2F>Թ۱<D4B9>־
SCORE m_lFrozenedScore[MAX_CHAIR]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
protected:
LONG m_lCellScore; //<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
BYTE m_cbGameStatus; //<2F><>Ϸ״̬
//ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
DWORD m_dwDrawStartTime; //<2F><>ʼʱ<CABC><CAB1>
SYSTEMTIME m_SystemTimeStart; //<2F><>ʼʱ<CABC><CAB1>
WORD m_wDrawCount; //<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
//<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>
protected:
DWORD m_dwTableOwnerID; //<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
TCHAR m_szEnterPassword[LEN_PASSWORD]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>߱<EFBFBD><DFB1><EFBFBD>
protected:
WORD m_wOffLineCount[MAX_CHAIR]; //<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
DWORD m_dwOffLineTime[MAX_CHAIR]; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
protected:
CTableUserItemArray m_TableUserItemArray; //<2F><>Ϸ<EFBFBD>û<EFBFBD>
CLookonUserItemArray m_LookonUserItemArray; //<2F>Թ<EFBFBD><D4B9>û<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
protected:
ITimerEngine * m_pITimerEngine; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ITableFrameSink * m_pITableFrameSink; //<2F><><EFBFBD>ӽӿ<D3BD>
IMainServiceFrame * m_pIMainServiceFrame; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
IAndroidUserManager * m_pIAndroidUserManager; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
//<2F><>չ<EFBFBD>ӿ<EFBFBD>
protected:
ITableUserAction * m_pITableUserAction; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
ITableUserRequest * m_pITableUserRequest; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
//<2F><><EFBFBD>ݽӿ<DDBD>
protected:
IDataBaseEngine * m_pIKernelDataBaseEngine; //<2F>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>
IDataBaseEngine * m_pIRecordDataBaseEngine; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
protected:
tagGameParameter * m_pGameParameter; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameServiceAttrib * m_pGameServiceAttrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceOption * m_pGameServiceOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameMatchOption * m_pGameMatchOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ϸ<EFBFBD><CFB7>¼
protected:
CGameScoreRecordArray m_GameScoreRecordActive; //<2F><>Ϸ<EFBFBD><CFB7>¼
static CGameScoreRecordArray m_GameScoreRecordBuffer; //<2F><>Ϸ<EFBFBD><CFB7>¼
DataStream m_UserDefine; //<2F>û<EFBFBD><C3BB>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
static CGameCardLibraryArray m_GameCardLibraryBuffer;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
protected:
ITableFrameHook * m_pITableFrameHook; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
ITableUserAction * m_pIMatchTableAction; //<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
//˽<>˳<EFBFBD><CBB3>ӿ<EFBFBD>
protected:
ITableFramePrivate * m_pITableFramePrivate; //˽<>˳<EFBFBD><CBB3>ӿ<EFBFBD>
ITableUserAction * m_pIPrivateTableAction; //˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
//˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
protected:
tagPrivateFrameParameter m_PrivateFramePrarameter; // ˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
tagPrivateFrameRecordInfo m_PrivateFrameRecord; // <20><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CTableFrame();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CTableFrame();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>
virtual VOID Release() { delete this; }
//<2F>ӿڲ<D3BF>ѯ
virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
//<2F><><EFBFBD>Խӿ<D4BD>
public:
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
virtual WORD GetTableID() { return m_wTableID; }
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
virtual WORD GetChairCount() { return m_wChairCount; }
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ŀ
virtual WORD GetNullChairCount(){return m_wChairCount - m_wUserCount;}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
virtual WORD GetOffLineUserCount();
//<2F>û<EFBFBD><C3BB><EFBFBD>Ŀ
virtual WORD GetSitUserCount();
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
public:
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
virtual VOID * GetCustomRule() { return m_pGameServiceOption->cbCustomRule; };
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceAttrib * GetGameServiceAttrib() { return m_pGameServiceAttrib; }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagGameServiceOption * GetGameServiceOption() { return m_pGameServiceOption; }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
virtual tagGameMatchOption * GetGameMatchOption() { return m_pGameMatchOption; }
//<2F><><EFBFBD>ýӿ<C3BD>
public:
//<2F><>ʼģʽ
virtual BYTE GetStartMode() { return m_cbStartMode; }
//<2F><>ʼģʽ
virtual VOID SetStartMode(BYTE cbStartMode) { m_cbStartMode=cbStartMode; }
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
public:
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
virtual LONG GetCellScore() { return m_lCellScore; }
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
virtual VOID SetCellScore(LONG lCellScore);
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><>Ϸ״̬
virtual bool IsGameStarted() { return m_bGameStarted; }
//<2F><>Ϸ״̬
virtual bool IsDrawStarted() { return m_bDrawStarted; }
//<2F><>Ϸ״̬
virtual bool IsTableStarted() { return m_bTableStarted; }
//<2F><><EFBFBD><EFBFBD>״̬
virtual bool IsTableLocked() { return (m_szEnterPassword[0]!=0); }
//״̬<D7B4>ӿ<EFBFBD>
public:
//<2F><>ȡ״̬
virtual BYTE GetGameStatus() { return m_cbGameStatus; }
//<2F><><EFBFBD><EFBFBD>״̬
virtual VOID SetGameStatus(BYTE cbGameStatus) { m_cbGameStatus=cbGameStatus; }
//<2F><><EFBFBD>ƽӿ<C6BD>
public:
//<2F><>ʼ<EFBFBD><CABC>Ϸ
virtual bool StartGame();
//<2F><>ɢ<EFBFBD><C9A2>Ϸ
virtual bool DismissGame();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ
virtual bool ConcludeGame(BYTE cbGameStatus, BYTE cbReason = GER_NORMAL);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool ConcludeTable();
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
public:
//Ѱ<><D1B0><EFBFBD>û<EFBFBD>
virtual IServerUserItem * SearchUserItem(DWORD dwUserID);
//<2F><>Ϸ<EFBFBD>û<EFBFBD>
virtual IServerUserItem * GetTableUserItem(WORD wChairID);
//<2F>Թ<EFBFBD><D4B9>û<EFBFBD>
virtual IServerUserItem * EnumLookonUserItem(WORD wEnumIndex);
//д<>ֽӿ<D6BD>
public:
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool WriteUserScore(WORD wChairID, tagScoreInfo & ScoreInfo);
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool WriteTableScore(tagScoreInfo ScoreInfoArray[], WORD wScoreCount,DataStream kDataStream = DataStream());
//<2F><><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
//virtual bool WriteScoreMultiple(WORD wChairID, BYTE cbScoreMultiple);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>˰<EFBFBD><CBB0>
virtual SCORE CalculateRevenue(WORD wChairID, SCORE lScore);
//<2F><>ѯ<EFBFBD>޶<EFBFBD>
virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem);
//ʱ<><CAB1><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
virtual bool SetGameTimer(DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter);
//ɾ<><C9BE>ʱ<EFBFBD><CAB1>
virtual bool KillGameTimer(DWORD dwTimerID);
//<2F><>Ϸ<EFBFBD>û<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendTableData(WORD wChairID, WORD wSubCmdID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendTableData(WORD wChairID, WORD wSubCmdID, VOID * pData, WORD wDataSize,WORD wMainCmdID=MDM_GF_GAME);
//<2F>Թ<EFBFBD><D4B9>û<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendLookonData(WORD wChairID, WORD wSubCmdID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendLookonData(WORD wChairID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendUserItemData(IServerUserItem * pIServerUserItem, WORD wSubCmdID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendUserItemData(IServerUserItem * pIServerUserItem, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//ϵͳ<CFB5><CDB3>Ϣ
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType);
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool PerformStandUpAction(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool PerformStandUpActionEx(IServerUserItem * pIServerUserItem);
//<2F>Թ۶<D4B9><DBB6><EFBFBD>
virtual bool PerformLookonAction(WORD wChairID, IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><C2B6><EFBFBD>
virtual bool PerformSitDownAction(WORD wChairID, IServerUserItem * pIServerUserItem, LPCTSTR lpszPassword=NULL);
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//<2F><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
virtual bool SendGameScene(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetTableFrameHook(IUnknownEx * pIUnknownEx);
//<2F><>ȡ<EFBFBD>ӿ<EFBFBD>
virtual IUnknownEx * GetTableFrameHook(){ return m_pITableFrameHook;}
//α<><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool ImitateGameOption(IServerUserItem * pIServerUserItem);
//˽<>˳<EFBFBD><CBB3>ӿ<EFBFBD>
public:
//<2F><><EFBFBD>ýӿ<C3BD>
virtual bool SetTableFramePrivate(IUnknownEx * pIUnknownEx);
//<2F><>ȡ<EFBFBD>ӿ<EFBFBD>
virtual IUnknownEx * GetTableFramePrivate(){ return m_pITableFramePrivate;}
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual void AddPrivateAction(DWORD dwChairID,BYTE bActionIdex);
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>Ϣ
virtual void SetPrivateInfo(tagPrivateFrameParameter &PriavateFrame);
//<2F><>ȡ˽<C8A1>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
virtual tagPrivateFrameParameter* GetPrivateFrameInfo();
//<2F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool IsAutoUserCountRule(ITableFrame* pTbableFrame, bool bReal = false);
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual tagPrivateFrameRecordInfo* GetPrivateFrameRecord();
//ͳ<><CDB3>˽<EFBFBD>˳<EFBFBD><CBB3><EFBFBD><EFBFBD>Ҿ<EFBFBD><D2BE><EFBFBD>
virtual VOID addPrivatePlayCout(WORD wCout);
//<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();
//<2F>ƿ<EFBFBD><C6BF>ӿ<EFBFBD>
public:
//<2F><>ȡ<EFBFBD>ƿ<EFBFBD>
virtual tagGameCardLibrary* GetGameCardLibrary(DWORD dwCustomID = 0xFFFFFFFF);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>
static void AddGameCardLibrary(tagGameCardLibrary* pGameCard);
//<2F>޸<EFBFBD><DEB8>ƿ<EFBFBD>
static void UpdateGameCardLibrary(DWORD dwLibID, DWORD dwCustomID, BYTE cbCardCount, BYTE* pCardData);
//ɾ<><C9BE><EFBFBD>ƿ<EFBFBD>
static void ClearGameCardLibrary();
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
public:
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
WORD GetDrawCount();
//<2F><>ȡ<EFBFBD><C8A1>λ
WORD GetNullChairID();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
WORD GetRandNullChairID();
//<2F>Թ<EFBFBD><D4B9><EFBFBD>Ŀ
WORD GetLookonUserCount();
//<2F><><EFBFBD>ܺ<EFBFBD><DCBA><EFBFBD>
public:
//<2F>û<EFBFBD>״<EFBFBD><D7B4>
WORD GetTableUserInfo(tagTableUserInfo & TableUserInfo);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool InitializationFrame(WORD wTableID, tagTableFrameParameter & TableFrameParameter);
//<2F>û<EFBFBD><C3BB>¼<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool OnEventUserOffLine(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool OnUserScroeNotify(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);
//ϵͳ<CFB5>¼<EFBFBD>
public:
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
bool OnEventTimer(DWORD dwTimerID, WPARAM dwBindParameter);
//<2F><>Ϸ<EFBFBD>¼<EFBFBD>
bool OnEventSocketGame(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool OnEventSocketFrame(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD>״̬
bool SendTableStatus();
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool SendRequestFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode);
//Ч<><EFBFBD><E9BAAF>
public:
//<2F><>ʼЧ<CABC><D0A7>
bool EfficacyStartGame(WORD wReadyChairID);
//<2F><>ʼ׼<CABC><D7BC>У<EFBFBD><D0A3>
bool EfficacyStartReady(WORD wStartChairID);
//<2F><>ַЧ<D6B7><D0A7>
bool EfficacyIPAddress(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
bool EfficacyScoreRule(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool CheckDistribute();
};
//////////////////////////////////////////////////////////////////////////////////
#endif