Files
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

95 lines
2.0 KiB
C++

#pragma once
#include <vector>
#include <map>
typedef struct TagRateCfg
{
/* data */
int nRate; //概率
int nValue; //值
TagRateCfg()
{
memset(this, 0, sizeof(*this));
}
}RateCfg;
typedef struct TagBlessRate
{
int nMaxRate; //权重
std::vector<RateCfg> m_RateVectors; //比例
int GetValue()
{
int nRand = wrand(nMaxRate);
// printf("bless rate:%d\n",nRand);
int nSize = m_RateVectors.size();
int nAddRate = 0;
for(int i = 0; i < nSize; i++)
{
nAddRate += m_RateVectors[i].nRate;
if(nRand <= nAddRate)
{
// printf("bless rate:%d, addRate:%d\n",nRand,nAddRate);
return m_RateVectors[i].nValue;
}
}
return 0;
}
TagBlessRate()
{
nMaxRate = 0;
m_RateVectors.clear();
}
}BlessRate;
//祝福升级
typedef struct TagBlessCfg
{
int nLevel; // 等级
int nNeedBlessValue; //当前等级所需祝福油
int nLuckyValue; //当前幸运值
BlessRate m_nRate; //概率
AttriGroup attri; //属性
int m_nDailyCost;//每日
TagBlessCfg()
{
memset(this, 0 ,sizeof(*this));
}
}BlessCfg;
class CBlessCfg :public CLuaConfigBase
{
public:
typedef CLuaConfigBase Inherited;
typedef CObjectAllocator<char> CDataAllocator;
CBlessCfg();
~CBlessCfg();
//装载幸运配置
bool LoadBlessCfg(LPCTSTR sFilePath);
//通过祝福油获取最大等级
BlessCfg* GetBlessCfg(int nBlessValue);
private:
/*
* Comments:装载祝福升级配置
* @Return bool: 失败返回false
*/
bool ReadAllConfig();
/*
* Comments:装载祝福const配置
* @Return bool: 失败返回false
*/
bool ReadBlessConst();
public:
int m_nItemId = 0;//道具id
int m_nDailyCost = 0; //每日扣除点数
std::vector<BlessCfg> m_nBlessVectors; //祝福
CDataAllocator m_DataAllocator;
};