|
- #ifndef SERVER_USER_MANAGER_HEAD_FILE
- #define SERVER_USER_MANAGER_HEAD_FILE
-
- #pragma once
-
- #include "AfxTempl.h"
- #include "GameServiceHead.h"
- #include <string>
-
- //////////////////////////////////////////////////////////////////////////////////
-
- //用户信息
- 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_dwDBQuestID; //请求标识
- DWORD m_dwLogonTime; //登录时间
- DWORD m_dwInoutIndex; //进出索引
-
- //客户类型
- protected:
- bool m_bMobileUser; //手机用户
- bool m_bAndroidUser; //机器用户
-
- //比赛信息
- protected:
- DWORD m_dwSignUpTime; //报名时间
- BYTE m_cbSignUpStatus; //报名状态
- VOID * m_pMatchData; //比赛数据
-
- //辅助变量
- protected:
- bool m_bTrusteeUser; //系统托管
- bool m_bClientReady; //连接标志
- bool m_bModifyScore; //修改标志
- TCHAR m_szLogonPass[LEN_PASSWORD]; //用户密码
-
- //系统属性
- 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; //手机规则
- WORD m_szMachineType; //机器类型
- //函数定义
- 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 GetLastTableID() { return m_UserInfo.wLastTableID; }
- //椅子号码
- virtual WORD GetChairID() { return m_UserInfo.wChairID; }
- //设置椅子号码
- virtual VOID SetChairID(WORD chairID) { m_UserInfo.wChairID = chairID; }
- //用户状态
- 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; }
-
- //托管信息
- 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 IsTrusteeUser() { return m_bTrusteeUser; }
- //设置状态
- virtual VOID SetTrusteeUser(bool bTrusteeUser) { m_bTrusteeUser = bTrusteeUser; }
-
- //游戏状态
- public:
- //连接状态
- virtual bool IsClientReady() { return m_bClientReady; };
- //设置连接
- virtual VOID SetClientReady(bool bClientReady) { m_bClientReady = bClientReady; }
-
- //手机用户
- 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; }
-
- //比赛接口
- 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 GetSignUpStatus() { return m_cbSignUpStatus; }
- //报名状态
- virtual VOID SetSignUpStatus(BYTE cbSignUpStatus) { m_cbSignUpStatus = cbSignUpStatus; }
-
- //记录接口
- 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, bool bSendState = false);
- //写入积分
- virtual bool WriteUserScore(SCORE lScore, SCORE lGrade, SCORE lRevenue, SCORE lIngot, BYTE cbScoreType, DWORD dwPlayTimeCount, DWORD dwWinExperience);
- //写临时积分记录(私有房间)
- bool WriteUserTmpScoreRecord(SCORE lScore, BYTE cbScoreType, 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, BYTE cbRightKind = UR_KIND_GAME);
-
- //辅助函数
- 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; }
- //器类型
- virtual WORD GetMobileUserMachineType() { return m_szMachineType; }
- //机器类型
- virtual VOID SetMobileUserMachineType(WORD MachineType) { m_szMachineType = MachineType; }
-
- };
-
- //////////////////////////////////////////////////////////////////////////////////
-
- //用户索引类
- typedef CWHArray<CServerUserItem *> CServerUserItemArray;
- typedef CMap<DWORD, DWORD, CServerUserItem *, CServerUserItem *> 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 GetAndroidCount();
- //在线人数
- 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
|