#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" ////////////////////////////////////////////////////////////////////////////////// //连接类型 #define CLIENT_KIND_FALSH 1 //网页类型 #define CLIENT_KIND_MOBILE 2 //手机类型 #define CLIENT_KIND_COMPUTER 3 //电脑类型 //绑定参数 struct tagBindParameter { //连接属性 DWORD dwSocketID; //网络标识 DWORD dwClientAddr; //连接地址 DWORD dwActiveTime; //激活时间 //版本信息 DWORD dwPlazaVersion; //广场版本 DWORD dwFrameVersion; //框架版本 DWORD dwProcessVersion; //进程版本 //用户属性 BYTE cbClientKind; //连接类型 IServerUserItem * pIServerUserItem; //用户接口 }; //系统消息 struct tagSystemMessage { DWORD dwLastTime; //发送时间 DBR_GR_SystemMessage SystemMessage; //系统消息 }; //数组说明 typedef CWHArray CTableFrameArray; //桌子数组 typedef CMap CKickUserItemMap; //踢人映射 typedef CList CSystemMessageList; //系统消息 ////////////////////////////////////////////////////////////////////////////////// //调度钩子 class CAttemperEngineSink : public IAttemperEngineSink, public IMainServiceFrame, public IServerUserItemSink { //友元定义 friend class CServiceUnits; //状态变量 protected: bool m_bCollectUser; //汇总标志 bool m_bNeekCorrespond; //协调标志 //控制变量 protected: DWORD m_dwIntervalTime; //间隔时间 DWORD m_dwLastDisposeTime; //处理时间 //绑定信息 protected: tagBindParameter * m_pNormalParameter; //绑定信息 tagBindParameter * m_pAndroidParameter; //绑定信息 //配置信息 protected: CInitParameter * m_pInitParameter; //配置参数 tagGameParameter * m_pGameParameter; //配置参数 tagGameMatchOption * m_pGameMatchOption; //比赛配置 tagGameServiceAttrib * m_pGameServiceAttrib; //服务属性 tagGameServiceOption * m_pGameServiceOption; //服务配置 //配置数据 protected: CMD_GR_ConfigColumn m_DataConfigColumn; //列表配置 CMD_GR_ConfigProperty m_DataConfigProperty; //道具配置 //组件变量 protected: CTableFrameArray m_TableFrameArray; //桌子数组 CServerListManager m_ServerListManager; //列表管理 CServerUserManager m_ServerUserManager; //用户管理 CAndroidUserManager m_AndroidUserManager; //机器管理 CGamePropertyManager m_GamePropertyManager; //道具管理 CDistributeManager m_DistributeManage; //分组管理 CKickUserItemMap m_KickUserItemMap; //踢人管理 CSystemMessageList m_SystemMessageList; //系统消息 CSensitiveWordsFilter m_WordsFilter; //脏字过滤 //组件接口 protected: ITimerEngine * m_pITimerEngine; //时间引擎 IAttemperEngine * m_pIAttemperEngine; //调度引擎 ITCPSocketService * m_pITCPSocketService; //网络服务 ITCPNetworkEngine * m_pITCPNetworkEngine; //网络引擎 IGameServiceManager * m_pIGameServiceManager; //服务管理 IGameServiceCustomTime * m_pIGameServiceSustomTime; //时间配置 //比赛服务 public: IMatchServiceManager* m_pIMatchServiceManager; //比赛管理接口 //比赛服务 public: IPrivateServiceManager* m_pIPrivateServiceManager; //私人场管理接口 //数据引擎 public: IDataBaseEngine * m_pIRecordDataBaseEngine; //数据引擎 IDataBaseEngine * m_pIKernelDataBaseEngine; //数据引擎 IDBCorrespondManager * m_pIDBCorrespondManager; //数据协调 //函数定义 public: //构造函数 CAttemperEngineSink(); //析构函数 virtual ~CAttemperEngineSink(); //基础接口 public: //释放对象 virtual VOID Release() { return; } //接口查询 virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer); //异步接口 public: //启动事件 virtual bool OnAttemperEngineStart(IUnknownEx * pIUnknownEx); //停止事件 virtual bool OnAttemperEngineConclude(IUnknownEx * pIUnknownEx); //事件接口 public: //控制事件 virtual bool OnEventControl(WORD wIdentifier, VOID * pData, WORD wDataSize); //自定事件 virtual bool OnEventAttemperData(WORD wRequestID, VOID * pData, WORD wDataSize); //内核事件 public: //时间事件 virtual bool OnEventTimer(DWORD dwTimerID, WPARAM wBindParam); //数据库事件 virtual bool OnEventDataBase(WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize); //连接事件 public: //连接事件 virtual bool OnEventTCPSocketLink(WORD wServiceID, INT nErrorCode); //关闭事件 virtual bool OnEventTCPSocketShut(WORD wServiceID, BYTE cbShutReason); //读取事件 virtual bool OnEventTCPSocketRead(WORD wServiceID, TCP_Command Command, VOID * pData, WORD wDataSize); //网络事件 public: //应答事件 virtual bool OnEventTCPNetworkBind(DWORD dwClientAddr, DWORD dwSocketID); //关闭事件 virtual bool OnEventTCPNetworkShut(DWORD dwClientAddr, DWORD dwActiveTime, DWORD dwSocketID); //读取事件 virtual bool OnEventTCPNetworkRead(TCP_Command Command, VOID * pData, WORD wDataSize, DWORD dwSocketID); //消息接口 public: //房间消息 virtual bool SendRoomMessage(LPCTSTR lpszMessage, WORD wType); //游戏消息 virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType); //房间消息 virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType); //游戏消息 virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType); //房间消息 virtual bool SendRoomMessage(DWORD dwSocketID, LPCTSTR lpszMessage, WORD wType, bool bAndroid); //网络接口 public: //发送数据 virtual bool SendData(BYTE cbSendMask, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //发送数据 virtual bool SendData(DWORD dwSocketID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //发送数据 virtual bool SendData(IServerUserItem * pIServerUserItem, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //群发数据 virtual bool SendDataBatchToMobileUser(WORD wCmdTable, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize); //功能接口 public: //插入用户 virtual bool InsertDistribute(IServerUserItem * pIServerUserItem); //删除用户 virtual bool DeleteDistribute(IServerUserItem * pIServerUserItem); //敏感词过滤 virtual void SensitiveWordFilter(LPCTSTR pMsg, LPTSTR pszFiltered, int nMaxLen); //解锁机器人 virtual VOID UnLockAndroidUser(WORD wServerID, WORD wBatchID); //用户接口 public: //用户积分 virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason); //用户状态 virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID=INVALID_TABLE, WORD wOldChairID=INVALID_CHAIR); //用户权限 virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight,bool bGameRight=true); //数据事件 protected: //登录成功 bool OnDBLogonSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize); //登录失败 bool OnDBLogonFailure(DWORD dwContextID, VOID * pData, WORD wDataSize); //配置信息 bool OnDBGameParameter(DWORD dwContextID, VOID * pData, WORD wDataSize); //列表信息 bool OnDBGameColumnInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //机器信息 bool OnDBGameAndroidInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //机器参数 bool OnDBGameAndroidParameter(DWORD dwContextID, VOID * pData, WORD wDataSize); //道具信息 bool OnDBGamePropertyInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //加载牌库 bool OnDBGameCardLibrary(DWORD dwContextID, VOID * pData, WORD wDataSize); //牌库配置; bool OnDBGameCardLibraryCfg(DWORD dwContextID, VOID * pData, WORD wDataSize); //银行信息 bool OnDBUserInsureInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //银行成功 bool OnDBUserInsureSuccess(DWORD dwContextID, VOID * pData, WORD wDataSize); //银行失败 bool OnDBUserInsureFailure(DWORD dwContextID, VOID * pData, WORD wDataSize); //用户信息 bool OnDBUserInsureUserInfo(DWORD dwContextID, VOID * pData, WORD wDataSize); //道具成功 bool OnDBPropertySuccess(DWORD dwContextID, VOID * pData, WORD wDataSize); //道具失败 bool OnDBPropertyFailure(DWORD dwContextID, VOID * pData, WORD wDataSize); //系统消息 bool OnDBSystemMessage(DWORD dwContextID, VOID * pData, WORD wDataSize); //加载敏感词 bool OnDBSensitiveWords(DWORD dwContextID, VOID * pData, WORD wDataSize); //连接处理 protected: //注册事件 bool OnTCPSocketMainRegister(WORD wSubCmdID, VOID * pData, WORD wDataSize); //列表事件 bool OnTCPSocketMainServiceInfo(WORD wSubCmdID, VOID * pData, WORD wDataSize); //汇总事件 bool OnTCPSocketMainUserCollect(WORD wSubCmdID, VOID * pData, WORD wDataSize); //管理服务 bool OnTCPSocketMainManagerService(WORD wSubCmdID, VOID * pData, WORD wDataSize); //网站网关 bool OnTCPSocketMainWebService(WORD wSubCmdID, VOID * pData, WORD wDataSize); //网络事件 protected: //用户处理 bool OnTCPNetworkMainUser(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //登录处理 bool OnTCPNetworkMainLogon(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //游戏处理 bool OnTCPNetworkMainGame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //框架处理 bool OnTCPNetworkMainFrame(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //银行处理 bool OnTCPNetworkMainInsure(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //管理处理 bool OnTCPNetworkMainManage(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //比赛命令 bool OnTCPNetworkMainMatch(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //私人场命令 bool OnTCPNetworkMainPrivate(WORD wSubCmdID, VOID * pData, WORD wDataSize, DWORD dwSocketID); //网络事件 protected: //I D 登录 bool OnTCPNetworkSubLogonUserID(VOID * pData, WORD wDataSize, DWORD dwSocketID); //手机登录 bool OnTCPNetworkSubLogonMobile(VOID * pData, WORD wDataSize, DWORD dwSocketID); //帐号登录 bool OnTCPNetworkSubLogonAccounts(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户命令 protected: //用户规则 bool OnTCPNetworkSubUserRule(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户旁观 bool OnTCPNetworkSubUserLookon(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户坐下 bool OnTCPNetworkSubUserSitDown(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户起立 bool OnTCPNetworkSubUserStandUp(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户聊天 bool OnTCPNetworkSubUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户私聊 bool OnTCPNetworkSubWisperChat(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户表情 bool OnTCPNetworkSubUserExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID); //用户表情 bool OnTCPNetworkSubWisperExpression(VOID * pData, WORD wDataSize, DWORD dwSocketID); //购买道具 bool OnTCPNetworkSubPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID); //使用道具 bool OnTCPNetwordSubSendTrumpet(VOID * pData, WORD wDataSize, DWORD dwSocketID); //邀请用户 bool OnTCPNetworkSubUserInviteReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //拒绝厌友 bool OnTCPNetworkSubUserRepulseSit(VOID * pData, WORD wDataSize, DWORD dwSocketID); //踢出命令 bool OnTCPNetworkSubMemberKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求用户信息 bool OnTCPNetworkSubUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求更换位置 bool OnTCPNetworkSubUserChairReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //请求椅子用户信息 bool OnTCPNetworkSubChairUserInfoReq(VOID * pData, WORD wDataSize, DWORD dwSocketID); //银行命令 protected: //查询银行 bool OnTCPNetworkSubQueryInsureInfo(VOID * pData, WORD wDataSize, DWORD dwSocketID); //存款请求 bool OnTCPNetworkSubSaveScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //取款请求 bool OnTCPNetworkSubTakeScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //转账请求 bool OnTCPNetworkSubTransferScoreRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //查询用户请求 bool OnTCPNetworkSubQueryUserInfoRequest(VOID * pData, WORD wDataSize, DWORD dwSocketID); //管理命令 protected: //查询设置 bool OnTCPNetworkSubQueryOption(VOID * pData, WORD wDataSize, DWORD dwSocketID); //房间设置 bool OnTCPNetworkSubOptionServer(VOID * pData, WORD wDataSize, DWORD dwSocketID); //踢出用户 bool OnTCPNetworkSubManagerKickUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //限制聊天 bool OnTCPNetworkSubLimitUserChat(VOID * pData, WORD wDataSize, DWORD dwSocketID); //踢出所有用户 bool OnTCPNetworkSubKickAllUser(VOID * pData, WORD wDataSize, DWORD dwSocketID); //发布消息 bool OnTCPNetworkSubSendMessage(VOID * pData, WORD wDataSize, DWORD dwSocketID); //解散游戏 bool OnTCPNetworkSubDismissGame(VOID * pData, WORD wDataSize, DWORD dwSocketID); //内部事件 protected: //用户登录 VOID OnEventUserLogon(IServerUserItem * pIServerUserItem, bool bAlreadyOnLine); //用户登出 VOID OnEventUserLogout(IServerUserItem * pIServerUserItem, DWORD dwLeaveReason); //执行功能 protected: //分配用户 bool PerformDistribute(); //解锁游戏币 bool PerformUnlockScore(DWORD dwUserID, DWORD dwInoutIndex, DWORD dwLeaveReason); //版本检查 bool PerformCheckVersion(DWORD dwPlazaVersion, DWORD dwFrameVersion, DWORD dwClientVersion, DWORD dwSocketID); //切换连接 bool SwitchUserItemConnect(IServerUserItem * pIServerUserItem, TCHAR szMachineID[LEN_MACHINE_ID], WORD wTargetIndex,BYTE cbDeviceType=DEVICE_TYPE_PC,WORD wBehaviorFlags=0,WORD wPageTableCount=0); //发送函数 protected: //用户信息 virtual bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, DWORD dwSocketID); virtual bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, IServerUserItem * pISendToUserItem); //辅助函数 protected: //购前事件 bool OnEventPropertyBuyPrep(WORD cbRequestArea,WORD wPropertyIndex,IServerUserItem *pISourceUserItem,IServerUserItem *pTargetUserItem); //道具消息 bool SendPropertyMessage(DWORD dwSourceID,DWORD dwTargerID,WORD wPropertyIndex,WORD wPropertyCount); //道具效应 bool SendPropertyEffect(IServerUserItem * pIServerUserItem); //辅助函数 protected: //登录失败 bool SendLogonFailure(LPCTSTR pszString, LONG lErrorCode, DWORD dwSocketID); //银行失败 bool SendInsureFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode,BYTE cbActivityGame); //请求失败 bool SendRequestFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode); //道具失败 bool SendPropertyFailure(IServerUserItem * pIServerUserItem, LPCTSTR pszDescribe, LONG lErrorCode,WORD wRequestArea); //辅助函数 public: //绑定用户 IServerUserItem * GetBindUserItem(WORD wBindIndex); //绑定参数 tagBindParameter * GetBindParameter(WORD wBindIndex); //道具类型 WORD GetPropertyType(WORD wPropertyIndex); //辅助函数 protected: //配置机器 bool InitAndroidUser(); //配置桌子 bool InitTableFrameArray(); //配置比赛 bool InitMatchServiceManager(); //配置私人房 bool InitPrivateServiceManager(); //发送请求 bool SendUIControlPacket(WORD wRequestID, VOID * pData, WORD wDataSize); //设置参数 void SetMobileUserParameter(IServerUserItem * pIServerUserItem,BYTE cbDeviceType,WORD wBehaviorFlags,WORD wPageTableCount); //群发用户信息 bool SendUserInfoPacketBatchToMobileUser(IServerUserItem * pIServerUserItem); //发可视用户信息 bool SendViewTableUserInfoPacketToMobileUser(IServerUserItem * pIServerUserItem,DWORD dwUserIDReq); //手机立即登录 bool MobileUserImmediately(IServerUserItem * pIServerUserItem); //购买道具 int OnPropertyBuy(VOID * pData, WORD wDataSize, DWORD dwSocketID); //发送系统消息 bool SendSystemMessage(CMD_GR_SendMessage * pSendMessage, WORD wDataSize); //清除消息数据 void ClearSystemMessageData(); }; ////////////////////////////////////////////////////////////////////////////////// #endif