#ifndef GAME_SERVICE_HEAD_HEAD_FILE #define GAME_SERVICE_HEAD_HEAD_FILE ////////////////////////////////////////////////////////////////////////////////// //MFC文件 #include //平台定义 #include "..\..\GlobalDef\Platform.h" //消息定义 #include "..\..\MessageDef\CMD_Commom.h" #include "..\..\MessageDef\CMD_Correspond.h" #include "..\..\MessageDef\CMD_GameServer.h" //平台文件 #include "..\..\SharedControl\ServiceCore\ServiceCoreHead.h" #include "..\..\ServerControl\KernelEngine\KernelEngineHead.h" #include ////////////////////////////////////////////////////////////////////////////////// //导出定义 //导出定义 #ifndef GAME_SERVICE_CLASS #ifdef GAME_SERVICE_DLL #define GAME_SERVICE_CLASS _declspec(dllexport) #else #define GAME_SERVICE_CLASS _declspec(dllimport) #endif #endif //模块定义 #ifndef _DEBUG #define GAME_SERVICE_DLL_NAME TEXT("GameService.dll") //组件 DLL 名字 #else #define GAME_SERVICE_DLL_NAME TEXT("GameServiceD.dll") //组件 DLL 名字 #endif ////////////////////////////////////////////////////////////////////////////////// //接口说明 //用户接口 interface IServerUserItem; interface IServerUserManager; interface IServerUserItemSink; //代打接口 interface IAndroidUserItem; interface IAndroidUserManager; interface IAndroidUserItemSink; //桌子接口 interface ITableFrame; interface ITableFrameSink; interface ITableUserAction; //服务接口 interface IMainServiceFrame; interface IGameServiceManager; interface IGameServiceCustomRule; ////////////////////////////////////////////////////////////////////////////////// //常量定义 //群发掩码 #define BG_MOBILE (BYTE)(0x01) //手机群发 #define BG_COMPUTER (BYTE)(0x02) //电脑群发 #define BG_ALL_CLIENT (BYTE)(0xFF) //全体群发 //索引定义 #define INDEX_SOCKET (WORD)(0x0000) //网络索引 #define INDEX_ANDROID (WORD)(0x2000) //机器索引 //创建函数 #define GAME_SERVICE_CREATE_NAME "CreateGameServiceManager" //创建函数 ////////////////////////////////////////////////////////////////////////////////// //常量定义 //机器动作 #define ANDROID_WAITSTANDUP 0x01 //等待起立 #define ANDROID_WAITLEAVE 0x02 //等待离开 //结束原因 #define GER_NORMAL 0x00 //常规结束 #define GER_DISMISS 0x01 //游戏解散 #define GER_USER_LEAVE 0x02 //用户离开 #define GER_NETWORK_ERROR 0x03 //网络错误 #define GER_DELETE_PRIVATE 0x04 //游戏删除 #define GER_DELETE_GET 0x05 //请求解散 //离开原因 #define LER_NORMAL 0x00 //常规离开 #define LER_SYSTEM 0x01 //系统原因 #define LER_NETWORK 0x02 //网络原因 #define LER_USER_IMPACT 0x03 //用户冲突 #define LER_SERVER_FULL 0x04 //人满为患 #define LER_SERVER_CONDITIONS 0x05 //条件限制 //积分类型 #define SCORE_TYPE_NULL 0x00 //无效积分 #define SCORE_TYPE_WIN 0x01 //胜局积分 #define SCORE_TYPE_LOSE 0x02 //输局积分 #define SCORE_TYPE_DRAW 0x03 //和局积分 #define SCORE_TYPE_FLEE 0x04 //逃局积分 #define SCORE_TYPE_PRESENT 0x10 //赠送积分 #define SCORE_TYPE_SERVICE 0x11 //服务积分 #define SCORE_TYPE_START 0x12 //开始记录积分 #define SCORE_TYPE_END 0x13 //结束记录积分 //开始模式 #define START_MODE_ALL_READY 0x00 //所有准备 #define START_MODE_FULL_READY 0x01 //满人开始 #define START_MODE_PAIR_READY 0x02 //配对开始 #define START_MODE_TIME_CONTROL 0x10 //时间控制 #define START_MODE_MASTER_CONTROL 0x11 //管理控制 //分组选项 #define DISTRIBUTE_ALLOW 0x01 //允许分组 #define DISTRIBUTE_IMMEDIATE 0x02 //入座选项 #define DISTRIBUTE_LAST_TABLE 0x04 //同桌选项 #define DISTRIBUTE_SAME_ADDRESS 0x08 //地址选项 ////////////////////////////////////////////////////////////////////////////////// //时间标识 //调度范围 #define IDI_MAIN_MODULE_START 1 //起始标识 #define IDI_MAIN_MODULE_FINISH 100000 //终止标识 //机器范围 #define IDI_REBOT_MODULE_START 100001 //起始标识 #define IDI_REBOT_MODULE_FINISH 200000 //终止标识 //比赛范围 #define IDI_MATCH_MODULE_START 200001 //起始标识 #define IDI_MATCH_MODULE_FINISH 300000 //结束标识 //桌子范围 #define IDI_TABLE_MODULE_START 1000000 //起始标识 #define IDI_TABLE_MODULE_FINISH 327675000 //终止标识 ///---在原值(32767500)的基础上加大10倍 //DWORD=0xFFFFFFFF=?4294967295? ////////////////////////////////////////////////////////////////////////////////// //时间范围 //游戏时间 #define TIME_TABLE_SINK_RANGE 20 //标识范围 #define TIME_TABLE_KERNEL_RANGE 30 //标识范围 #define TIME_TABLE_MODULE_RANGE 500 //标识范围 ////////////////////////////////////////////////////////////////////////////////// //常量定义 #define SCORE_RELIEF_VALUE 1000 ///+++用户金币破产阀值 //常量定义 #define RESERVE_USER_COUNT 0L //保留数目 ////////////////////////////////////////////////////////////////////////////////// //结构定义 struct MyStructParameterEx { TCHAR szgameTypeCfg[256]; TCHAR diJinCfg[256]; TCHAR payTypeCfg[256]; TCHAR juShuCfg[256]; TCHAR payCoinCfg[256]; TCHAR ipLimitCfg[256]; TCHAR defaultDeskCfg[256]; int idNum; //int IsFreePay;//用来表示这个玩法群主开发支付是否免费 }; //配置参数 struct tagGameParameter { //汇率信息 WORD wMedalRate; //奖牌汇率 WORD wRevenueRate; //银行税收 WORD wExchangeRate; //兑换比率 //经验奖励 DWORD dwWinExperience; //赢局经验 //版本信息 DWORD dwClientVersion; //客户版本 DWORD dwServerVersion; //服务版本 MyStructParameterEx msParameter[4]; // // }; //服务属性 struct tagGameServiceAttrib { //内核属性 WORD wKindID; //名称号码 WORD wChairCount; //椅子数目 WORD wSupporType; //支持类型 TCHAR szGameName[LEN_KIND]; //游戏名字 //功能标志 BYTE cbAndroidUser; //机器标志 BYTE cbDynamicJoin; //动态加入 BYTE cbOffLineTrustee; //断线代打 //服务属性 DWORD dwServerVersion; //游戏版本 DWORD dwClientVersion; //游戏版本 TCHAR szDataBaseName[32]; //游戏库名 TCHAR szServerDLLName[LEN_PROCESS]; //进程名字 TCHAR szClientEXEName[LEN_PROCESS]; //进程名字 }; //服务配置 struct tagGameServiceOption { //挂接属性 WORD wKindID; //挂接类型 WORD wNodeID; //挂接节点 WORD wSortID; //排列标识 WORD wServerID; //房间标识 //税收配置 LONG lCellScore; //单位积分 WORD wRevenueRatio; //税收比例 SCORE lServiceScore; //服务费用 //房间配置 SCORE lRestrictScore; //限制积分 SCORE lMinTableScore; //最低积分 SCORE lMinEnterScore; //最低积分 SCORE lMaxEnterScore; //最高积分 //会员限制 BYTE cbMinEnterMember; //最低会员 BYTE cbMaxEnterMember; //最高会员 //房间配置 DWORD dwServerRule; //房间规则 DWORD dwAttachUserRight; //附加权限 //房间属性 WORD wMaxPlayer; //最大数目 WORD wTableCount; //桌子数目 WORD wServerPort; //服务端口 WORD wServerKind; //房间类别 WORD wServerType; //房间类型 TCHAR szServerName[LEN_SERVER]; //房间名称 TCHAR szServerPasswd[LEN_PASSWORD]; //房间密码 //分组设置 BYTE cbDistributeRule; //分组规则 WORD wMinDistributeUser; //最少人数 WORD wDistributeTimeSpace; //分组间隔 WORD wDistributeDrawCount; //分组局数 WORD wMinPartakeGameUser; //最少人数 WORD wMaxPartakeGameUser; //最多人数 //连接设置 TCHAR szDataBaseAddr[16]; //连接地址 TCHAR szDataBaseName[32]; //数据库名 //自定规则 BYTE cbCustomRule[1024]; //自定规则 ///+++金币场 TCHAR szExtConfig[512]; //扩展配置(玩法配置) TCHAR szMinClientVer[LEN_SERVER]; //客户端版本要求 WORD wGameID; //模块标识 }; //比赛配置 struct tagGameMatchOption { //基本信息 DWORD dwMatchID; //比赛标识 DWORD dwMatchNO; //比赛场次 BYTE cbMatchType; //比赛类型 TCHAR szMatchName[32]; //比赛名称 //比赛信息 SCORE lMatchFee; //比赛费用 BYTE cbMatchFeeType; //扣费类型 BYTE cbMemberOrder; //会员等级 //类型信息 union unGameMatchType { //定时赛 struct tagLockTimeMatch { //时间配置 SYSTEMTIME MatchStartTime; //开始日期 SYSTEMTIME MatchEndTime; //结束日期 //比赛分数 SCORE lMatchInitScore; //初始积分 SCORE lMatchCullScore; //淘汰积分 //比赛局数 WORD wMatchPlayCount; //最少局数 } LockTime; //即时赛 struct tagImmediateMatch { //人数信息 WORD wStartUserCount; //开赛人数 WORD wAndroidUserCount; //机器数量 //分数信息 DWORD dwInitalBase; //初始基数 DWORD dwInitalScore; //初始积分=0时 代表使用当前金币为比赛 WORD wMinEnterGold; //初始积分=0时 必须多少倍金币才有报名条件 //局数信息 BYTE cbPlayCount; //游戏局数 BYTE cbSwitchTableCount; //换桌局数(0为不换桌) WORD wPrecedeTimer; //优先坐下 } Immediate; } MatchType; //奖励信息 WORD wRewardCount; //奖励人数 //游戏介绍 TCHAR szMatchAwardContent[128]; //奖励内容 TCHAR szMatchContent[512]; //比赛内容 }; //桌子参数 struct tagTableFrameParameter { //内核组件 ITimerEngine * pITimerEngine; //时间引擎 IDataBaseEngine * pIRecordDataBaseEngine; //数据引擎 IDataBaseEngine * pIKernelDataBaseEngine; //数据引擎 //服务组件 IMainServiceFrame * pIMainServiceFrame; //服务框架 IAndroidUserManager * pIAndroidUserManager; //机器管理 IGameServiceManager * pIGameServiceManager; //服务管理 //配置变量 tagGameParameter * pGameParameter; //配置参数 tagGameServiceAttrib * pGameServiceAttrib; //桌子属性 tagGameServiceOption * pGameServiceOption; //配置参数 }; //机器参数 struct tagAndroidUserParameter { //服务配置 bool bServiceContinue; //服务延续 DWORD dwMinSitInterval; //坐下间隔 DWORD dwMaxSitInterval; //坐下间隔 //配置变量 tagGameParameter * pGameParameter; //配置参数 tagGameServiceAttrib * pGameServiceAttrib; //桌子属性 tagGameServiceOption * pGameServiceOption; //配置参数 //内核组件 ITimerEngine * pITimerEngine; //时间引擎 IServerUserManager * pIServerUserManager; //用户管理 IGameServiceManager * pIGameServiceManager; //服务管理 ITCPNetworkEngineEvent * pITCPNetworkEngineEvent; //事件接口 }; ////////////////////////////////////////////////////////////////////////////////// //辅助结构 struct tagTableRecordInfo { tagTableRecordInfo() { dwGameMemal = INVALID_DWORD; dwPlayGameTime = INVALID_DWORD; wRecordSize = 0; pReplayRecord = NULL; } DWORD dwGameMemal; DWORD dwPlayGameTime; WORD wRecordSize; void* pReplayRecord; }; //积分信息 struct tagScoreInfo { BYTE cbType; //积分类型 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SCORE lRevenue; //游戏税收 }; //变更信息 struct tagVariationInfo { //积分信息 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SCORE lInsure; //用户银行 SCORE lRevenue; //游戏税收 //游戏信息 DWORD dwWinCount; //胜利盘数 DWORD dwLostCount; //失败盘数 DWORD dwDrawCount; //和局盘数 DWORD dwFleeCount; //逃跑盘数 DWORD dwPlayTimeCount; //游戏时长 //全局信息 SCORE lIngot; //用户元宝 DWORD dwExperience; //用户经验 LONG lLoveLiness; //用户魅力 }; //游戏记录 struct tagGameScoreRecord { //用户信息 DWORD dwUserID; //用户标识 TCHAR szUserName[LEN_NICKNAME]; //用户昵称 WORD wChairID; //椅子号码 BYTE cbAndroid; //机器标志 //成绩信息 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SCORE lRevenue; //游戏税收 //用户信息 DWORD dwDBQuestID; //请求标识 DWORD dwInoutIndex; //记录索引 //附加信息 DWORD dwUserMemal; //奖牌数目(癞子杠数)(胡牌方式) DWORD dwPlayTimeCount; //游戏时长 TCHAR szHeadImg[256]; //头像 }; //用户规则 struct tagUserRule { //规则标志 bool bLimitSameIP; //效验地址 bool bLimitWinRate; //限制胜率 bool bLimitFleeRate; //限制逃率 bool bLimitGameScore; //限制分数 //规则属性 WORD wMinWinRate; //最低胜率 WORD wMaxFleeRate; //最高逃率 LONG lMaxGameScore; //最高分数 LONG lMinGameScore; //最低分数 TCHAR szPassword[LEN_PASSWORD]; //桌子密码 }; //任务入口 struct tagUserTaskInfo { WORD wTaskID; //任务标识 BYTE cbTaskStatus; //任务状态 WORD wTaskProgress; //任务进度 DWORD dwResidueTime; //剩余时间 DWORD dwLastUpdateTime; //更新时间 }; //任务入口 struct tagUserTaskEntry { BYTE cbTaskStatus; //任务状态 WORD wTaskProgress; //任务进度 DWORD dwResidueTime; //剩余时间 DWORD dwLastUpdateTime; //更新时间 tagTaskParameter * pTaskParameter; //任务参数 tagUserTaskEntry * pNextTaskEntry; //下一任务 tagUserTaskEntry * pNextStatusEntry; //下一任务 }; //用户信息 struct tagUserInfoPlus { //登录信息 DWORD dwLogonTime; //登录时间 DWORD dwInoutIndex; //进出标识 //连接信息 WORD wBindIndex; //绑定索引 DWORD dwClientAddr; //连接地址 TCHAR szMachineID[LEN_MACHINE_ID]; //机器标识 //附加变量 DWORD dwUserRight; //用户权限 DWORD dwMasterRight; //管理权限 SCORE lRestrictScore; //限制积分 //辅助变量 bool bMobileUser; //手机用户 bool bAndroidUser; //机器用户 TCHAR szPassword[LEN_MD5]; //桌子密码 }; //请求结果 struct tagRequestResult { BYTE cbFailureCode; //失败原因 TCHAR szFailureReason[128]; //失败原因 }; //桌子状况 struct tagTableUserInfo { WORD wMinUserCount; //最少人数 WORD wTableUserCount; //用户数目 WORD wTableReadyCount; //准备数目 WORD wTableAndroidCount; //机器数目 }; //机器状况 struct tagAndroidUserInfo { WORD wFreeUserCount; //用户数目 WORD wPlayUserCount; //用户数目 WORD wSitdownUserCount; //用户数目 IAndroidUserItem * pIAndroidUserFree[MAX_ANDROID]; //机器接口 IAndroidUserItem * pIAndroidUserPlay[MAX_ANDROID]; //机器接口 IAndroidUserItem * pIAndroidUserSitdown[MAX_ANDROID]; //机器接口 }; //服务信息 struct tagAndroidService { DWORD dwSwitchTableInnings; //游戏局数 }; //帐号信息 struct tagAndroidAccountsInfo { DWORD dwUserID; //机器标识 TCHAR szPassword[LEN_PASSWORD]; //机器密码 }; //机器配置 struct tagAndroidItemConfig { tagAndroidAccountsInfo AndroidAccountsInfo; //帐号信息 tagAndroidParameter * pAndroidParameter; //机器参数 }; //比赛状态 enum EN_MatchStatus { EN_NULL = 0, EN_OUT, }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IGameServiceManager INTERFACE_VERSION(1,1) static const GUID IID_IGameServiceManager = { 0xa975cceb, 0x0331, 0x4553, 0xa1, 0xe0, 0xa7, 0xc7, 0x7a, 0x7c, 0x4e, 0xfd }; #else #define VER_IGameServiceManager INTERFACE_VERSION(1,1) static const GUID IID_IGameServiceManager = { 0x4b2b9d8f, 0xce1b, 0x44f3, 0xa5, 0x22, 0x65, 0x1a, 0x65, 0xc9, 0x0a, 0x25 }; #endif //游戏接口 interface IGameServiceManager : public IUnknownEx { //创建接口 public: //创建桌子 virtual VOID * CreateTableFrameSink(REFGUID Guid, DWORD dwQueryVer) = NULL; //创建机器 virtual VOID * CreateAndroidUserItemSink(REFGUID Guid, DWORD dwQueryVer) = NULL; //创建数据 virtual VOID * CreateGameDataBaseEngineSink(REFGUID Guid, DWORD dwQueryVer) = NULL; //参数接口 public: //组件属性 virtual bool GetServiceAttrib(tagGameServiceAttrib & GameServiceAttrib) = NULL; //调整参数 virtual bool RectifyParameter(tagGameServiceOption & GameServiceOption) = NULL; //设置子游戏协议解析地址 virtual PVOID GetDataString() = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IGameServiceCustomRule INTERFACE_VERSION(1,1) static const GUID IID_IGameServiceCustomRule = { 0x74a43b7d, 0x7c29, 0x4fb8, 0xa5, 0x00, 0x8e, 0x8d, 0xff, 0x6e, 0x2a, 0xdd }; #else #define VER_IGameServiceCustomRule INTERFACE_VERSION(1,1) static const GUID IID_IGameServiceCustomRule = { 0xc7ace01d, 0x75f8, 0x4af7, 0xb1, 0x80, 0xa8, 0x53, 0xcd, 0x2e, 0x0a, 0xb6 }; #endif //配置接口 interface IGameServiceCustomRule : public IUnknownEx { //获取配置 virtual bool SaveCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize) = NULL; //默认配置 virtual bool DefaultCustomRule(LPBYTE pcbCustomRule, WORD wCustonSize) = NULL; //创建窗口 virtual HWND CreateCustomRule(CWnd * pParentWnd, CRect rcCreate, LPBYTE pcbCustomRule, WORD wCustonSize) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IGameDataBaseEngine INTERFACE_VERSION(1,1) static const GUID IID_IGameDataBaseEngine = { 0x47dcd531, 0x2a19, 0x4c0a, 0x89, 0xb6, 0x9f, 0xd8, 0xe0, 0xa7, 0x85, 0xee }; #else #define VER_IGameDataBaseEngine INTERFACE_VERSION(1,1) static const GUID IID_IGameDataBaseEngine = { 0x4310e733, 0xc49b, 0x4592, 0xa3, 0xb1, 0x73, 0x18, 0xd1, 0x53, 0x2f, 0x3e }; #endif //游戏数据 interface IGameDataBaseEngine : public IUnknownEx { //配置参数 public: //自定配置 virtual VOID * GetCustomRule() = NULL; //服务属性 virtual tagGameServiceAttrib * GetGameServiceAttrib() = NULL; //服务配置 virtual tagGameServiceOption * GetGameServiceOption() = NULL; //获取对象 public: //获取对象 virtual VOID * GetDataBase(REFGUID Guid, DWORD dwQueryVer) = NULL; //获取对象 virtual VOID * GetDataBaseEngine(REFGUID Guid, DWORD dwQueryVer) = NULL; //功能接口 public: //投递结果 virtual bool PostGameDataBaseResult(WORD wRequestID, VOID * pData, WORD wDataSize) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IGameDataBaseEngineSink INTERFACE_VERSION(1,1) static const GUID IID_IGameDataBaseEngineSink = { 0x9b9111d9, 0x7a71, 0x41a1, 0xae, 0x78, 0xd4, 0xf3, 0x20, 0x08, 0x24, 0xdf }; #else #define VER_IGameDataBaseEngineSink INTERFACE_VERSION(1,1) static const GUID IID_IGameDataBaseEngineSink = { 0xa6c5e2cc, 0x34c1, 0x422c, 0xa0, 0x1b, 0x54, 0xab, 0x68, 0xfa, 0xe6, 0x81 }; #endif //数据接口 interface IGameDataBaseEngineSink : public IUnknownEx { //配置接口 virtual bool InitializeSink(IUnknownEx * pIUnknownEx) = NULL; //数据处理 virtual bool OnGameDataBaseRequest(DWORD dwUserID, WORD wTableID, WORD wChairID); }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IServerUserItem INTERFACE_VERSION(1,1) static const GUID IID_IServerUserItem = { 0xcd43dce8, 0x1e12, 0x43be, 0x8b, 0x4f, 0x94, 0x95, 0x92, 0xa4, 0xf6, 0x19 }; #else #define VER_IServerUserItem INTERFACE_VERSION(1,1) static const GUID IID_IServerUserItem = { 0xb5ce01a7, 0x5cd1, 0x4788, 0x94, 0x6c, 0xa1, 0xef, 0x5b, 0x30, 0x2c, 0xb7 }; #endif //用户接口 interface IServerUserItem : public IUnknownEx { //属性信息 public: //用户索引 virtual WORD GetBindIndex() = NULL; //用户地址 virtual DWORD GetClientAddr() = NULL; //机器标识 virtual LPCTSTR GetMachineID() = NULL; //登录信息 public: //请求标识 virtual DWORD GetDBQuestID() = NULL; //登录时间 virtual DWORD GetLogonTime() = NULL; //记录索引 virtual DWORD GetInoutIndex() = NULL; //用户信息 public: //用户信息 virtual tagUserInfo * GetUserInfo() = NULL; //用户规则 virtual tagUserRule * GetUserRule() = NULL; //道具信息 virtual tagUserProperty * GetUserProperty() = NULL; //时间信息 virtual tagTimeInfo * GetTimeInfo() = NULL; //属性信息 public: //用户性别 virtual BYTE GetGender() = NULL; //用户标识 virtual DWORD GetUserID() = NULL; //游戏标识 virtual DWORD GetGameID() = NULL; //用户昵称 virtual LPCTSTR GetNickName() = NULL; //状态接口 public: //桌子号码 virtual WORD GetTableID() = NULL; //桌子号码 virtual WORD GetLastTableID() = NULL; //椅子号码 virtual WORD GetChairID() = NULL; //设置椅子 virtual VOID SetChairID(WORD chairID) = NULL; //用户状态 virtual BYTE GetUserStatus() = NULL; //权限信息 public: //用户权限 virtual DWORD GetUserRight() = NULL; //管理权限 virtual DWORD GetMasterRight() = NULL; //权限信息 public: //用户权限 virtual BYTE GetMemberOrder() = NULL; //管理权限 virtual BYTE GetMasterOrder() = NULL; //积分信息 public: //用户积分 virtual SCORE GetUserScore() = NULL; //用户成绩 virtual SCORE GetUserGrade() = NULL; //用户银行 virtual SCORE GetUserInsure() = NULL; //托管信息 public: //托管积分 virtual SCORE GetTrusteeScore() = NULL; //锁定积分 virtual SCORE GetFrozenedScore() = NULL; //积分信息 public: //用户胜率 virtual WORD GetUserWinRate() = NULL; //用户输率 virtual WORD GetUserLostRate() = NULL; //用户和率 virtual WORD GetUserDrawRate() = NULL; //用户逃率 virtual WORD GetUserFleeRate() = NULL; //游戏局数 virtual DWORD GetUserPlayCount() = NULL; //效验接口 public: //对比帐号 virtual bool ContrastNickName(LPCTSTR pszNickName) = NULL; //对比密码 virtual bool ContrastLogonPass(LPCTSTR pszPassword) = NULL; //托管状态 public: //判断状态 virtual bool IsTrusteeUser() = NULL; //设置状态 virtual VOID SetTrusteeUser(bool bTrusteeUser) = NULL; //游戏状态 public: //连接状态 virtual bool IsClientReady() = NULL; //设置连接 virtual VOID SetClientReady(bool bClientReady) = NULL; //手机用户 public: //控制状态 virtual bool IsMobileUser() = NULL; //设置控制 virtual VOID SetMobileUser(bool bMobileUser) = NULL; //控制用户 public: //控制状态 virtual bool IsAndroidUser() = NULL; //设置控制 virtual VOID SetAndroidUser(bool bbMachineUser) = NULL; //比赛接口 public: //报名数据 virtual VOID * GetMatchData() = NULL; //报名数据 virtual VOID SetMatchData(VOID * pMatchData) = NULL; //报名时间 virtual DWORD GetSignUpTime() = NULL; //报名时间 virtual VOID SetSignUpTime(DWORD dwSignUpTime) = NULL; //报名状态 virtual BYTE GetSignUpStatus() = NULL; //报名状态 virtual VOID SetSignUpStatus(BYTE cbSignUpStatus) = NULL; //记录接口 public: //变更判断 virtual bool IsVariation() = NULL; //查询记录 virtual bool QueryRecordInfo(tagVariationInfo & UserRecordInfo) = NULL; //提取变更 virtual bool DistillVariation(tagVariationInfo & UserVariationInfo) = NULL; //管理接口 public: //设置状态 virtual bool SetUserStatus(BYTE cbUserStatus, WORD wTableID, WORD wChairID, bool bSendState = false) = NULL; //写入积分 virtual bool WriteUserScore(SCORE lScore, SCORE lGrade, SCORE lRevenue, SCORE lIngot, BYTE cbScoreType, DWORD dwPlayTimeCount, DWORD dwWinExperience) = NULL; //修改权限 virtual VOID ModifyUserRight(DWORD dwAddRight, DWORD dwRemoveRight, BYTE cbRightKind = UR_KIND_GAME) = NULL; //冻结接口 public: //冻结积分 virtual bool FrozenedUserScore(SCORE lScore) = NULL; //解冻积分 virtual bool UnFrozenedUserScore(SCORE lScore) = NULL; //修改接口 public: //修改信息 virtual bool ModifyUserProperty(SCORE lScore, LONG lLoveLiness) = NULL; //高级接口 public: //解除绑定 virtual bool DetachBindStatus() = NULL; //银行操作 virtual bool ModifyUserInsure(SCORE lScore, SCORE lInsure, SCORE lRevenue) = NULL; //设置参数 virtual bool SetUserParameter(DWORD dwClientAddr, WORD wBindIndex, TCHAR szMachineID[LEN_MACHINE_ID], bool bAndroidUser, bool bClientReady) = NULL; //手机定义 public: //手机规则 virtual WORD GetMobileUserRule() = NULL; //设置定义 virtual VOID SetMobileUserRule(WORD wMobileUserRule) = NULL; //当前分页 virtual WORD GetMobileUserDeskPos() = NULL; //当前分页 virtual VOID SetMobileUserDeskPos(WORD wMobileUserDeskPos) = NULL; //分页桌数 virtual WORD GetMobileUserDeskCount() = NULL; //分页桌数 virtual VOID SetMobileUserDeskCount(WORD wMobileUserDeskCount) = NULL; //机器类型 virtual WORD GetMobileUserMachineType() = NULL; //机器类型 virtual VOID SetMobileUserMachineType(WORD machineType) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IServerUserService INTERFACE_VERSION(1,1) static const GUID IID_IServerUserService = { 0x2f4e25a9, 0xad87, 0x4a37, 0x98, 0x96, 0x5c, 0x50, 0xf9, 0x91, 0x05, 0x31 }; #else #define VER_IServerUserService INTERFACE_VERSION(1,1) static const GUID IID_IServerUserService = { 0xcc4e885f, 0x3357, 0x4d68, 0xb2, 0x6b, 0x78, 0x8f, 0x4b, 0x3e, 0x64, 0xc3 }; #endif //用户服务 interface IServerUserService : public IUnknownEx { }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IServerUserItemSink INTERFACE_VERSION(1,1) static const GUID IID_IServerUserItemSink = { 0x415be3e4, 0xd48d, 0x4a77, 0x94, 0xb7, 0xd1, 0x05, 0xcd, 0xa3, 0x82, 0x81 }; #else #define VER_IServerUserItemSink INTERFACE_VERSION(1,1) static const GUID IID_IServerUserItemSink = { 0x9d0cfe02, 0x0fe9, 0x4a8b, 0x97, 0x95, 0xac, 0x32, 0x67, 0x5a, 0xf8, 0xb1 }; #endif //状态接口 interface IServerUserItemSink : public IUnknownEx { //用户积分 virtual bool OnEventUserItemScore(IServerUserItem * pIServerUserItem, BYTE cbReason) = NULL; //用户状态 virtual bool OnEventUserItemStatus(IServerUserItem * pIServerUserItem, WORD wOldTableID = INVALID_TABLE, WORD wOldChairID = INVALID_CHAIR, bool bSendState = false) = NULL; //用户权限 virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight, BYTE cbRightKind) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IServerUserManager INTERFACE_VERSION(1,1) static const GUID IID_IServerUserManager = { 0xeb413ed6, 0x185b, 0x4ceb, 0xa8, 0xbd, 0x54, 0x74, 0x19, 0x89, 0x6a, 0x53 }; #else #define VER_IServerUserManager INTERFACE_VERSION(1,1) static const GUID IID_IServerUserManager = { 0x77a3c4df, 0x1d95, 0x48c6, 0xac, 0x9d, 0x75, 0xd7, 0x6c, 0x2a, 0x3c, 0x0e }; #endif //用户管理 interface IServerUserManager : public IUnknownEx { //配置接口 public: //设置接口 virtual bool SetServerUserItemSink(IUnknownEx * pIUnknownEx) = NULL; //查找接口 public: //枚举用户 virtual IServerUserItem * EnumUserItem(WORD wEnumIndex) = NULL; //查找用户 virtual IServerUserItem * SearchUserItem(DWORD dwUserID) = NULL; //查找用户 virtual IServerUserItem * SearchUserItem(LPCTSTR pszNickName) = NULL; //统计接口 public: //机器人数 virtual DWORD GetAndroidCount() = NULL; //在线人数 virtual DWORD GetUserItemCount() = NULL; //管理接口 public: //删除用户 virtual bool DeleteUserItem() = NULL; //删除用户 virtual bool DeleteUserItem(IServerUserItem * pIServerUserItem) = NULL; //插入用户 virtual bool InsertUserItem(IServerUserItem * * pIServerUserResult, tagUserInfo & UserInfo, tagUserInfoPlus & UserInfoPlus) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_ITableFrame INTERFACE_VERSION(1,1) static const GUID IID_ITableFrame = { 0x2e577d5f, 0x1e01, 0x44ff, 0x9f, 0xf4, 0x01, 0x16, 0x23, 0x1b, 0x76, 0x15 }; #else #define VER_ITableFrame INTERFACE_VERSION(1,1) static const GUID IID_ITableFrame = { 0x860cd1cf, 0x1a4f, 0x4e35, 0xb8, 0x0c, 0xd2, 0x46, 0xa4, 0xef, 0xfd, 0xfb }; #endif //桌子接口 interface ITableFrame : public IUnknownEx { //属性接口 public: //++交换座位 virtual bool SwapChair() = NULL; virtual bool GetPrivateTableID(TCHAR *pTableID, DWORD dLen) = NULL; //桌子号码 virtual WORD GetTableID() = NULL; //游戏人数 virtual WORD GetChairCount() = NULL; //修改最大人数 virtual VOID SetChairCount(WORD wNewChairCount) = NULL; //空位置数目 virtual WORD GetNullChairCount() = NULL; //配置参数 public: //自定配置 virtual VOID * GetCustomRule() = NULL; //服务属性 virtual tagGameServiceAttrib * GetGameServiceAttrib() = NULL; //服务配置 virtual tagGameServiceOption * GetGameServiceOption() = NULL; //配置接口 public: //开始模式 virtual BYTE GetStartMode() = NULL; //开始模式 virtual VOID SetStartMode(BYTE cbStartMode) = NULL; //单元积分 public: //单元积分 virtual LONG GetCellScore() = NULL; //单元积分 virtual VOID SetCellScore(LONG lCellScore) = NULL; //信息接口 public: //锁定状态 virtual bool IsTableLocked() = NULL; //游戏状态 virtual bool IsGameStarted() = NULL; //游戏状态 virtual bool IsDrawStarted() = NULL; //游戏状态 virtual bool IsTableStarted() = NULL; //状态接口 public: //获取状态 virtual BYTE GetGameStatus() = NULL; //设置状态 virtual VOID SetGameStatus(BYTE bGameStatus) = NULL; //控制接口 public: //开始游戏 virtual bool StartGame() = NULL; //解散游戏 virtual bool DismissGame() = NULL; //结束游戏 virtual bool ConcludeGame(BYTE cbGameStatus, bool bSendState = false) = NULL; //房主在未开始游戏前,请求解散牌桌 virtual bool SetTableFree() = NULL; virtual bool DeletePrivateTableNow() = NULL; virtual DWORD GetPrivateTableOwnerID() = NULL; //此局一共需要多少元宝 virtual USHORT GetNeedPay() = NULL; //直接扣除房卡 virtual bool NowReduceBeans(DWORD dwUserID, UINT32 dwConsumeCurrency) = NULL; //消耗元宝 virtual bool ReduceBeans(DWORD dwUserID, UINT32 dwConsumeCurrency) = NULL; //锁定元宝 virtual bool LockBeans(DWORD dwUserID, UINT32 dwConsumeCurrency) = NULL; //解锁元宝 virtual bool UnLockBeans(DWORD dwUserID, UINT32 dwConsumeCurrency) = NULL; //在桌子解散的情况下,按照约定处理房间创建者需要解锁的元宝 virtual void UnAdminLockBeans() = NULL; //获取开始次数 virtual WORD GetStartCount() = NULL; //获取创建者的连接 virtual IServerUserItem* GetPrivateTableCreator() = NULL; //保存回放记录 virtual bool SaveReplayRecord(void* pData, WORD wDataSize) = NULL; //写分接口 public: //写入积分 virtual bool WriteUserScore(WORD wChairID, tagScoreInfo & ScoreInfo, DWORD dwGameMemal = INVALID_DWORD, DWORD dwPlayGameTime = INVALID_DWORD) = NULL; //写入积分 virtual bool WriteTableScore(tagScoreInfo ScoreInfoArray[], WORD wScoreCount) = NULL; //计算接口 public: //计算税收 virtual SCORE CalculateRevenue(WORD wChairID, SCORE lScore) = NULL; //消费限额 virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem) = NULL; //用户接口 public: //寻找用户 virtual IServerUserItem * SearchUserItem(DWORD dwUserID) = NULL; //游戏用户 virtual IServerUserItem * GetTableUserItem(WORD wChairID) = NULL; //旁观用户 virtual IServerUserItem * EnumLookonUserItem(WORD wEnumIndex) = NULL; //时间接口 public: //设置时间 virtual bool SetGameTimer(DWORD dwTimerID, DWORD dwElapse, DWORD dwRepeat, WPARAM dwBindParameter) = NULL; //删除时间 virtual bool KillGameTimer(DWORD dwTimerID) = NULL; //网络接口 public: //发送数据 virtual bool SendTableData(WORD wChairID, WORD wSubCmdID) = NULL; //发送数据 virtual bool SendTableData(WORD wChairID, WORD wSubCmdID, VOID * pData, WORD wDataSize, WORD wMainCmdID = MDM_GF_GAME) = NULL; //发送数据 virtual bool SendLookonData(WORD wChairID, WORD wSubCmdID) = NULL; //发送数据 virtual bool SendLookonData(WORD wChairID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //发送数据 virtual bool SendUserItemData(IServerUserItem * pIServerUserItem, WORD wSubCmdID) = NULL; //发送数据 virtual bool SendUserItemData(IServerUserItem * pIServerUserItem, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //功能接口 public: //发送消息 virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType) = NULL; //游戏消息 virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType) = NULL; //房间消息 virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType) = NULL; //动作处理 public: //起立动作 virtual bool PerformStandUpAction(IServerUserItem * pIServerUserItem, bool bInitiative = false, bool bSendState = false) = NULL; //旁观动作 virtual bool PerformLookonAction(IServerUserItem * pIServerUserItem) = NULL; //坐下动作 virtual bool PerformSitDownAction(WORD wChairID, IServerUserItem * pIServerUserItem, LPCTSTR lpszPassword = NULL) = NULL; //发送在坐用户状态 virtual bool SendUserInfoStat(IServerUserItem * pIServerUserItem) = NULL; //功能接口 public: //发送场景 virtual bool SendGameScene(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL; //比赛接口 public: //设置接口 virtual bool SetTableFrameHook(IUnknownEx * pIUnknownEx) = NULL; //获取接口 virtual IUnknownEx * GetTableFrameHook() = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_ICompilationSink INTERFACE_VERSION(1,1) static const GUID IID_ICompilationSink = { 0x761A06DF, 0x2BCA, 0x4333, 0xAE, 0x96, 0xEF, 0x85, 0xBA, 0xB2, 0x45, 0xEB }; #else #define VER_ICompilationSink INTERFACE_VERSION(1,1) static const GUID IID_ICompilationSink = { 0xA37F720F, 0x15CD, 0x41E4, 0xB8, 0x6C, 0xE0, 0xA7, 0xEC, 0xAB, 0x31, 0x89 }; #endif //回调接口 interface ICompilationSink : public IUnknownEx { //获取信息 public: //获取信息 virtual LPCTSTR GetCompilation() = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_ITableFrameSink INTERFACE_VERSION(1,1) static const GUID IID_ITableFrameSink = { 0x9476b154, 0x8beb, 0x4f7e, 0xaf, 0x64, 0xd2, 0xb1, 0x1a, 0xda, 0x5e, 0xc4 }; #define VER_ITableFrameSinkOther INTERFACE_VERSION(1,2) #define VER_ITableFrameSinkCxz INTERFACE_VERSION(1,3) #define VER_ITableFrameSinkZhiPai INTERFACE_VERSION(1,4) #else #define VER_ITableFrameSink INTERFACE_VERSION(1,1) static const GUID IID_ITableFrameSink = { 0x38a74df5, 0x6245, 0x46c7, 0xb6, 0xce, 0x53, 0xf9, 0xd5, 0xbf, 0x6d, 0xe6 }; #define VER_ITableFrameSinkOther INTERFACE_VERSION(1,1) static const GUID IID_ITableFrameSinkOther = { 0x38a74df5, 0x6245, 0x46c7, 0xb6, 0xce, 0x53, 0xf9, 0xd5, 0xbf, 0x6d, 0xe6 }; #endif //回调接口 interface ITableFrameSink : public IUnknownEx { //管理接口 public: //复位接口 virtual VOID RepositionSink() = NULL; //配置接口 virtual bool Initialization(IUnknownEx * pIUnknownEx) = NULL; //查询接口 public: //查询限额 virtual SCORE QueryConsumeQuota(IServerUserItem * pIServerUserItem) = NULL; //最少积分 virtual SCORE QueryLessEnterScore(WORD wChairID, IServerUserItem * pIServerUserItem) = NULL; //查询总得分 virtual int QueryTatolScore(WORD wChairID) = NULL; //查询赖子数 virtual int QueryTatolLaiGang(WORD wChairID) = NULL; //查询是否扣服务费 virtual bool QueryBuckleServiceCharge(WORD wChairID) = NULL; //查询是否使用临时积分(临时积分:输赢都不计入用户积分) virtual bool QueryUseTemporaryScore() = NULL; //结束游戏 virtual bool ConcludeGame(BYTE cbGameStatus, bool bSendState = false) = NULL; //删除私有桌子 virtual void DeletePrivateTable(bool bSendState = false) = NULL; //游戏事件 public: //配置游戏选项 virtual void SetGameConfig(VOID * pDataBuffer, WORD wDataSize, std::wstring sPrivateRoomId) = NULL; //游戏开始 virtual bool OnEventGameStart() = NULL; //游戏结束 virtual bool OnEventGameConclude(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason, bool bSendState = false) = NULL; //virtual bool OnEventGameConclude(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason, bool bSendState = false, int nHuType = 0) = NULL; //发送场景 virtual bool OnEventSendGameScene(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbGameStatus, bool bSendSecret) = NULL; //事件接口 public: //时间事件 virtual bool OnTimerMessage(DWORD dwTimerID, WPARAM dwBindParameter) = NULL; //数据事件 virtual bool OnDataBaseMessage(WORD wRequestID, VOID * pData, WORD wDataSize) = NULL; //积分事件 virtual bool OnUserScroeNotify(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason) = NULL; //网络接口 public: //游戏消息 virtual bool OnGameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem) = NULL; //框架消息 virtual bool OnFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pIServerUserItem) = NULL; //比赛接口 public: //设置基数 virtual void SetGameBaseScore(LONG lBaseScore) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_ITableUserAction INTERFACE_VERSION(1,1) static const GUID IID_ITableUserAction = { 0x0f9aa3f9, 0xdba4, 0x49cb, 0x88, 0x4f, 0xd9, 0x11, 0xaf, 0x24, 0xfb, 0x8d }; #else #define VER_ITableUserAction INTERFACE_VERSION(1,1) static const GUID IID_ITableUserAction = { 0xc97c060b, 0xcf0e, 0x40b7, 0x93, 0x30, 0x97, 0xa4, 0xf6, 0x8c, 0xca, 0x84 }; #endif //用户动作 interface ITableUserAction : public IUnknownEx { //用户断线 virtual bool OnActionUserOffLine(WORD wChairID, IServerUserItem * pIServerUserItem) = NULL; //用户重入 virtual bool OnActionUserConnect(WORD wChairID, IServerUserItem * pIServerUserItem) = NULL; //用户坐下 virtual bool OnActionUserSitDown(WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser) = NULL; //用户起来 virtual bool OnActionUserStandUp(WORD wChairID, IServerUserItem * pIServerUserItem, bool bLookonUser) = NULL; //用户同意 virtual bool OnActionUserOnReady(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL; //游戏中途旁观进入 virtual bool PerformLookonLogin(IServerUserItem * pIServerUserItem) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_ITableUserRequest INTERFACE_VERSION(1,1) static const GUID IID_ITableUserRequest = { 0x7a810ebe, 0x3835, 0x41b5, 0xba, 0x7e, 0x02, 0x97, 0x8c, 0x13, 0x73, 0x50 }; #else #define VER_ITableUserRequest INTERFACE_VERSION(1,1) static const GUID IID_ITableUserRequest = { 0x7ad17e89, 0xcb5b, 0x472a, 0xac, 0xeb, 0x84, 0x4d, 0x4f, 0xa1, 0x4c, 0x38 }; #endif //用户请求 interface ITableUserRequest : public IUnknownEx { //旁观请求 virtual bool OnUserRequestLookon(WORD wChairID, IServerUserItem * pIServerUserItem, tagRequestResult & RequestResult) = NULL; //坐下请求 virtual bool OnUserRequestSitDown(WORD wChairID, IServerUserItem * pIServerUserItem, tagRequestResult & RequestResult) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IMainServiceFrame INTERFACE_VERSION(1,1) static const GUID IID_IMainServiceFrame = { 0xef3efa64, 0x788b, 0x4299, 0x80, 0x99, 0xdd, 0xed, 0x08, 0xde, 0x57, 0xc1 }; #else #define VER_IMainServiceFrame INTERFACE_VERSION(1,1) static const GUID IID_IMainServiceFrame = { 0xbaaf5584, 0xf9b4, 0x41b6, 0xae, 0x6b, 0xef, 0x4d, 0x54, 0x41, 0xf8, 0x32 }; #endif //绑定参数 struct tagBindParameter { //连接属性 DWORD dwSocketID; //网络标识 DWORD dwClientAddr; //连接地址 DWORD dwActiveTime; //激活时间 //版本信息 DWORD dwPlazaVersion; //广场版本 DWORD dwFrameVersion; //框架版本 DWORD dwProcessVersion; //进程版本 //用户属性 BYTE cbClientKind; //连接类型 IServerUserItem * pIServerUserItem; //用户接口 ///---add by yd 2017-8-4 tagBindParameter() { memset(this, 0x0, sizeof(tagBindParameter)); } }; //服务框架 interface IMainServiceFrame : public IUnknownEx { //消息接口 public: //房间消息 virtual bool SendRoomMessage(LPCTSTR lpszMessage, WORD wType) = NULL; //游戏消息 virtual bool SendGameMessage(LPCTSTR lpszMessage, WORD wType) = NULL; //房间消息 virtual bool SendRoomMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType) = NULL; //游戏消息 virtual bool SendGameMessage(IServerUserItem * pIServerUserItem, LPCTSTR lpszMessage, WORD wType) = NULL; //房间消息 virtual bool SendRoomMessage(DWORD dwSocketID, LPCTSTR lpszMessage, WORD wType, bool bAndroid) = NULL; //网络接口 public: //发送数据 virtual bool SendData(BYTE cbSendMask, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //发送数据 virtual bool SendData(DWORD dwContextID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //发送数据 virtual bool SendData(IServerUserItem * pIServerUserItem, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //群发数据 virtual bool SendDataBatchToMobileUser(WORD wCmdTable, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize, IServerUserItem * pUserItem = NULL) = NULL; //功能接口 public: //插入分配 virtual bool InsertDistribute(IServerUserItem * pIServerUserItem) = NULL; //删除用户 virtual bool DeleteDistribute(IServerUserItem * pIServerUserItem) = NULL; //敏感词过滤 virtual void SensitiveWordFilter(LPCTSTR pMsg, LPTSTR pszFiltered, int nMaxLen) = NULL; //删除私有桌子 virtual bool DeletePrivateTable(ITableFrame* pTableFram) = NULL; //查找用户 virtual IServerUserItem * SearchUserItem(DWORD dwUserID) = NULL; //绑定用户 virtual IServerUserItem * GetBindUserItem(WORD wBindIndex) = NULL; //绑定参数 virtual tagBindParameter * GetBindParameter(WORD wBindIndex) = NULL; // 是否监测此用户 virtual BOOL IsJC(DWORD UserID) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IAndroidUserItem INTERFACE_VERSION(1,1) static const GUID IID_IAndroidUserItem = { 0xf6856fe1, 0xc93e, 0x4166, 0xbc, 0x92, 0xf7, 0x43, 0xad, 0x97, 0x1c, 0xa8 }; #else #define VER_IAndroidUserItem INTERFACE_VERSION(1,1) static const GUID IID_IAndroidUserItem = { 0xb1faa2f4, 0x9804, 0x4c6f, 0x9d, 0xfc, 0xb1, 0x0a, 0x08, 0x8a, 0x22, 0x69 }; #endif //机器人接口 interface IAndroidUserItem : public IUnknownEx { //信息接口 public: //获取 I D virtual DWORD GetUserID() = NULL; //桌子号码 virtual WORD GetTableID() = NULL; //椅子号码 virtual WORD GetChairID() = NULL; //状态函数 public: //获取状态 virtual BYTE GetGameStatus() = NULL; //设置状态 virtual VOID SetGameStatus(BYTE cbGameStatus) = NULL; //配置信息 public: //获取状态 virtual tagAndroidService * GetAndroidService() = NULL; //获取配置 virtual tagAndroidParameter * GetAndroidParameter() = NULL; //功能接口 public: //获取自己 virtual IServerUserItem * GetMeUserItem() = NULL; //游戏用户 virtual IServerUserItem * GetTableUserItem(WORD wChariID) = NULL; //银行接口 public: //存入游戏币 virtual bool PerformSaveScore(SCORE lScore) = NULL; //提取游戏币 virtual bool PerformTakeScore(SCORE lScore) = NULL; //网络接口 public: //发送函数 virtual bool SendSocketData(WORD wSubCmdID) = NULL; //发送函数 virtual bool SendSocketData(WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //动作接口 public: //机器动作 virtual bool JudgeAndroidActionAndRemove(WORD wAction) = NULL; //功能接口 public: //删除时间 virtual bool KillGameTimer(UINT nTimerID) = NULL; //设置时间 virtual bool SetGameTimer(UINT nTimerID, UINT nElapse) = NULL; //发送准备 virtual bool SendUserReady(VOID * pData, WORD wDataSize) = NULL; //发送聊天 virtual bool SendChatMessage(DWORD dwTargetUserID, LPCTSTR pszChatString, COLORREF crFontColor) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IAndroidUserItemSink INTERFACE_VERSION(1,1) static const GUID IID_IAndroidUserItemSink = { 0x0967632c, 0x93da, 0x4f7f, 0x98, 0xe4, 0x6f, 0x9f, 0xf2, 0xca, 0x7b, 0xc4 }; #else #define VER_IAndroidUserItemSink INTERFACE_VERSION(1,1) static const GUID IID_IAndroidUserItemSink = { 0x1e8a1918, 0x572b, 0x453b, 0xbc, 0x0b, 0x6b, 0x61, 0x70, 0xa3, 0x3c, 0xca }; #endif //机器人接口 interface IAndroidUserItemSink : public IUnknownEx { //控制接口 public: //重置接口 virtual bool RepositionSink() = NULL; //初始接口 virtual bool Initialization(IUnknownEx * pIUnknownEx) = NULL; //游戏事件 public: //时间消息 virtual bool OnEventTimer(UINT nTimerID) = NULL; //游戏消息 virtual bool OnEventGameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //游戏消息 virtual bool OnEventFrameMessage(WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //场景消息 virtual bool OnEventSceneMessage(BYTE cbGameStatus, bool bLookonOther, VOID * pData, WORD wDataSize) = NULL; //用户事件 public: //用户进入 virtual VOID OnEventUserEnter(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL; //用户离开 virtual VOID OnEventUserLeave(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL; //用户积分 virtual VOID OnEventUserScore(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL; //用户状态 virtual VOID OnEventUserStatus(IAndroidUserItem * pIAndroidUserItem, bool bLookonUser) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IUserTaskManagerSink INTERFACE_VERSION(1,1) static const GUID IID_IUserTaskManagerSink = { 0xe71c3ecf, 0x490e, 0x4a32, 0xb4, 0x75, 0x2c, 0xba, 0x9b, 0x55, 0x26, 0xd4 }; #else #define VER_IUserTaskManagerSink INTERFACE_VERSION(1,1) static const GUID IID_IUserTaskManagerSink = { 0x1c721508, 0x81f8, 0x403f, 0xb5, 0xc9, 0x3e, 0xb3, 0xe3, 0xe5, 0xcd, 0xa9 }; #endif //任务接口 interface IUserTaskManagerSink : public IUnknownEx { //任务参数 public: //移除参数 virtual VOID RemoveTaskParameter() = NULL; //查找参数 virtual tagTaskParameter * SearchTaskParameter(WORD wTaskID) = NULL; //枚举参数 virtual tagTaskParameter * EnumTaskParameter(POSITION & Position) = NULL; //添加参数 virtual bool AddTaskParameter(tagTaskParameter TaskParameter[], WORD wPatemterCount) = NULL; //用户任务 public: //移除任务 virtual VOID RemoveUserTask(DWORD dwUserID) = NULL; //获取任务 virtual tagUserTaskEntry * GetUserTaskEntry(DWORD dwUserID) = NULL; //获取任务 virtual tagUserTaskEntry * GetUserTaskEntry(DWORD dwUserID, BYTE cbTaskStatus) = NULL; //设置任务 virtual VOID SetUserTaskInfo(DWORD dwUserID, tagUserTaskInfo UserTaskInfo[], WORD wTaskCount) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IAndroidUserManager INTERFACE_VERSION(1,1) static const GUID IID_IAndroidUserManager = { 0x0c963240, 0xa798, 0x4e33, 0x81, 0x28, 0x97, 0x3d, 0x05, 0xe7, 0x7f, 0x89 }; #else #define VER_IAndroidUserManager INTERFACE_VERSION(1,1) static const GUID IID_IAndroidUserManager = { 0xba43054d, 0x924b, 0x4013, 0xb2, 0x6d, 0xa6, 0x91, 0xb6, 0x20, 0x23, 0xb2 }; #endif //机器人接口 interface IAndroidUserManager : public IUnknownEx { //控制接口 public: //启动服务 virtual bool StartService() = NULL; //停止服务 virtual bool ConcludeService() = NULL; //配置接口 public: //配置组件 virtual bool InitAndroidUser(tagAndroidUserParameter & AndroidUserParameter) = NULL; //移除参数 virtual bool RemoveAndroidParameter(DWORD dwBatchID) = NULL; //添加参数 virtual bool AddAndroidParameter(tagAndroidParameter AndroidParameter[], WORD wParemeterCount) = NULL; //插入机器 virtual bool InsertAndroidInfo(tagAndroidAccountsInfo AndroidAccountsInfo[], WORD wAndroidCount, DWORD dwBatchID) = NULL; //管理接口 public: //删除机器 virtual bool DeleteAndroidUserItem(DWORD dwAndroidID, bool bStockRetrieve) = NULL; //查找机器 virtual IAndroidUserItem * SearchAndroidUserItem(DWORD dwUserID, DWORD dwContextID) = NULL; //创建机器 virtual IAndroidUserItem * CreateAndroidUserItem(tagAndroidItemConfig & AndroidItemConfig) = NULL; //事件接口 public: //脉冲事件 virtual bool OnEventTimerPulse(DWORD dwTimerID, WPARAM dwBindParameter) = NULL; //状态接口 public: //机器数目 virtual WORD GetAndroidCount() = NULL; //加载机器 virtual bool GetAndroidLoadInfo(DWORD & dwBatchID, DWORD & dwLoadCount) = NULL; //用户状况 virtual WORD GetAndroidUserInfo(tagAndroidUserInfo & AndroidUserInfo, DWORD dwServiceMode) = NULL; //网络接口 public: //发送数据 virtual bool SendDataToClient(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //发送数据 virtual bool SendDataToClient(DWORD dwAndroidID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; //发送数据 virtual bool SendDataToServer(DWORD dwAndroidID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IQueryServiceSink INTERFACE_VERSION(1,1) static const GUID IID_IQueryServiceSink = { 0x0c963248, 0xa798, 0x4e33, 0x88, 0x28, 0x98, 0x3d, 0x05, 0xe7, 0x7f, 0x89 }; #else #define VER_IQueryServiceSink INTERFACE_VERSION(1,1) static const GUID IID_IQueryServiceSink = { 0xba43054d, 0x924b, 0x4013, 0xb2, 0x6d, 0xa6, 0x96, 0xb6, 0x26, 0x26, 0xb2 }; #endif //查询接口 interface IQueryServiceSink : public IUnknownEx { //查询是否扣服务费 virtual bool QueryBuckleServiceCharge(WORD wChairID) = NULL; }; ////////////////////////////////////////////////////////////////////////////////// #ifdef _UNICODE #define VER_IDBCorrespondManager INTERFACE_VERSION(1,1) static const GUID IID_IDBCorrespondManager = { 0x0c963248, 0xa796, 0x4e33, 0x86, 0x28, 0x98, 0x3d, 0x05, 0xe7, 0x7f, 0x89 }; #else #define VER_IDBCorrespondManager INTERFACE_VERSION(1,1) static const GUID IID_IDBCorrespondManager = { 0xba43154d, 0x924b, 0x4018, 0xb2, 0x6d, 0xa6, 0x96, 0xb6, 0x28, 0x26, 0xb2 }; #endif //查询接口 interface IDBCorrespondManager : public IServiceModule { //配置接口 public: //配置模块 virtual bool __cdecl InitDBCorrespondManager(IDataBaseEngine * pIDataBaseEngine) = NULL; //控制事件 public: //请求事件 virtual bool __cdecl PostDataBaseRequest(DWORD dwUserID, WORD wRequestID, DWORD dwContextID, VOID * pData, WORD wDataSize, BYTE cbCache = FALSE) = NULL; //同步事件 public: //请求完成 virtual bool __cdecl OnPostRequestComplete(DWORD dwUserID, bool bSucceed) = NULL; //定时事件 public: //定时事件 virtual bool __cdecl OnTimerNotify() = NULL; }; ////////////////////////////////////////////////////////////////////////////////// //包含文件 #ifndef GAME_SERVICE_DLL #include "AndroidUserItem.h" #include "UserTaskManager.h" #include "ServerUserManager.h" #include "AndroidUserManager.h" #include "GamePropertyManager.h" #endif //游戏服务 DECLARE_MODULE_DYNAMIC(GameServiceManager) DECLARE_MODULE_DYNAMIC(AndroidUserItemSink) ////////////////////////////////////////////////////////////////////////////////// #endif