402 lines
11 KiB
C++
402 lines
11 KiB
C++
#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<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 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 |