Files
wnmj/Classes/GameFrame/ClientUserManager.h
2026-02-13 14:34:15 +08:00

151 lines
3.8 KiB
C++

#ifndef _CGameUserManager_H_
#define _CGameUserManager_H_
#include <vector>
#include "IUserManagerSink.h"
#include "IClientUserItem.h"
#include "PlatformHeader.h"
//////////////////////////////////////////////////////////////////////////////////
//用户信息
class CClientUserItem : public IClientUserItem
{
//友元定义
friend class CGameUserManager;
//属性变量
protected:
tagUserInfo m_UserInfo; //用户信息
//函数定义
public:
//构造函数
CClientUserItem();
//析构函数
virtual ~CClientUserItem();
//属性接口
public:
//用户信息
virtual tagUserInfo * GetUserInfo() { return &m_UserInfo; }
//头像信息
public:
//头像索引
virtual uint16 GetFaceID() { return m_UserInfo.wFaceID; }
//自定索引
virtual uint32 GetCustomID() { return m_UserInfo.dwCustomID; }
//属性信息
public:
//用户性别
virtual uint8 GetGender() { return m_UserInfo.cbGender; }
//用户标识
virtual uint32 GetUserID() { return m_UserInfo.dwUserID; }
//游戏标识
virtual uint32 GetGameID() { return m_UserInfo.dwGameID; }
//用户昵称
virtual const char* GetNickName() { return m_UserInfo.szNickName; }
//社团名称
virtual const char* GetGroupName() { return m_UserInfo.szGroupName; }
//用户状态
public:
//用户桌子
virtual uint16 GetTableID() { return m_UserInfo.wTableID; }
//用户椅子
virtual uint16 GetChairID() { return m_UserInfo.wChairID; }
//用户状态
virtual uint8 GetUserStatus() { return m_UserInfo.cbUserStatus; }
//积分信息
public:
//积分数值
virtual SCORE GetUserScore() { return m_UserInfo.lScore; }
//设置积分
virtual SCORE SetUserScore(SCORE score){
m_UserInfo.lScore += score;
if (m_UserInfo.lScore < 0)
{
m_UserInfo.lScore = 0;
}
return m_UserInfo.lScore;
}
//银行数值
virtual SCORE GetUserInsure() { return m_UserInfo.lInsureScore; }
virtual SCORE GetUserGrade(){ return m_UserInfo.lGrade; }
};
//用户数组
typedef std::vector<CClientUserItem *> ClientUserItemVector;
//////////////////////////////////////////////////////////////////////////////////
//用户管理
class CGameUserManager
{
//变量定义
protected:
ClientUserItemVector m_UserItemActive; //活动数组
ClientUserItemVector m_PoolItem; //删除数组
//组件接口
protected:
IUserManagerSink * m_pIUserManagerSink; //通知接口
//函数定义
public:
//构造函数
CGameUserManager();
//析构函数
virtual ~CGameUserManager();
void addPool(CClientUserItem * pIClientUserItem);
CClientUserItem * getPool();
//配置接口
public:
//设置接口
virtual bool SetUserManagerSink(IUserManagerSink * pIUserManagerSink);
//管理接口
public:
//重置用户
virtual bool ResetUserItem();
//删除用户
virtual bool DeleteUserItem(IClientUserItem * pIClientUserItem);
//增加用户
virtual IClientUserItem * ActiveUserItem(const tagUserInfo & UserInfo, const tagCustomFaceInfo & CustomFaceInfo);
//更新接口
public:
//更新积分
virtual bool UpdateUserItemScore(IClientUserItem * pIClientUserItem, const tagUserScore * pUserScore);
//更新状态
virtual bool UpdateUserItemStatus(IClientUserItem * pIClientUserItem, const tagUserStatus * pUserStatus);
//更新属性
virtual bool UpdateUserItemAttrib(IClientUserItem * pIClientUserItem, const tagUserAttrib * pUserAttrib);
//查找接口
public:
//枚举用户
virtual IClientUserItem * EnumUserItem(uint16 wEnumIndex);
//查找用户
virtual IClientUserItem * SearchUserByUserID(uint32 dwUserID);
//查找用户
virtual IClientUserItem * SearchUserByGameID(uint32 dwGameID);
//查找用户
virtual IClientUserItem * SearchUserByNickName(const char* pszNickName);
public:
//获得人数
virtual uint32 GetActiveUserCount(){return (uint32)m_UserItemActive.size();}
};
//////////////////////////////////////////////////////////////////////////////////
#endif