Files

446 lines
16 KiB
C
Raw Permalink Normal View History

2026-02-13 14:34:15 +08:00
#ifndef ATTEMPER_ENGINE_SINK_HEAD_FILE
#define ATTEMPER_ENGINE_SINK_HEAD_FILE
#pragma once
#include "Stdafx.h"
#include "TableFrame.h"
#include "InitParameter.h"
#include "ServerListManager.h"
#include "DataBasePacket.h"
#include "SensitiveWordsFilter.h"
#include "DistributeManager.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CLIENT_KIND_FALSH 1 //<2F><>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>
#define CLIENT_KIND_MOBILE 2 //<2F>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>
#define CLIENT_KIND_COMPUTER 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>󶨲<EFBFBD><F3B6A8B2><EFBFBD>
struct tagBindParameter
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DWORD dwSocketID; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ
DWORD dwClientAddr; //<2F><><EFBFBD>ӵ<EFBFBD>ַ
DWORD dwActiveTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//<2F><EFBFBD><E6B1BE>Ϣ
DWORD dwPlazaVersion; //<2F><EFBFBD>
DWORD dwFrameVersion; //<2F><><EFBFBD>ܰ汾
DWORD dwProcessVersion; //<2F><><EFBFBD>̰汾
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
BYTE cbClientKind; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IServerUserItem * pIServerUserItem; //<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
};
//ϵͳ<CFB5><CDB3>Ϣ
struct tagSystemMessage
{
DWORD dwLastTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DBR_GR_SystemMessage SystemMessage; //ϵͳ<CFB5><CDB3>Ϣ
};
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
typedef CWHArray<CTableFrame *> CTableFrameArray; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef CMap<DWORD,DWORD,DWORD,DWORD &> CKickUserItemMap; //<2F><><EFBFBD><EFBFBD>ӳ<EFBFBD><D3B3>
typedef CList<tagSystemMessage *> CSystemMessageList; //ϵͳ<CFB5><CDB3>Ϣ
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ȹ<EFBFBD><C8B9><EFBFBD>
class CAttemperEngineSink : public IAttemperEngineSink, public IMainServiceFrame,
public IServerUserItemSink
{
//<2F><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
friend class CServiceUnits;
//״̬<D7B4><CCAC><EFBFBD><EFBFBD>
protected:
bool m_bCollectUser; //<2F><><EFBFBD>ܱ<EFBFBD>־
bool m_bNeekCorrespond; //Э<><D0AD><EFBFBD><EFBFBD>־
//<2F><><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
protected:
DWORD m_dwIntervalTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
DWORD m_dwLastDisposeTime; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
protected:
tagBindParameter * m_pNormalParameter; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
tagBindParameter * m_pAndroidParameter; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
protected:
CInitParameter * m_pInitParameter; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameParameter * m_pGameParameter; //<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
tagGameMatchOption * m_pGameMatchOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceAttrib * m_pGameServiceAttrib; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tagGameServiceOption * m_pGameServiceOption; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CMD_GR_ConfigColumn m_DataConfigColumn; //<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
CMD_GR_ConfigProperty m_DataConfigProperty; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
CTableFrameArray m_TableFrameArray; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CServerListManager m_ServerListManager; //<2F>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
CServerUserManager m_ServerUserManager; //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
CAndroidUserManager m_AndroidUserManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CGamePropertyManager m_GamePropertyManager; //<2F><><EFBFBD>߹<EFBFBD><DFB9><EFBFBD>
CDistributeManager m_DistributeManage; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CKickUserItemMap m_KickUserItemMap; //<2F><><EFBFBD>˹<EFBFBD><CBB9><EFBFBD>
CSystemMessageList m_SystemMessageList; //ϵͳ<CFB5><CDB3>Ϣ
CSensitiveWordsFilter m_WordsFilter; //<2F><><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
protected:
ITimerEngine * m_pITimerEngine; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IAttemperEngine * m_pIAttemperEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ITCPSocketService * m_pITCPSocketService; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ITCPNetworkEngine * m_pITCPNetworkEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IGameServiceManager * m_pIGameServiceManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IGameServiceCustomTime * m_pIGameServiceSustomTime; //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
IMatchServiceManager* m_pIMatchServiceManager; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
IPrivateServiceManager* m_pIPrivateServiceManager; //˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
IDataBaseEngine * m_pIRecordDataBaseEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDataBaseEngine * m_pIKernelDataBaseEngine; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDBCorrespondManager * m_pIDBCorrespondManager; //<2F><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CAttemperEngineSink();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CAttemperEngineSink();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F>ͷŶ<CDB7><C5B6><EFBFBD>
virtual VOID Release() { return; }
//<2F>ӿڲ<D3BF>ѯ
virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
//<2F><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnAttemperEngineStart(IUnknownEx * pIUnknownEx);
//ֹͣ<CDA3>¼<EFBFBD>
virtual bool OnAttemperEngineConclude(IUnknownEx * pIUnknownEx);
//<2F>¼<EFBFBD><C2BC>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize);
//<2F>Զ<EFBFBD><D4B6>¼<EFBFBD>
virtual bool OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize);
//<2F>ں<EFBFBD><DABA>¼<EFBFBD>
public:
//ʱ<><CAB1><EFBFBD>¼<EFBFBD>
virtual bool OnEventTimer(DWORD dwTimerID, WPARAM wBindParam);
//<2F><><EFBFBD>ݿ<EFBFBD><DDBF>¼<EFBFBD>
virtual bool OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode);
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason);
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
public:
//Ӧ<><D3A6><EFBFBD>¼<EFBFBD>
virtual bool OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID);
//<2F>ر<EFBFBD><D8B1>¼<EFBFBD>
virtual bool OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID);
//<2F><>ȡ<EFBFBD>¼<EFBFBD>
virtual bool OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><>Ϣ<EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(LPCTSTR lpszMessage, WORD wType);
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType);
//<2F><>Ϸ<EFBFBD><CFB7>Ϣ
virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
virtual bool SendRoomMessage(DWORD dwSocketID, LPCTSTR lpszMessage, WORD wType, bool bAndroid);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendData(BYTE cbSendMask, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendData(IServerUserItem * pIServerUserItem, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//Ⱥ<><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual bool SendDataBatchToMobileUser(WORD wCmdTable, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD>ܽӿ<DCBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
virtual bool InsertDistribute(IServerUserItem * pIServerUserItem);
//ɾ<><C9BE><EFBFBD>û<EFBFBD>
virtual bool DeleteDistribute(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD>дʹ<D0B4><CAB9><EFBFBD>
virtual void SensitiveWordFilter(LPCTSTR pMsg, LPTSTR pszFiltered, int nMaxLen);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual VOID UnLockAndroidUser(WORD wServerID, WORD wBatchID);
//<2F>û<EFBFBD><C3BB>ӿ<EFBFBD>
public:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason);
//<2F>û<EFBFBD>״̬
virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID=INVALID_TABLE, WORD wOldChairID=INVALID_CHAIR);
//<2F>û<EFBFBD>Ȩ<EFBFBD><C8A8>
virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight,bool bGameRight=true);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
protected:
//<2F><>¼<EFBFBD>ɹ<EFBFBD>
bool OnDBLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><>¼ʧ<C2BC><CAA7>
bool OnDBLogonFailure(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool OnDBGameParameter(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F>б<EFBFBD><D0B1><EFBFBD>Ϣ
bool OnDBGameColumnInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool OnDBGameAndroidInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnDBGameAndroidParameter(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool OnDBGamePropertyInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD>
bool OnDBGameCardLibrary(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F>ƿ<EFBFBD><C6BF><EFBFBD><EFBFBD><EFBFBD>;
bool OnDBGameCardLibraryCfg(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool OnDBUserInsureInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD>гɹ<D0B3>
bool OnDBUserInsureSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool OnDBUserInsureFailure(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
bool OnDBUserInsureUserInfo(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD>߳ɹ<DFB3>
bool OnDBPropertySuccess(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool OnDBPropertyFailure(DWORD dwContextID, VOID * pData, WORD wDataSize);
//ϵͳ<CFB5><CDB3>Ϣ
bool OnDBSystemMessage(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>
bool OnDBSensitiveWords(DWORD dwContextID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
protected:
//ע<><D7A2><EFBFBD>¼<EFBFBD>
bool OnTCPSocketMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F>б<EFBFBD><D0B1>¼<EFBFBD>
bool OnTCPSocketMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
bool OnTCPSocketMainUserCollect(WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPSocketMainManagerService(WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>
bool OnTCPSocketMainWebService(WORD wSubCmdID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
protected:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkMainUser(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
bool OnTCPNetworkMainLogon(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><>Ϸ<EFBFBD><CFB7><EFBFBD><EFBFBD>
bool OnTCPNetworkMainGame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>
bool OnTCPNetworkMainFrame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
bool OnTCPNetworkMainInsure(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkMainManage(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkMainMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//˽<>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkMainPrivate(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
protected:
//I D <20><>¼
bool OnTCPNetworkSubLogonUserID(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>ֻ<EFBFBD><D6BB><EFBFBD>¼
bool OnTCPNetworkSubLogonMobile(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>ʺŵ<CABA>¼
bool OnTCPNetworkSubLogonAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubUserRule(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB>Թ<EFBFBD>
bool OnTCPNetworkSubUserLookon(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubUserSitDown(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubUserStandUp(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD>˽<EFBFBD><CBBD>
bool OnTCPNetworkSubWisperChat(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubUserExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubWisperExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//ʹ<>õ<EFBFBD><C3B5><EFBFBD>
bool OnTCPNetwordSubSendTrumpet(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
bool OnTCPNetworkSubUserInviteReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubUserRepulseSit(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubMemberKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
bool OnTCPNetworkSubUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
bool OnTCPNetworkSubUserChairReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
bool OnTCPNetworkSubChairUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
bool OnTCPNetworkSubQueryInsureInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubSaveScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubTakeScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubTransferScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><>ѯ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubQueryUserInfoRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
bool OnTCPNetworkSubQueryOption(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubOptionServer(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>߳<EFBFBD><DFB3>û<EFBFBD>
bool OnTCPNetworkSubManagerKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool OnTCPNetworkSubLimitUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
bool OnTCPNetworkSubKickAllUser(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool OnTCPNetworkSubSendMessage(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><>ɢ<EFBFBD><C9A2>Ϸ
bool OnTCPNetworkSubDismissGame(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F>ڲ<EFBFBD><DAB2>¼<EFBFBD>
protected:
//<2F>û<EFBFBD><C3BB><EFBFBD>¼
VOID OnEventUserLogon(IServerUserItem * pIServerUserItem, bool bAlreadyOnLine);
//<2F>û<EFBFBD><C3BB>dz<EFBFBD>
VOID OnEventUserLogout(IServerUserItem * pIServerUserItem, DWORD dwLeaveReason);
//ִ<>й<EFBFBD><D0B9><EFBFBD>
protected:
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
bool PerformDistribute();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7>
bool PerformUnlockScore(DWORD dwUserID, DWORD dwInoutIndex, DWORD dwLeaveReason);
//<2F><EFBFBD><E6B1BE><EFBFBD><EFBFBD>
bool PerformCheckVersion(DWORD dwPlazaVersion, DWORD dwFrameVersion, DWORD dwClientVersion, DWORD dwSocketID);
//<2F>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>
bool SwitchUserItemConnect(IServerUserItem * pIServerUserItem, TCHAR szMachineID[LEN_MACHINE_ID], WORD wTargetIndex,BYTE cbDeviceType=DEVICE_TYPE_PC,WORD wBehaviorFlags=0,WORD wPageTableCount=0);
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
protected:
//<2F>û<EFBFBD><C3BB><EFBFBD>Ϣ
virtual bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, DWORD dwSocketID);
virtual bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, IServerUserItem * pISendToUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><>ǰ<EFBFBD>¼<EFBFBD>
bool OnEventPropertyBuyPrep(WORD cbRequestArea,WORD wPropertyIndex,IServerUserItem *pISourceUserItem,IServerUserItem *pTargetUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool SendPropertyMessage(DWORD dwSourceID,DWORD dwTargerID,WORD wPropertyIndex,WORD wPropertyCount);
//<2F><><EFBFBD><EFBFBD>ЧӦ
bool SendPropertyEffect(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><>¼ʧ<C2BC><CAA7>
bool SendLogonFailure(LPCTSTR pszString, LONG lErrorCode, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool SendInsureFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode,BYTE cbActivityGame);
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool SendRequestFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode);
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
bool SendPropertyFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode,WORD wRequestArea);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>
IServerUserItem * GetBindUserItem(WORD wBindIndex);
//<2F>󶨲<EFBFBD><F3B6A8B2><EFBFBD>
tagBindParameter * GetBindParameter(WORD wBindIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
WORD GetPropertyType(WORD wPropertyIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
//<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
bool InitAndroidUser();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool InitTableFrameArray();
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
bool InitMatchServiceManager();
//<2F><><EFBFBD><EFBFBD>˽<EFBFBD>˷<EFBFBD>
bool InitPrivateServiceManager();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool SendUIControlPacket(WORD wRequestID, VOID * pData, WORD wDataSize);
//<2F><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
void SetMobileUserParameter(IServerUserItem * pIServerUserItem,BYTE cbDeviceType,WORD wBehaviorFlags,WORD wPageTableCount);
//Ⱥ<><C8BA><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
bool SendUserInfoPacketBatchToMobileUser(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
bool SendViewTableUserInfoPacketToMobileUser(IServerUserItem * pIServerUserItem,DWORD dwUserIDReq);
//<2F>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
bool MobileUserImmediately(IServerUserItem * pIServerUserItem);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int OnPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID);
//<2F><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
bool SendSystemMessage(CMD_GR_SendMessage * pSendMessage, WORD wDataSize);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
void ClearSystemMessageData();
};
//////////////////////////////////////////////////////////////////////////////////
#endif