584 lines
14 KiB
C
584 lines
14 KiB
C
|
|
#pragma once
|
|||
|
|
#include <map>
|
|||
|
|
#include <vector>
|
|||
|
|
class CGlobalVarMgr;
|
|||
|
|
#define BOSSSOCAIL_MUTIPLY 100000
|
|||
|
|
#define BOSS_ID_MUTIPLY 1000
|
|||
|
|
typedef struct tagKillBossCost
|
|||
|
|
{
|
|||
|
|
int nId; //
|
|||
|
|
int nType; //
|
|||
|
|
int nCount;//
|
|||
|
|
tagKillBossCost()
|
|||
|
|
{
|
|||
|
|
memset(this, 0, sizeof(*this));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}KILLBOSSCOST;
|
|||
|
|
typedef struct tagBossOpenConfig
|
|||
|
|
{
|
|||
|
|
int nOpenlevel;//开启等级
|
|||
|
|
int nOpenday;//开放天数
|
|||
|
|
int nId;//boss 计数器id
|
|||
|
|
tagBossOpenConfig()
|
|||
|
|
{
|
|||
|
|
memset(this, 0, sizeof(*this));
|
|||
|
|
}
|
|||
|
|
}BossOpenConfig;
|
|||
|
|
|
|||
|
|
struct BossTimePair
|
|||
|
|
{
|
|||
|
|
int nStartTime;
|
|||
|
|
int nEndTime;
|
|||
|
|
};
|
|||
|
|
//boss信息
|
|||
|
|
typedef struct tagBossConfigInfo
|
|||
|
|
{
|
|||
|
|
int nBossId; //bossid
|
|||
|
|
int nSerial; //
|
|||
|
|
int nTab; //页签类型
|
|||
|
|
int nReborn; //刷新类型
|
|||
|
|
int nMaxNum; //数量
|
|||
|
|
std::vector<int> nReferTime; //刷新时间
|
|||
|
|
int nMapId ;//刷新地图
|
|||
|
|
int nBossX; //x坐标
|
|||
|
|
int nBossY; //y坐标
|
|||
|
|
int nBossRange; //范围
|
|||
|
|
int nNotice; //公告
|
|||
|
|
char nContent[200];// 公告
|
|||
|
|
int nOpenCircle; //转生等级
|
|||
|
|
int nOpenDay;//开服天数
|
|||
|
|
int nDelivery; //传送
|
|||
|
|
int nEndmap;// 飞鞋地图
|
|||
|
|
std::vector<tagKillBossCost> nCosts;//消耗
|
|||
|
|
int nDeliveryX; //传送坐标x
|
|||
|
|
int nDeliveryY;//传送坐标y
|
|||
|
|
int nDeliveryRange; //传送范围
|
|||
|
|
int nDaliyLimit; //每日限制次数
|
|||
|
|
int nDalitStaticId; //计时器id
|
|||
|
|
int nJiontime;//传入时间
|
|||
|
|
int nShowDay;//显示天数
|
|||
|
|
int nFubenId; //副本id
|
|||
|
|
int nLevellimit; // 等级限制
|
|||
|
|
int nBerebornlimit; //转生限制
|
|||
|
|
int nNodeliver;//死亡可传送
|
|||
|
|
int nNoexpel;//boss死亡踢出玩家
|
|||
|
|
int nIsOpen;// 是否开启
|
|||
|
|
int nNpcId;// 是否开启
|
|||
|
|
int nVip;// 是否开启
|
|||
|
|
int nTips;//tips
|
|||
|
|
int nShowwindow;//
|
|||
|
|
BossTimePair* pTimeSlotDetail;//活动时间段
|
|||
|
|
short nTimeSlotCount;
|
|||
|
|
short nTimeSlotIdx;
|
|||
|
|
tagBossConfigInfo()
|
|||
|
|
{
|
|||
|
|
nBossId = 0; //bossid
|
|||
|
|
nSerial = 0;
|
|||
|
|
nTab = 0; //页签类型
|
|||
|
|
nReborn = 0; //刷新类型
|
|||
|
|
nMaxNum = 0; //数量
|
|||
|
|
nReferTime.clear(); //刷新时间
|
|||
|
|
nMapId = 0;//刷新地图
|
|||
|
|
nBossX = 0; //x坐标
|
|||
|
|
nBossY = 0; //y坐标
|
|||
|
|
nBossRange = 0; //范围
|
|||
|
|
nNotice = 0; //公告
|
|||
|
|
memset(&nContent, 0, sizeof(nContent));
|
|||
|
|
nOpenCircle = 0; //转生等级
|
|||
|
|
nOpenDay = 0;//开服天数
|
|||
|
|
nDelivery = 0; //传送
|
|||
|
|
nEndmap = 0;// 飞鞋地图
|
|||
|
|
nCosts.clear();//消耗
|
|||
|
|
nDeliveryX = 0; //传送坐标x
|
|||
|
|
nDeliveryY = 0;//传送坐标y
|
|||
|
|
nDeliveryRange = 0; //传送范围
|
|||
|
|
nDalitStaticId = 0;
|
|||
|
|
nDaliyLimit = 0;
|
|||
|
|
nJiontime = 0;
|
|||
|
|
nShowDay = 0;
|
|||
|
|
nFubenId = 0;
|
|||
|
|
nBerebornlimit = 0;
|
|||
|
|
nVip = 0;
|
|||
|
|
nNodeliver = 0;
|
|||
|
|
nIsOpen = 0;
|
|||
|
|
nNoexpel = 0;
|
|||
|
|
nNpcId = 0;
|
|||
|
|
nTips = 0;
|
|||
|
|
nShowwindow = 0;
|
|||
|
|
pTimeSlotDetail = nullptr;
|
|||
|
|
nTimeSlotCount = 0;
|
|||
|
|
nTimeSlotIdx = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetNextReferTime(int nLastReferTime);
|
|||
|
|
|
|||
|
|
}BOSSCONFIGINFO;
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
typedef struct tagForbiddenAreaCfg
|
|||
|
|
{
|
|||
|
|
int nMapid = 0;//地图id
|
|||
|
|
int nOpenserverDay = 0;//开服天数
|
|||
|
|
int nLimitLv = 0; //等级限制
|
|||
|
|
int nLimitCircle = 0;//转生限制
|
|||
|
|
int nJoinTime = 0;//进入时间
|
|||
|
|
int nLimittimes = 0;//进入次数限制
|
|||
|
|
std::vector<tagKillBossCost> nCosts;//消耗
|
|||
|
|
int nJoinX = 0;//x坐标
|
|||
|
|
int nJoinY = 0;//y坐标
|
|||
|
|
int nRange = 0;//范围
|
|||
|
|
}FORBIDDENAREAN;
|
|||
|
|
//boss成长等级限制条件
|
|||
|
|
typedef struct tagMaxHardLevel
|
|||
|
|
{
|
|||
|
|
int nLimit ;//
|
|||
|
|
int nLimitNum ;//
|
|||
|
|
int nLevel;//
|
|||
|
|
tagMaxHardLevel()
|
|||
|
|
{
|
|||
|
|
memset(this, 0, sizeof(*this));
|
|||
|
|
}
|
|||
|
|
}MAXHARDLEVEL;
|
|||
|
|
//boss成长等级限制条件
|
|||
|
|
typedef struct tagBossMaxHardLevel
|
|||
|
|
{
|
|||
|
|
int nType ;//
|
|||
|
|
std::vector<MAXHARDLEVEL> nGrowLv; //等级
|
|||
|
|
tagBossMaxHardLevel()
|
|||
|
|
{
|
|||
|
|
nType = 0;
|
|||
|
|
nGrowLv.clear();
|
|||
|
|
}
|
|||
|
|
}BOSSMAXHANDLEVEL;
|
|||
|
|
//boss成长线
|
|||
|
|
typedef struct tagBossGrowData
|
|||
|
|
{
|
|||
|
|
int nBossId; //bossid
|
|||
|
|
int nFDropA; //系数A
|
|||
|
|
int nFDropB; //系数B
|
|||
|
|
int nFDropC; //系数C
|
|||
|
|
BOSSMAXHANDLEVEL mHandLvs;
|
|||
|
|
tagBossGrowData()
|
|||
|
|
{
|
|||
|
|
nBossId = 0;
|
|||
|
|
nFDropA = 0;
|
|||
|
|
nFDropB = 0;
|
|||
|
|
nFDropC = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetBuffAddValue(int nBosslv)
|
|||
|
|
{
|
|||
|
|
return 100 + nBosslv*nBosslv*nFDropA + nBosslv*nFDropB + nFDropC;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetBossGrowLv(int OpenserverDay, int nMaxLevel, CGlobalVarMgr* pGGlobVar);
|
|||
|
|
}BOSSGROWDATA;
|
|||
|
|
|
|||
|
|
|
|||
|
|
class CMonsterProvider :
|
|||
|
|
protected CVector<MONSTERCONFIG>,
|
|||
|
|
protected CCustomLogicLuaConfig
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef CVector<MONSTERCONFIG> Inherited;
|
|||
|
|
typedef CCustomLogicLuaConfig Inherited2;
|
|||
|
|
typedef CObjectAllocator<char> CDataAllocator;
|
|||
|
|
static LPCTSTR MonsterCacheFile; //配置数据缓存文件路径
|
|||
|
|
|
|||
|
|
typedef struct tagBossGrowHeader
|
|||
|
|
{
|
|||
|
|
UINT32 uLength;
|
|||
|
|
}BossGrowHeader;
|
|||
|
|
|
|||
|
|
//成长BOSS的成长数据
|
|||
|
|
typedef struct tagBossGrowData
|
|||
|
|
{
|
|||
|
|
INT nMonsterId;
|
|||
|
|
INT nHardLevel;
|
|||
|
|
INT nDeadCount;
|
|||
|
|
}BossGrowData;
|
|||
|
|
|
|||
|
|
//击杀BOSS的时间和角色
|
|||
|
|
typedef struct tagBossFlushTime
|
|||
|
|
{
|
|||
|
|
unsigned int nTime;
|
|||
|
|
ACTORNAME sName;
|
|||
|
|
unsigned int nMyId;
|
|||
|
|
}BOSSFLUSHTIME, *PBOSSFLUSHTIME;
|
|||
|
|
|
|||
|
|
//所有BOSS信息
|
|||
|
|
typedef struct tagBossInfo
|
|||
|
|
{
|
|||
|
|
WORD nId;
|
|||
|
|
byte btType;
|
|||
|
|
WORD nSceneId;
|
|||
|
|
unsigned int nFlushDt;
|
|||
|
|
CVector<BOSSFLUSHTIME> KillList;
|
|||
|
|
}BOSSINFO, *PBOSSINFO;
|
|||
|
|
|
|||
|
|
//野外BOSS(XGame)
|
|||
|
|
typedef struct tagWildBoss
|
|||
|
|
{
|
|||
|
|
WORD nBossId;
|
|||
|
|
WORD nSceneId;
|
|||
|
|
}WILDBOSS, *PWILDBOSS;
|
|||
|
|
|
|||
|
|
//世界BOSS(XGame)
|
|||
|
|
typedef struct tagWorldBoss
|
|||
|
|
{
|
|||
|
|
WORD nBossId;
|
|||
|
|
WORD nSceneId;
|
|||
|
|
}WORLDBOSS, *PWORLDBOSS;
|
|||
|
|
|
|||
|
|
//BOSS击杀信息(普通怪不要用这个)
|
|||
|
|
typedef struct tagBossKill
|
|||
|
|
{
|
|||
|
|
WORD nBossId;
|
|||
|
|
unsigned int nLastKillTime;
|
|||
|
|
}BOSSKILL, *PBOSSKILL;
|
|||
|
|
|
|||
|
|
//BOSS击杀信息(普通怪不要用这个)
|
|||
|
|
public:
|
|||
|
|
CMonsterProvider();
|
|||
|
|
~CMonsterProvider();
|
|||
|
|
|
|||
|
|
//转换函数
|
|||
|
|
inline operator const MONSTERCONFIG* () const
|
|||
|
|
{
|
|||
|
|
CMonsterProvider *pProvider = (CMonsterProvider*)this;
|
|||
|
|
return pProvider->Inherited::operator MONSTERCONFIG*();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:通过怪物ID返回怪物数据
|
|||
|
|
* Param const INT_PTR nId:怪物ID
|
|||
|
|
* @Return const MONSTERCONFIG*: 怪物的数据指针
|
|||
|
|
*/
|
|||
|
|
inline const PMONSTERCONFIG GetMonsterData(const UINT_PTR nId) const
|
|||
|
|
{
|
|||
|
|
//ID为0的
|
|||
|
|
if ( nId <=0 || nId >= UINT_PTR(Inherited::count()) )
|
|||
|
|
return NULL;
|
|||
|
|
else return (PMONSTERCONFIG)&(this->operator const MONSTERCONFIG*()[nId]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inline const PNPCCONFIG GetNpcData(const INT_PTR nId) const
|
|||
|
|
{
|
|||
|
|
if (nId <= 0 || nId > m_npcList.count())
|
|||
|
|
{
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
return &m_npcList[nId-1];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:通过怪物的名称获取配置信息
|
|||
|
|
* Param const INT_PTR nId:
|
|||
|
|
* @Return const PMONSTERCONFIG:
|
|||
|
|
*/
|
|||
|
|
inline const PMONSTERCONFIG GetMonsterDataByName(const char* sName) const
|
|||
|
|
{
|
|||
|
|
//ID为0的
|
|||
|
|
for (int i = 0; i < Inherited::count(); i++)
|
|||
|
|
{
|
|||
|
|
PMONSTERCONFIG ret = (PMONSTERCONFIG)&(this->operator const MONSTERCONFIG*()[i]);
|
|||
|
|
if (strcmp(ret->szName,sName) == 0) return ret;
|
|||
|
|
}
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inline char* GetMonsterNameById(int nId)
|
|||
|
|
{
|
|||
|
|
const PMONSTERCONFIG pConfig = GetMonsterData(nId);
|
|||
|
|
if (pConfig)
|
|||
|
|
{
|
|||
|
|
_asncpytA( sNameNoShowNumber, pConfig->szName);
|
|||
|
|
INT_PTR nLen = strlen(sNameNoShowNumber);
|
|||
|
|
if (nLen > 2)
|
|||
|
|
{
|
|||
|
|
if (sNameNoShowNumber[nLen-1] >='0' && sNameNoShowNumber[nLen-1] <='9')
|
|||
|
|
{
|
|||
|
|
sNameNoShowNumber[nLen-1]=0;
|
|||
|
|
}
|
|||
|
|
if (sNameNoShowNumber[nLen - 2] >= '0' && sNameNoShowNumber[nLen - 2] <='9')
|
|||
|
|
{
|
|||
|
|
sNameNoShowNumber[nLen - 2] = 0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return sNameNoShowNumber;
|
|||
|
|
}
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:获取怪物的数量
|
|||
|
|
* @Return INT_PTR: 怪物的数量
|
|||
|
|
*/
|
|||
|
|
inline INT_PTR count() const{ return Inherited::count(); }
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 从文件里装载怪物的数据
|
|||
|
|
* Param LPCTSTR sFilePath: 路径的名称
|
|||
|
|
* @Return bool: 失败返回false
|
|||
|
|
*/
|
|||
|
|
bool LoadMonsters(LPCTSTR sFilePath, bool bBackLoad = false);
|
|||
|
|
|
|||
|
|
bool LoadBossConfig(LPCTSTR sFilePath);
|
|||
|
|
|
|||
|
|
//boss列表
|
|||
|
|
bool LoaddBossInfoConfig(LPCTSTR sFilePath);
|
|||
|
|
//boss成长
|
|||
|
|
bool LoaddBossGrowConfig();
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:加载npc配置
|
|||
|
|
* Param LPCTSTR sFilePath:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
bool LoadNpcs(LPCTSTR sFilePath);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:从二进制中加载怪成长数据
|
|||
|
|
* @Return bool:成功返回true
|
|||
|
|
*/
|
|||
|
|
bool LoadBossGrowData(LPCTSTR sFilePath);
|
|||
|
|
|
|||
|
|
bool LoaddShenZhuangBossConfig();
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:保存怪成长数据到二进制
|
|||
|
|
* @Return bool:成功返回true
|
|||
|
|
*/
|
|||
|
|
bool SaveBossGrowData(LPCTSTR sFilePath);
|
|||
|
|
|
|||
|
|
void SetBossGrowFlag(bool boFlag)
|
|||
|
|
{
|
|||
|
|
m_bossGrowupHasChange = boFlag;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//清空数据
|
|||
|
|
void ClearBossGrow();
|
|||
|
|
|
|||
|
|
std::map<int, BOSSCONFIGINFO> & GetBossInfoList()
|
|||
|
|
{
|
|||
|
|
return m_bossInfoList;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// CVector<WILDBOSS> & GetWildBossList()
|
|||
|
|
// {
|
|||
|
|
// return m_wildBossList;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// CVector<WORLDBOSS> & GetWorldBossList()
|
|||
|
|
// {
|
|||
|
|
// return m_worldBossList;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
inline BOSSCONFIGINFO * GetBossInfoById(int nId)
|
|||
|
|
{
|
|||
|
|
std::map<int, BOSSCONFIGINFO>::iterator it = m_bossInfoList.find(nId);
|
|||
|
|
if(it != m_bossInfoList.end())
|
|||
|
|
{
|
|||
|
|
return &(it->second);
|
|||
|
|
}
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//获取某个成长BOSS数据
|
|||
|
|
inline BOSSGROWDATA * GetBossGrowDataById(WORD nId)
|
|||
|
|
{
|
|||
|
|
std::map<int, BOSSGROWDATA>::iterator it = m_growBossList.find(nId);
|
|||
|
|
if(it != m_growBossList.end())
|
|||
|
|
{
|
|||
|
|
return &(it->second);
|
|||
|
|
}
|
|||
|
|
return NULL;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//装载野外BOSS
|
|||
|
|
bool LoadWildBossConfig(LPCTSTR sFilePath);
|
|||
|
|
//装载世界BOSS
|
|||
|
|
bool LoadWorldBossConfig(LPCTSTR sFilePath);
|
|||
|
|
|
|||
|
|
void SetBossLastKillTime( WORD nBossId, unsigned int nKillTime );
|
|||
|
|
unsigned int GetBossLastKillTime( WORD nBossId );
|
|||
|
|
|
|||
|
|
//更新后台加载的怪物数据
|
|||
|
|
void UpdateMonsterConfig();
|
|||
|
|
|
|||
|
|
void AddBossTeleCfgTimes(int nId, int nValue)
|
|||
|
|
{
|
|||
|
|
std::map<int, int>::iterator it = m_BossTeleCfg.find(nId);
|
|||
|
|
if(it != m_BossTeleCfg.end())
|
|||
|
|
{
|
|||
|
|
m_BossTeleCfg[nId] += nValue;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
m_BossTeleCfg[nId] = nValue;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int GetBossTeleCfgTimes(int nId)
|
|||
|
|
{
|
|||
|
|
std::map<int, int>::iterator it = m_BossTeleCfg.find(nId);
|
|||
|
|
if(it != m_BossTeleCfg.end())
|
|||
|
|
{
|
|||
|
|
return m_BossTeleCfg[nId];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
protected:
|
|||
|
|
//以下函数为覆盖父类的相关数据处理函数
|
|||
|
|
void showError(LPCTSTR sError);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
//************************************
|
|||
|
|
// Method: completeRead
|
|||
|
|
// FullName: CMonsterProvider::completeRead
|
|||
|
|
// Access: private
|
|||
|
|
// Returns: void
|
|||
|
|
// Qualifier: 读取怪物数据配置完成后,将读取的数据保存到自身中
|
|||
|
|
// Parameter: MONSTERCONFIG * pMonsters
|
|||
|
|
// Parameter: const INT_PTR nMonsterCount
|
|||
|
|
// Parameter: CDataAllocator & dataAllocator
|
|||
|
|
//************************************
|
|||
|
|
void completeRead(MONSTERCONFIG *pMonsters, const INT_PTR nMonsterCount, CDataAllocator &dataAllocator, bool bBackLoad = false);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:装载全部怪物的数据
|
|||
|
|
* @Return bool: 失败返回false
|
|||
|
|
*/
|
|||
|
|
bool ReadAllMonsters();
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 读取一个怪物的数据
|
|||
|
|
* Param CDataAllocator & dataAllocator: 内存分配器
|
|||
|
|
* Param MONSTERCONFIG * oneMonster: 怪物的指针
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
bool ReadOneMonster(CDataAllocator &dataAllocator,MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
bool ReadMonsterSkills( CDataAllocator &dataAllocator,MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:
|
|||
|
|
* Param OneSkillData * oneSkill: 一个技能的数据指针
|
|||
|
|
* @Return bool: 成功返回true ,否则返回false
|
|||
|
|
*/
|
|||
|
|
/*
|
|||
|
|
* Comments:读取怪物的技能
|
|||
|
|
* Param CDataAllocator & dataAllocator:
|
|||
|
|
* Param MONSTERCONFIG * oneMonster:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
//bool ReadMonsterSkills( CDataAllocator &dataAllocator,MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:读取怪物的掉落组
|
|||
|
|
* Param CDataAllocator & dataAllocator:
|
|||
|
|
* Param MONSTERCONFIG * oneMonster:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
bool ReadMonsterDropRroup(CDataAllocator &dataAllocator,MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:读取怪物的属性标志位
|
|||
|
|
* Param CDataAllocator & dataAllocator:
|
|||
|
|
* Param MONSTERCONFIG * oneMonster:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
bool ReadMonsterFlags(CDataAllocator &dataAllocator,MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 读取怪物发言信息
|
|||
|
|
* Param CDataAllocator & dataAllocator
|
|||
|
|
* Param MONSTERCONFIG * oneMonster: 怪物配置
|
|||
|
|
* @Return bool:成功返回true;失败返回false
|
|||
|
|
*/
|
|||
|
|
bool ReadMonsterSayInfo(CDataAllocator &dataAllocator, MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 读取怪物的优先攻击目标列表配置
|
|||
|
|
* Param CDataAllocator & dataAllocator:
|
|||
|
|
* Param MONSTERCONFIG * oneMonster:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
bool ReadMonsterPriorAttackTarget(CDataAllocator &dataAllocator, MONSTERCONFIG *oneMonster);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 读取怪物颜色配置
|
|||
|
|
* Param MONSTERCONFIG * pMonster:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
bool ReadMonsterColor(MONSTERCONFIG *pMonster);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments:预加载
|
|||
|
|
* Param LPCTSTR sFilePath:文件路径
|
|||
|
|
* @Return bool:成功返回true
|
|||
|
|
*/
|
|||
|
|
bool PreLoad(LPCTSTR sFilePath);
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* Comments: 读取怪物的一个掉落
|
|||
|
|
* Param CDataAllocator & dataAllocator:
|
|||
|
|
* Param PDROPGROUP oneDrop:
|
|||
|
|
* @Return bool:
|
|||
|
|
*/
|
|||
|
|
//bool ReadMonsterDrop(CDataAllocator &dataAllocator,PDROPGROUP oneDrop);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
//从缓存文件中读怪物配置数据,如果缓存数据有效且源数据文件未经修改且读取成功则返回true。
|
|||
|
|
bool readCacheData(DWORD dwSrcCRC32);
|
|||
|
|
//将配置数据写入缓存文件中
|
|||
|
|
bool saveCacheData(DWORD dwSrcCRC32);
|
|||
|
|
|
|||
|
|
bool m_bossGrowupHasChange ; //boss升级的是否改变过
|
|||
|
|
private:
|
|||
|
|
CDataAllocator m_DataAllocator; //内存分配器
|
|||
|
|
CDataAllocator m_DataAllocatorBack; // 怪物属性对象申请器(用于后台加载)
|
|||
|
|
CVector<MONSTERCONFIG> m_MonsterBack; // 后台加载的怪物数据
|
|||
|
|
INT_PTR m_nMonsterCount; // 分配的静态怪物对象数量(用于后台加载)
|
|||
|
|
CCSLock m_Lock;
|
|||
|
|
|
|||
|
|
// 怪物属性组
|
|||
|
|
static int s_nPropCount;
|
|||
|
|
static CREATURBATTLEEDATA* s_pPropConfig;
|
|||
|
|
// 怪物标志组
|
|||
|
|
static int s_nFlagCount;
|
|||
|
|
static EntityFlags* s_pFlagConfig;
|
|||
|
|
|
|||
|
|
CVector<NPCCONFIG> m_npcList;
|
|||
|
|
// CVector<BOSSINFO> m_bossInfoList;
|
|||
|
|
// CVector<WILDBOSS> m_wildBossList; //野外BOSS
|
|||
|
|
// CVector<WORLDBOSS> m_worldBossList; //世界BOSS
|
|||
|
|
// CVector<BOSSKILL> m_bossKillList; //BOSS的击杀信息(普通怪不要用这个)
|
|||
|
|
// CVector<BossGrowData> m_growBossList; //成长BOSS列表(配置CanGrowUp = true)
|
|||
|
|
char sNameNoShowNumber[33];
|
|||
|
|
std::map<int, BOSSGROWDATA> m_growBossList; //成长系数
|
|||
|
|
std::map<int, BOSSCONFIGINFO> m_bossInfoList; //boss列表
|
|||
|
|
std::map<int ,int > m_BossTeleCfg;//快传次数配置 --配置很乱统一处理
|
|||
|
|
public:
|
|||
|
|
std::vector<BossOpenConfig> m_openCfgs; //开启动力
|
|||
|
|
// int nOpenlevel;//开启等级
|
|||
|
|
// int nOpenday;//开放天数
|
|||
|
|
// int nId;//神装boss 计数器id
|
|||
|
|
// int nPersonOpenlevel;//个人开启等级
|
|||
|
|
// int nPersonOpenday;//个人开放天数
|
|||
|
|
// int nPersonId;//个人boss 计数器id
|
|||
|
|
};
|