#ifndef SERVER_USER_MANAGER_HEAD_FILE #define SERVER_USER_MANAGER_HEAD_FILE #pragma once #include "AfxTempl.h" #include "GameServiceHead.h" ////////////////////////////////////////////////////////////////////////////////// //用户信息 class GAME_SERVICE_CLASS CServerUserItem : public IServerUserItem, public IServerUserService { //友元定义 friend class CServerUserManager; //属性变量 protected: tagUserInfo m_UserInfo; //用户信息 tagUserRule m_UserRule; //用户规则 tagUserScore m_ScoreFormer; //先前分数 tagUserProperty m_UserProperty; //玩家道具 //变更记录 protected: tagVariationInfo m_RecordInfo; //记录信息 tagVariationInfo m_VariationInfo; //变更信息 //附加变量 protected: DWORD m_dwUserRight; //用户权限 DWORD m_dwMasterRight; //管理权限 //托管变量 protected: SCORE m_lTrusteeScore; //托管积分 SCORE m_lRestrictScore; //限制积分 SCORE m_lFrozenedScore; //冻结积分 protected: //牌库变量 DWORD m_dwCardLibIndex; //使用牌库索引 DWORD m_dwStartLibTime; //牌库开始使用时间 DWORD m_dwStopLibTime; //牌库结束使用时间 BYTE m_cbCardLibEnabled; //牌库有效标志 //登录信息 protected: DWORD m_dwDBQuestID; //请求标识 DWORD m_dwLogonTime; //登录时间 DWORD m_dwInoutIndex; //进出索引 //客户类型 protected: bool m_bMobileUser; //手机用户 bool m_bAndroidUser; //机器用户 bool m_bCheatUser; //作弊用户 //辅助变量 protected: bool m_bClientReady; //连接标志 bool m_bModifyScore; //修改标志 TCHAR m_szLogonPass[LEN_PASSWORD]; //用户密码 BYTE m_cbReUserStatus; //还原状态 //系统属性 protected: WORD m_wBindIndex; //绑定索引 DWORD m_dwClientAddr; //连接地址 TCHAR m_szMachineID[LEN_MACHINE_ID]; //机器标识 //组件接口 protected: IServerUserItemSink * m_pIServerUserItemSink; //回调接口 //手机定义 protected: WORD m_wDeskPos; //当前分页 WORD m_wDeskCount; //分页桌数 WORD m_wMobileUserRule; //手机规则 //比赛信息 protected: DWORD m_dwSignUpTime; //报名时间 BYTE m_cbMatchStatus; //比赛状态 VOID * m_pMatchData; //比赛数据 public: static DWORD g_dwCardLibCount; //牌库总数; static BYTE g_cbCardLibEnable; //牌库是否可以使用; static DWORD g_dwLibStartDateTime; //牌库开始使用开始时间; static DWORD g_dwLibEndDateTime; //牌库结束使用开始时间; static DWORD g_dwCardLibCustomCount; //牌库自定义数量; //函数定义 protected: //构造函数 CServerUserItem(); //析构函数 virtual ~CServerUserItem(); //基础接口 public: //释放对象 virtual VOID Release() { delete this; } //接口查询 virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer); //属性信息 public: //绑带索引 virtual WORD GetBindIndex() { return m_wBindIndex; } //用户地址 virtual DWORD GetClientAddr() { return m_dwClientAddr; } //机器标识 virtual LPCTSTR GetMachineID() { return m_szMachineID; } //登录信息 public: //请求标识 virtual DWORD GetDBQuestID() { return m_dwDBQuestID++; } //登录时间 virtual DWORD GetLogonTime() { return m_dwLogonTime; } //记录索引 virtual DWORD GetInoutIndex() { return m_dwInoutIndex; } //用户信息 public: //用户信息 virtual tagUserInfo * GetUserInfo() { return &m_UserInfo; } //用户规则 virtual tagUserRule * GetUserRule() { return &m_UserRule; } //道具信息 virtual tagUserProperty * GetUserProperty() { return &m_UserProperty; }; //时间信息 virtual tagTimeInfo * GetTimeInfo() { return &m_UserInfo.TimerInfo; } //属性信息 public: //用户性别 virtual BYTE GetGender() { return m_UserInfo.cbGender; } //用户标识 virtual DWORD GetUserID() { return m_UserInfo.dwUserID; } //游戏标识 virtual DWORD GetGameID() { return m_UserInfo.dwGameID; } //用户昵称 virtual LPCTSTR GetNickName() { return m_UserInfo.szNickName; } //状态接口 public: //桌子号码 virtual WORD GetTableID() { return m_UserInfo.wTableID; } //椅子号码 virtual WORD GetChairID() { return m_UserInfo.wChairID; } //用户状态 virtual BYTE GetUserStatus() { return m_UserInfo.cbUserStatus; } //权限信息 public: //用户权限 virtual DWORD GetUserRight() { return m_dwUserRight; } //管理权限 virtual DWORD GetMasterRight() { return m_dwMasterRight; } //等级信息 public: //用户权限 virtual BYTE GetMemberOrder() { return m_UserInfo.cbMemberOrder; } //管理权限 virtual BYTE GetMasterOrder() { return m_UserInfo.cbMasterOrder; } //积分信息 public: //用户积分 virtual SCORE GetUserScore() { return m_UserInfo.lScore; } //用户成绩 virtual SCORE GetUserGrade() { return m_UserInfo.lGrade; } //用户银行 virtual SCORE GetUserInsure() { return m_UserInfo.lInsure; } //用户倍数; virtual BYTE getScoreMultiple(); //托管信息 public: //托管积分 virtual SCORE GetTrusteeScore() { return m_lTrusteeScore; } //冻结积分 virtual SCORE GetFrozenedScore() { return m_lFrozenedScore; } //积分信息 public: //用户胜率 virtual WORD GetUserWinRate(); //用户输率 virtual WORD GetUserLostRate(); //用户和率 virtual WORD GetUserDrawRate(); //用户逃率 virtual WORD GetUserFleeRate(); //游戏局数 virtual DWORD GetUserPlayCount() { return m_UserInfo.dwWinCount+m_UserInfo.dwLostCount+m_UserInfo.dwDrawCount+m_UserInfo.dwFleeCount; } //效验接口 public: //对比帐号 virtual bool ContrastNickName(LPCTSTR pszNickName); //对比密码 virtual bool ContrastLogonPass(LPCTSTR pszPassword); //游戏状态 public: //连接状态 virtual bool IsClientReady() { return m_bClientReady; }; //设置连接 virtual VOID SetClientReady(bool bClientReady) { m_bClientReady=bClientReady; } //还原状态 virtual BYTE GetReUserStatus(){ return m_cbReUserStatus; } //设置状态 virtual void SetReUserStatus(BYTE cbReUserStatus) { m_cbReUserStatus = cbReUserStatus; } //手机用户 public: //控制状态 virtual bool IsMobileUser() { return m_bMobileUser; } //设置控制 virtual VOID SetMobileUser(bool bMobileUser) { m_bMobileUser=bMobileUser; } //控制用户 public: //控制状态 virtual bool IsAndroidUser() { return m_bAndroidUser; } //设置控制 virtual VOID SetAndroidUser(bool bAndroidUser) { m_bAndroidUser=bAndroidUser; } //作弊用户 virtual bool IsCheatUser() { return m_bCheatUser; } //设置作弊用户 virtual void SetCheatUser(bool bFlag) { m_bCheatUser = bFlag; } //比赛接口 public: //报名数据 virtual VOID * GetMatchData() { return m_pMatchData; } //报名数据 virtual VOID SetMatchData(VOID * pMatchData) { m_pMatchData=pMatchData; } //报名时间 virtual DWORD GetSignUpTime() { return m_dwSignUpTime; } //报名时间 virtual VOID SetSignUpTime(DWORD dwSignUpTime) { m_dwSignUpTime=dwSignUpTime; } //比赛状态 virtual BYTE GetUserMatchStatus() { return m_cbMatchStatus; } //比赛状态 virtual VOID SetUserMatchStatus(BYTE cbMatchStatus) { m_cbMatchStatus = cbMatchStatus; } //牌库接口 public: //是否可以使用牌库 virtual bool canUseCardLib(); //获取牌库索引 virtual DWORD getCardLibIndex(); //设置牌库索引 virtual void setCardLibIndex(DWORD dwCardLibIndex); //累加牌库索引 virtual void addCardLibIndex(); //设置牌库可用性 virtual void setCardLibEnabled(bool bEnabled); //设置牌库使用时间段 virtual void setUseCardLibTime(DWORD dwStartTime, DWORD dwEndTime); //私人房接口 public: //添加事件 virtual VOID addPrivateAction(DWORD dwAction); //统计私人场玩家局数 virtual VOID addPrivatePlayCout(WORD wCout); //记录接口 public: //变更判断 virtual bool IsVariation() { return m_bModifyScore; } //查询记录 virtual bool QueryRecordInfo(tagVariationInfo & RecordInfo); //提取变更 virtual bool DistillVariation(tagVariationInfo & VariationInfo); //管理接口 public: //设置状态 virtual bool SetUserStatus(BYTE cbUserStatus, WORD wTableID, WORD wChairID); //设置状态不同步到客户端; virtual bool SetUserStatus(BYTE cbUserStatus); //写入积分 virtual bool WriteUserScore(SCORE lScore, SCORE lGrade, SCORE lRevenue, DWORD dwUserMedal, BYTE cbScoreType, BYTE cbNextScoreMultiple, DWORD dwPlayTimeCount); //冻结接口 public: //冻结积分 virtual bool FrozenedUserScore(SCORE lScore); //解冻积分 virtual bool UnFrozenedUserScore(SCORE lScore); //修改接口 public: //修改信息 virtual bool ModifyUserProperty(SCORE lScore, LONG lLoveLiness); //参数接口 public: //解除绑定 virtual bool DetachBindStatus(); //银行操作 virtual bool ModifyUserInsure(SCORE lScore, SCORE lInsure, SCORE lRevenue); //设置参数 virtual bool SetUserParameter(DWORD dwClientAddr, WORD wBindIndex, TCHAR szMachineID[LEN_MACHINE_ID], bool bAndroidUser, bool bClientReady); //修改权限 virtual VOID ModifyUserRight( DWORD dwAddRight, DWORD dwRemoveRight,bool bGameRight=true); //辅助函数 private: //重置数据 VOID ResetUserItem(); //手机定义 public: //手机定义 virtual WORD GetMobileUserRule(){return m_wMobileUserRule;} //设置定义 virtual VOID SetMobileUserRule(WORD wMobileUserRule) { m_wMobileUserRule=wMobileUserRule; } //当前分页 virtual WORD GetMobileUserDeskPos(){return m_wDeskPos;} //当前分页 virtual VOID SetMobileUserDeskPos(WORD wMobileUserDeskPos){m_wDeskPos=wMobileUserDeskPos;} //分页桌数 virtual WORD GetMobileUserDeskCount(){return m_wDeskCount;} //分页桌数 virtual VOID SetMobileUserDeskCount(WORD wMobileUserDeskCount){m_wDeskCount=wMobileUserDeskCount;} }; ////////////////////////////////////////////////////////////////////////////////// //用户索引类 typedef CWHArray CServerUserItemArray; typedef CMap CServerUserItemMap; //用户管理类 class GAME_SERVICE_CLASS CServerUserManager : public IServerUserManager { //用户变量 protected: CServerUserItemMap m_UserIDMap; //用户索引 CServerUserItemArray m_UserItemArray; //用户数组 CServerUserItemArray m_UserItemStore; //存储用户 //组件接口 protected: IServerUserItemSink * m_pIServerUserItemSink; //回调接口 //函数定义 public: //构造函数 CServerUserManager(); //析构函数 virtual ~CServerUserManager(); //基础接口 public: //释放对象 virtual VOID Release() { return; } //接口查询 virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer); //配置函数 public: //设置接口 virtual bool SetServerUserItemSink(IUnknownEx * pIUnknownEx); //查找函数 public: //枚举用户 virtual IServerUserItem * EnumUserItem(WORD wEnumIndex); //查找用户 virtual IServerUserItem * SearchUserItem(DWORD dwUserID); //查找用户 virtual IServerUserItem * SearchUserItem(LPCTSTR pszNickName); //统计函数 public: //在线人数 virtual DWORD GetUserItemCount() { return (DWORD)m_UserItemArray.GetCount(); } //管理函数 public: //删除用户 virtual bool DeleteUserItem(); //删除用户 virtual bool DeleteUserItem(IServerUserItem * pIServerUserItem); //插入用户 virtual bool InsertUserItem(IServerUserItem * * pIServerUserResult, tagUserInfo & UserInfo, tagUserInfoPlus & UserInfoPlus); }; ////////////////////////////////////////////////////////////////////////////////// #endif