Files
wnmj-normal/Servers/服务器组件/游戏服务/AndroidUserManager.h
2026-03-03 13:56:44 +08:00

174 lines
5.4 KiB
C++

#ifndef ANDROID_USER_MANAGER_HEAD_FILE
#define ANDROID_USER_MANAGER_HEAD_FILE
#pragma once
#include "AfxTempl.h"
#include "AndroidUserItem.h"
#include "GameServiceHead.h"
//////////////////////////////////////////////////////////////////////////////////////
//参数扩展
struct tagAndroidParameterEx
{
//参数变量
tagAndroidParameter AndroidParameter; //机器参数
//标识变量
bool bIsValided; //有效标识
bool bIsLoadAndroid; //加载机器
};
///////////////////////////////////////////////////////////////////////////////////////
//数组数组
typedef CWHArray<CAndroidUserItem *> CAndroidUserItemArray;
typedef CWHArray<tagAndroidParameterEx *> CAndroidParameterArray;
typedef CMap<DWORD,DWORD,CAndroidUserItem *, CAndroidUserItem *> CAndroidUserItemMap;
//typedef CMap<DWORD,DWORD,tagAndroidParameter *, tagAndroidParameter *> CAndroidParameterMap;
//////////////////////////////////////////////////////////////////////////////////
//机器人管理
class GAME_SERVICE_CLASS CAndroidUserManager : public IAndroidUserManager
{
//配置变量
protected:
WORD m_wAutoAndroidCount; //自动数目
//库存变量
protected:
WORD m_wStockCount; //库存数目
tagAndroidItemConfig m_AndroidItemConfig[MAX_ANDROID]; //机器配置
//组件接口
protected:
ITimerEngine * m_pITimerEngine; //时间引擎
IServerUserManager * m_pIServerUserManager; //用户管理
IGameServiceManager * m_pIGameServiceManager; //服务管理
IGameServiceCustomTime * m_pIGameServiceSustomTime; //时间配置
ITCPNetworkEngineEvent * m_pITCPNetworkEngineEvent; //事件接口
IMainServiceFrame * m_pIMainServiceFrame; //调度服务
//服务配置
protected:
bool m_bServiceContinue; //服务延续
DWORD m_dwMinSitInterval; //休息时间
DWORD m_dwMaxSitInterval; //休息时间
//系统配置
protected:
tagGameParameter * m_pGameParameter; //配置参数
tagGameServiceAttrib * m_pGameServiceAttrib; //服务属性
tagGameServiceOption * m_pGameServiceOption; //服务配置
tagGameMatchOption * m_pGameMatchOption; //比赛配置
//用户数组
protected:
CAndroidUserItemMap m_AndroidUserItemMap; //用户索引
CAndroidParameterArray m_AndroidParameterArray; //参数数组
CAndroidUserItemArray m_AndroidUserItemArray; //存储对象
CAndroidUserItemArray m_AndroidUserItemBuffer; //空闲对象
//函数定义
public:
//构造函数
CAndroidUserManager();
//析构函数
virtual ~CAndroidUserManager();
//基础接口
public:
//释放对象
virtual VOID Release() { return; }
//接口查询
virtual VOID * QueryInterface(REFGUID Guid, DWORD dwQueryVer);
//控制接口
public:
//启动服务
virtual bool StartService();
//停止服务
virtual bool ConcludeService();
//配置接口
public:
//配置组件
virtual bool InitAndroidUser(tagAndroidUserParameter & AndroidUserParameter);
//移除参数
virtual bool RemoveAndroidParameter(DWORD dwBatchID);
//设置参数
virtual bool AddAndroidParameter(tagAndroidParameter AndroidParameter[], WORD wParameterCount);
//插入机器
virtual bool InsertAndroidInfo(tagAndroidAccountsInfo AndroidAccountsInfo[],WORD wAndroidCount,DWORD dwBatchID);
//管理接口
public:
//删除机器
virtual bool DeleteAndroidUserItem(DWORD dwAndroidID,bool bStockRetrieve);
//查找机器
virtual IAndroidUserItem * SearchAndroidUserItem(DWORD dwUserID, DWORD dwContextID);
//创建机器
virtual IAndroidUserItem * CreateAndroidUserItem(tagAndroidItemConfig & AndroidItemConfig);
//设置接口
VOID SetMainServiceFrame(IMainServiceFrame *pIMainServiceFrame);
//系统事件
public:
//脉冲事件
virtual bool OnEventTimerPulse(DWORD dwTimerID, WPARAM dwBindParameter);
//状态接口
public:
//机器数目
virtual WORD GetAndroidCount() { return (WORD)m_AndroidUserItemMap.GetCount(); }
//库存数目
virtual WORD GetAndroidStock() { return m_wStockCount; }
//加载机器
virtual bool GetAndroidLoadInfo(DWORD & dwBatchID,DWORD & dwLoadCount);
//用户状况
virtual WORD GetAndroidUserInfo(tagAndroidUserInfo & AndroidUserInfo, DWORD dwServiceMode);
//获取房间配置
virtual tagGameServiceOption* GetGameServiceOption() { return m_pGameServiceOption; }
//获取游戏属性
virtual tagGameServiceAttrib* GetGameServiceAttrib() { return m_pGameServiceAttrib; }
//获取比赛配置
virtual tagGameMatchOption* GetGameMatchOption() { return m_pGameMatchOption; }
//网络接口
public:
//发送数据
virtual bool SendDataToClient(WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//发送数据
virtual bool SendDataToClient(DWORD dwAndroidID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//发送数据
virtual bool SendDataToServer(DWORD dwAndroidID, WORD wMainCmdID, WORD wSubCmdID, VOID * pData, WORD wDataSize);
//对象管理
protected:
//释放对象
VOID FreeAndroidUserItem(DWORD dwUserID);
//获取对象
CAndroidUserItem * GetAndroidUserItem(WORD wIndex);
//激活对象
CAndroidUserItem * ActiveAndroidUserItem(tagAndroidItemConfig & AndroidItemConfig);
//强制起立
VOID ForceAndroidUserItemStandup(CAndroidUserItem * pAndroidUserItem);
//辅助函数
protected:
//获取参数
tagAndroidParameterEx * GetAndroidParameter(DWORD dwBatchID);
//获取索引
WORD GetAndroidParameterIndex(tagAndroidParameterEx * pAndroidParameter);
//转换时间
DWORD GetTodayTickCount(SYSTEMTIME & SystemTime);
//服务时间
DWORD BatchServiceRemaindTime(tagAndroidParameter * pAndroidParameter,DWORD dwTodayTickCount);
//等待时间
DWORD BatchServiceAwaitTime(tagAndroidParameter * pAndroidParameter,DWORD dwTodayTickCount);
};
//////////////////////////////////////////////////////////////////////////////////
#endif