Files

103 lines
2.2 KiB
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
class CAiProvider :
protected CVector<AICONFIG>,
protected CCustomLogicLuaConfig
{
public:
typedef CVector<AICONFIG> Inherited;
typedef CCustomLogicLuaConfig Inherited2;
typedef CObjectAllocator<char> CDataAllocator;
public:
CAiProvider();
~CAiProvider();
//转换函数
inline operator const AICONFIG* () const
{
CAiProvider *pProvider = (CAiProvider*)this;
return pProvider->Inherited::operator AICONFIG*();
}
/*
* Comments:ID返回怪物数据
* Param const INT_PTR nId:ID
* @Return const MONSTERCONFIG*:
*/
inline const PAICONFIG GetAiData(const INT_PTR nId) const
{
//ID为0的
if ( nId <=0 || nId > Inherited::count() )
return NULL;
else return (PAICONFIG)&(this->operator const AICONFIG*()[nId-1]);
}
/*
* Comments:
* @Return INT_PTR:
*/
inline INT_PTR count() const{ return Inherited::count(); }
/*
* Comments:
* Param LPCTSTR sFilePath:
* @Return bool: false
*/
bool LoadAI(LPCTSTR sFilePath);
protected:
//以下函数为覆盖父类的相关数据处理函数
void showError(LPCTSTR sError);
private:
/*
* Comments:
* @Return bool: false
*/
bool ReadAllAI();
/*
* Comments:
* Param CDataAllocator & dataAllocator:
* Param AICONFIG * oneAi: ai指针
* @Return bool:
*/
bool ReadOneAI(CDataAllocator &dataAllocator,AICONFIG *oneAi);
/*
* Comments: AI中的发言配置
* Param CDataAllocator & allocator:
* Param AICONFIG * pAIConfig:
* @Return bool:
*/
bool ReadMonsterTalk(CDataAllocator &allocator, AICONFIG *pAIConfig);
/*
* Comments:
* Param MonsterTalkConfig & cfg:
* @Return void:
*/
void ReadTalkConfigImpl(MonsterTalkConfig &cfg);
/*
* Comments: AI中的怪物移动路径点
* Param CDataAllocator & allocator:
* Param AICONFIG * pAIConfig:
* @Return bool:
*/
bool ReadPathPoints( CDataAllocator &dataAllocator,AICONFIG *pAiConfig);
private:
CDataAllocator m_DataAllocator; //内存分配器
//玩家的宠物洗资质的数据
DataList< DataList<RANDOMATTRTERM> > m_smithData;
};