#ifndef GAME_SERVICE_HEAD_HEAD_FILE #define GAME_SERVICE_HEAD_HEAD_FILE ////////////////////////////////////////////////////////////////////////////////// //平台定义 #include "..\..\全局定义\Platform.h" //消息定义 #include "..\..\消息定义\CMD_Commom.h" #include "..\..\消息定义\CMD_Correspond.h" #include "..\..\消息定义\CMD_GameServer.h" //平台文件 #include "..\..\服务器组件\服务核心\ServiceCoreHead.h" #include "..\..\服务器组件\内核引擎\KernelEngineHead.h" ////////////////////////////////////////////////////////////////////////////////// //导出定义 //导出定义 #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; interface IGameServiceCustomTime; ////////////////////////////////////////////////////////////////////////////////// //常量定义 //机器动作 #define ANDROID_WAITSTANDUP 0x01 //等待起立 #define ANDROID_WAITLEAVE 0x02 //等待离开 //群发掩码 #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_SIMULATE 0x01 //相互模拟 #define ANDROID_PASSIVITY 0x02 //被动陪打 #define ANDROID_INITIATIVE 0x04 //主动陪打 //结束原因 #define GER_NORMAL 0x00 //常规结束 #define GER_DISMISS 0x01 //游戏解散 #define GER_USER_LEAVE 0x02 //用户离开 #define GER_NETWORK_ERROR 0x03 //网络错误 #define GER_BAOZI 0x04 //菜包子 //离开原因 #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 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 DISTRIBUTE_ADJACENT 0X10 //相邻选项 ////////////////////////////////////////////////////////////////////////////////// //时间标识 //调度范围 #define IDI_MAIN_MODULE_START 1 //起始标识 #define IDI_MAIN_MODULE_FINISH 99 //终止标识 //机器范围 #define IDI_REBOT_MODULE_START 100 //起始标识 #define IDI_REBOT_MODULE_FINISH 199 //终止标识 //比赛范围 #define IDI_MATCH_MODULE_START 200 //起始标识 #define IDI_MATCH_MODULE_FINISH 299 //结束标识 //比赛范围 #define IDI_PRIVATE_MODULE_START 300 //起始标识 #define IDI_PRIVATE_MODULE_FINISH 399 //结束标识 //桌子范围 #define IDI_TABLE_MODULE_START 10000 //起始标识 #define IDI_TABLE_MODULE_FINISH 50000 //终止标识 ////////////////////////////////////////////////////////////////////////////////// //时间范围 //游戏时间 #define TIME_TABLE_SINK_RANGE 20 //标识范围 #define TIME_TABLE_KERNEL_RANGE 30 //标识范围 #define TIME_TABLE_MODULE_RANGE 50 //标识范围 ////////////////////////////////////////////////////////////////////////////////// //常量定义 //常量定义 #define RESERVE_USER_COUNT 40L //保留数目 //扣费类型 #define MATCH_FEE_TYPE_GOLD 0x00 //缴纳金币 #define MATCH_FEE_TYPE_MEDAL 0x01 //缴纳奖牌 #define MATCH_FEE_TYPE_CARD 0x02 //缴纳房卡 //开赛模式 #define MATCH_MODE_NORMAL 0x00 //常规开赛 #define MATCH_MODE_ROUND 0x01 //循环开赛 //比赛类型 #define MATCH_TYPE_LOCKTIME 0x00 //定时类型 #define MATCH_TYPE_IMMEDIATE 0x01 //即时类型 ////////////////////////////////////////////////////////////////////////////////// //结构定义 //配置参数 struct tagGameParameter { //汇率信息 WORD wMedalRate; //奖牌汇率 WORD wRevenueRate; //银行税收 //版本信息 DWORD dwClientVersion; //客户版本 DWORD dwServerVersion; //服务版本 }; //服务属性 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; //房间标识 WORD wChanelID; //渠道标识 //税收配置 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 wServerType; //房间类型 TCHAR szServerName[LEN_SERVER]; //房间名称 //分组设置 BYTE cbDistributeRule; //分组规则 WORD wMinDistributeUser; //最少人数 WORD wMaxDistributeUser; //最多人数 WORD wDistributeTimeSpace; //分组间隔 WORD wDistributeDrawCount; //分组局数 WORD wDistributeStartDelay; //开始延时 //连接设置 TCHAR szDataBaseAddr[16]; //连接地址 TCHAR szDataBaseName[32]; //数据库名 //自定规则 BYTE cbCustomRule[1024]; //自定规则 }; //比赛配置 struct tagGameMatchOption { //基本信息 DWORD dwMatchID; //比赛标识 DWORD dwMatchNO; //比赛场次 BYTE cbMatchType; //比赛类型 TCHAR szMatchName[32]; //比赛名称 //比赛信息 SCORE lMatchFee; //比赛费用 BYTE cbMatchFeeType; //扣费类型 BYTE cbMemberOrder; //会员等级 SCORE lMatchEnterScore; //准入金币 //类型信息 union unGameMatchType { //定时赛 struct tagLockTimeMatch { //时间配置; DWORD dwEndDelayTime; //延迟时间 SYSTEMTIME MatchStartTime; //开始日期 SYSTEMTIME MatchEndTime; //结束日期 SYSTEMTIME SignupStartTime; //报名开始; SYSTEMTIME SignupEndTime; //报名截止; //比赛分数; SCORE lMatchInitScore; //初始积分 SCORE lMatchCullScore; //淘汰积分 //比赛局数; WORD wMatchPlayCount; //最少局数 BYTE cbMatchMode; //比赛模式; DWORD dwChannelID; //渠道ID; DWORD dwInviteCode; //邀请码ID; DWORD dwQuality; //比赛性质; DWORD dwCycle; //周期类型; } 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 tagPrivateFrameParameter { DWORD dwCreaterUserID; // 创建者 DWORD dwRoomNum; // 房间ID DWORD dwPlayCost; // 消耗点数 // 设置规则 BYTE cbGameTypeIdex; //兼容湖南麻将(一个游戏服务器多个规则); BYTE cbGameCout; //游戏局数; DWORD dwGameRule; //游戏规则; BYTE cbEnterRoomScoreType; //进房间时的分数类型; SCORE lInitEnterRoomScore; //进入房间时的分数; BYTE cbBaseScore; // 工会开房欢乐场; BYTE cbUnionGoldOpen; // 是否是积分模式 SCORE lScoreMultiple; //倍数 SCORE lGameGold; //佣金 }; // 私人场完成信息 struct tagPrivateFrameRecordInfo { BYTE cbFinishCout; //完成局数 }; //桌子参数 struct tagTableFrameParameter { //内核组件 ITimerEngine * pITimerEngine; //时间引擎 IDataBaseEngine * pIRecordDataBaseEngine; //数据引擎 IDataBaseEngine * pIKernelDataBaseEngine; //数据引擎 //服务组件 IMainServiceFrame * pIMainServiceFrame; //服务框架 IAndroidUserManager * pIAndroidUserManager; //机器管理 IGameServiceManager * pIGameServiceManager; //服务管理 //配置变量 tagGameParameter * pGameParameter; //配置参数 tagGameServiceAttrib * pGameServiceAttrib; //桌子属性 tagGameServiceOption * pGameServiceOption; //配置参数 tagGameMatchOption * pGameMatchOption; //比赛配置 //比赛配置 IUnknownEx * pIGameMatchServiceManager; //比赛管理 IUnknownEx * pIGamePrivateServiceManager; //私人场管理 }; //机器参数 struct tagAndroidUserParameter { //服务配置 bool bServiceContinue; //服务延续 DWORD dwMinSitInterval; //坐下间隔 DWORD dwMaxSitInterval; //坐下间隔 //配置变量 tagGameParameter * pGameParameter; //配置参数 tagGameServiceAttrib * pGameServiceAttrib; //桌子属性 tagGameServiceOption * pGameServiceOption; //配置参数 tagGameMatchOption * pGameMatchOption; //比赛配置 //内核组件 ITimerEngine * pITimerEngine; //时间引擎 IServerUserManager * pIServerUserManager; //用户管理 IGameServiceManager * pIGameServiceManager; //服务管理 IGameServiceCustomTime * pIGameServiceSustomTime; //时间配置 ITCPNetworkEngineEvent * pITCPNetworkEngineEvent; //事件接口 }; ////////////////////////////////////////////////////////////////////////////////// //辅助结构 //积分信息 struct tagScoreInfo { BYTE cbType; //积分类型 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SCORE lRevenue; //游戏税收 BYTE cbLastScoreMultiple; //下一局积分倍数 }; //变更信息 struct tagVariationInfo { //积分信息 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SCORE lInsure; //用户银行 SCORE lRevenue; //游戏税收 //游戏信息 BYTE cbNextScoreMultiple; //下一局积分倍数 DWORD dwWinCount; //胜利盘数 DWORD dwLostCount; //失败盘数 DWORD dwDrawCount; //和局盘数 DWORD dwFleeCount; //逃跑盘数 DWORD dwPlayTimeCount; //游戏时长 //全局信息 DWORD dwUserMedal; //用户奖牌 DWORD dwExperience; //用户经验 LONG lLoveLiness; //用户魅力 }; //游戏记录 struct tagGameScoreRecord { //用户信息 DWORD dwUserID; //用户标识 WORD wChairID; //椅子号码 BYTE cbAndroid; //机器标志 //成绩信息 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SCORE lRevenue; //游戏税收 //用户信息 DWORD dwDBQuestID; //请求标识 DWORD dwInoutIndex; //记录索引 //附加信息 DWORD dwUserMemal; //奖牌数目 DWORD dwPlayTimeCount; //游戏时长 void StreamValue(DataStream& kData,bool bSend) { Stream_VALUE(dwUserID); Stream_VALUE(wChairID); Stream_VALUE(cbAndroid); Stream_VALUE(lScore); Stream_VALUE(lGrade); Stream_VALUE(lRevenue); Stream_VALUE(dwDBQuestID); Stream_VALUE(dwInoutIndex); Stream_VALUE(dwUserMemal); Stream_VALUE(dwPlayTimeCount); } }; //游戏记录预览 struct tagGameRecordOverLook { //用户信息 DWORD dwRecordID; //用户标识 //成绩信息 SCORE lScore; //用户分数 SCORE lGrade; //用户成绩 SYSTEMTIME PlayerTime; //游戏结束时间 void StreamValue(DataStream& kData,bool bSend) { Stream_VALUE(dwRecordID); Stream_VALUE(lScore); Stream_VALUE(lGrade); Stream_VALUE_SYSTEMTIME(PlayerTime); } }; //牌库 struct tagGameCardLibrary { WORD wKindID; DWORD dwLibID; DWORD dwCustomID; BYTE cbCount; //数量 BYTE cbData[LEN_CARD_LIB]; //数据 }; //用户规则 struct tagUserRule { //规则标志 bool bLimitSameIP; //效验地址 bool bLimitWinRate; //限制胜率 bool bLimitFleeRate; //限制逃率 bool bLimitGameScore; //限制分数 //规则属性 WORD wMinWinRate; //最低胜率 WORD wMaxFleeRate; //最高逃率 LONG lMaxGameScore; //最高分数 LONG lMinGameScore; //最低分数 TCHAR szPassword[LEN_PASSWORD]; //桌子密码 }; //用户信息 struct tagUserInfoPlus { //登录信息 DWORD dwLogonTime; //登录时间 DWORD dwInoutIndex; //进出标识 //连接信息 WORD wBindIndex; //绑定索引 DWORD dwClientAddr; //连接地址 TCHAR szMachineID[LEN_MACHINE_ID]; //机器标识 //附加变量 DWORD dwUserRight; //用户权限 DWORD dwMasterRight; //管理权限 SCORE lRestrictScore; //限制积分 //牌库变量 DWORD dwCardLibIndex; //使用牌库索引 DWORD dwStartLibTime; //牌库开始使用时间 DWORD dwStopLibTime; //牌库结束使用时间 BYTE cbCardLibEnabled; //牌库有效标志 //辅助变量 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; //用户数目 WORD wWaitUserCount; //用户数目 IAndroidUserItem * pIAndroidUserFree[MAX_ANDROID]; //机器接口 IAndroidUserItem * pIAndroidUserPlay[MAX_ANDROID]; //机器接口 IAndroidUserItem * pIAndroidUserSitdown[MAX_ANDROID]; //机器接口 IAndroidUserItem * pIAndroidUserWait[MAX_ANDROID]; //机器接口 }; //服务信息 struct tagAndroidService { DWORD dwSwitchTableInnings; //游戏局数 }; //机器参数 struct tagAndroidParameter { //属性变量 DWORD dwBatchID; //批次标识 DWORD dwServiceMode; //服务模式 DWORD dwAndroidCount; //机器数目 DWORD dwEnterTime; //进入时间 DWORD dwLeaveTime; //离开时间 SCORE lTakeMinScore; //携带分数 SCORE lTakeMaxScore; //携带分数 DWORD dwEnterMinInterval; //进入间隔 DWORD dwEnterMaxInterval; //进入间隔 DWORD dwLeaveMinInterval; //离开间隔 DWORD dwLeaveMaxInterval; //离开间隔 DWORD dwSwitchMinInnings; //换桌局数 DWORD dwSwitchMaxInnings; //换桌局数 }; //帐号信息 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; }; ////////////////////////////////////////////////////////////////////////////////// #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_IGameServiceCustomTime INTERFACE_VERSION(1,1) static const GUID IID_IGameServiceCustomTime={0xf57573b0,0x63c3,0x43a9,0x8c,0xb1,0xe2,0x22,0xd3,0x93,0xe2,0xb}; #else #define VER_IGameServiceCustomTime INTERFACE_VERSION(1,1) static const GUID IID_IGameServiceCustomTime = { 0xf57573b0, 0x63c3, 0x43a9, 0x8c, 0xb1, 0xe2, 0x22, 0xd3, 0x93, 0xe2, 0xb }; #endif //时间配置 interface IGameServiceCustomTime : public IUnknownEx { //机器脉冲 virtual DWORD GetAndroidTimerPulse() = NULL; //时间范围 virtual DWORD GetTableSinkTimeRange() = NULL; //时间单元 virtual DWORD GetTimerEngineTimeCell() = 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 GetChairID()=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; //用户倍数; virtual BYTE getScoreMultiple()=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 IsClientReady()=NULL; //设置连接 virtual VOID SetClientReady(bool bClientReady)=NULL; //还原状态 virtual BYTE GetReUserStatus() = NULL; //设置状态 virtual void SetReUserStatus(BYTE cbReUserStatus) = NULL; //手机用户 public: //控制状态 virtual bool IsMobileUser()=NULL; //设置控制 virtual VOID SetMobileUser(bool bMobileUser)=NULL; //控制用户 public: //控制状态 virtual bool IsAndroidUser()=NULL; //设置控制 virtual VOID SetAndroidUser(bool bbMachineUser)=NULL; //作弊用户 virtual bool IsCheatUser() = NULL; //设置作弊用户 virtual void SetCheatUser(bool bFlag) = 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)=NULL; //设置状态 virtual bool SetUserStatus(BYTE cbUserStatus) = NULL; //写入积分 virtual bool WriteUserScore(SCORE lScore, SCORE lGrade, SCORE lRevenue, DWORD dwUserMedal, BYTE cbScoreType, BYTE cbLastScoreMultiple, DWORD dwPlayTimeCount)=NULL; //修改权限 virtual VOID ModifyUserRight( DWORD dwAddRight, DWORD dwRemoveRight, bool bGameRight=true)=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; //比赛接口 public: //报名数据 virtual VOID * GetMatchData()=NULL; //报名数据 virtual VOID SetMatchData(VOID * pMatchData)=NULL; //报名时间 virtual DWORD GetSignUpTime()=NULL; //报名时间 virtual VOID SetSignUpTime(DWORD dwSignUpTime)=NULL; //比赛状态 virtual BYTE GetUserMatchStatus()=NULL; //比赛状态 virtual VOID SetUserMatchStatus(BYTE cbMatchStatus) = NULL; //牌库接口 public: //是否可以使用牌库 virtual bool canUseCardLib() = NULL; //获取牌库索引 virtual DWORD getCardLibIndex() = NULL; //设置牌库索引 virtual void setCardLibIndex(DWORD dwCardLibIndex) = NULL; //累加牌库索引 virtual void addCardLibIndex() = NULL; //设置牌库可用性 virtual void setCardLibEnabled(bool bEnabled) = NULL; //设置牌库使用时间段 virtual void setUseCardLibTime(DWORD dwStartTime, DWORD dwEndTime) = NULL; //私人房接口 public: //添加事件 virtual VOID addPrivateAction(DWORD dwAction)=NULL; //统计私人场玩家局数 virtual VOID addPrivatePlayCout(WORD wCout) = 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)=NULL; //用户权限 virtual bool OnEventUserItemRight(IServerUserItem *pIServerUserItem, DWORD dwAddRight, DWORD dwRemoveRight,bool bGameRight=true)=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 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 IGameMatchSink; //桌子接口 interface ITableFrame : public IUnknownEx { //属性接口 public: //桌子号码 virtual WORD GetTableID()=NULL; //游戏人数 virtual WORD GetChairCount()=NULL; //空位置数目 virtual WORD GetNullChairCount()=NULL; //断线数目 virtual WORD GetOffLineUserCount()=NULL; //用户数目 virtual WORD GetSitUserCount() = NULL; //配置参数 public: //自定配置 virtual VOID * GetCustomRule()=NULL; //服务属性 virtual tagGameServiceAttrib * GetGameServiceAttrib()=NULL; //服务配置 virtual tagGameServiceOption * GetGameServiceOption()=NULL; //比赛配置; virtual tagGameMatchOption * GetGameMatchOption() = 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, BYTE cbReason = GER_NORMAL) = NULL; //写分接口 public: //写入积分 virtual bool WriteUserScore(WORD wChairID, tagScoreInfo & ScoreInfo)=NULL; //写入积分 virtual bool WriteTableScore(tagScoreInfo ScoreInfoArray[], WORD wScoreCount,DataStream kDataStream = DataStream())=NULL; //积分倍数 //virtual bool WriteScoreMultiple(WORD wChairID, BYTE cbScoreMultiple) = 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)=NULL; //起立动作 virtual bool PerformStandUpActionEx(IServerUserItem * pIServerUserItem)=NULL; //旁观动作 virtual bool PerformLookonAction(WORD wChairID, IServerUserItem * pIServerUserItem)=NULL; //坐下动作 virtual bool PerformSitDownAction(WORD wChairID, IServerUserItem * pIServerUserItem, LPCTSTR lpszPassword=NULL)=NULL; //功能接口 public: //发送场景 virtual bool SendGameScene(IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize)=NULL; //私人房 public: //设置接口 virtual bool SetTableFramePrivate(IUnknownEx * pIUnknownEx)=NULL; //添加事件 virtual void AddPrivateAction(DWORD dwChairID,BYTE bActionIdex) = NULL; //设置私人场信息 virtual void SetPrivateInfo(tagPrivateFrameParameter &PriavateFrame) = NULL; //获取私人场配置 virtual tagPrivateFrameParameter* GetPrivateFrameInfo() = NULL; //获取当前完成数据 virtual tagPrivateFrameRecordInfo* GetPrivateFrameRecord()=NULL; //统计私人场玩家局数 virtual VOID addPrivatePlayCout(WORD wCout) = NULL; //重置私人场结束信息 virtual void ResetPrivateEndInfo() = NULL; //获得私人场结束信息流 virtual void GetPrivateEndInfo(DataStream &kDataStream, bool bSend) = NULL; //判断私人场是否结束 virtual bool IsPrivateEnd() = NULL; //真实椅子数量 virtual WORD GetRealChairCount() = NULL; //牌库接口 public: //获取牌库 virtual tagGameCardLibrary* GetGameCardLibrary(DWORD dwIndex=0xFFFFFFFF) = NULL; //比赛接口 public: //设置接口 virtual bool SetTableFrameHook(IUnknownEx * pIUnknownEx)=NULL; //获取接口 virtual IUnknownEx * GetTableFrameHook()=NULL; //伪造配置; virtual bool ImitateGameOption(IServerUserItem * pIServerUserItem) = 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}; #else #define VER_ITableFrameSink INTERFACE_VERSION(1,1) static const GUID IID_ITableFrameSink={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 bool QueryBuckleServiceCharge(WORD wChairID)=NULL; //游戏事件 public: //游戏开始 virtual bool OnEventGameStart()=NULL; //游戏结束 virtual bool OnEventGameConclude(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason)=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; //私人场接口 public: //设置私人场信息 virtual void SetPrivateInfo(BYTE bGameTypeIdex,DWORD bGameRuleIdex)=NULL; //重置私人场结束信息 virtual void ResetPrivateEndInfo() = NULL; //获得私人场结束信息流 virtual void GetPrivateEndInfo(DataStream &kDataStream, bool bSend) = NULL; //判断私人场是否结束 virtual bool IsPrivateEnd() = NULL; //真实椅子数量 virtual WORD GetRealChairCount() = 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 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 OnActionUserFangKaCheck(WORD wChairID, IServerUserItem * pIServerUserItem, SCORE lUserInsure) = NULL; //用户开始游戏 virtual bool OnActionUserOnStart(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = NULL; //用户开始游戏 virtual bool OnActionUserStartGame(WORD wChairID, IServerUserItem * pIServerUserItem, VOID * pData, WORD wDataSize) = 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 //服务框架 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; //发送个人信息 virtual bool SendUserInfoPacket(IServerUserItem * pIServerUserItem, IServerUserItem * pISendToUserItem) = 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)=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 VOID UnLockAndroidUser(WORD wServerID, WORD wBatchID) = 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; //发送函数 virtual bool SendSocketData(WORD wMainCmdID, 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_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; //获取房间配置 virtual tagGameServiceOption* GetGameServiceOption() = NULL; //获取游戏属性 virtual tagGameServiceAttrib* GetGameServiceAttrib() = NULL; //获取比赛配置 virtual tagGameMatchOption* GetGameMatchOption() = 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 "ServerUserManager.h" #include "AndroidUserManager.h" #include "GamePropertyManager.h" #endif //游戏服务 DECLARE_MODULE_DYNAMIC(GameServiceManager) DECLARE_MODULE_DYNAMIC(AndroidUserItemSink) ////////////////////////////////////////////////////////////////////////////////// #endif