init
This commit is contained in:
106
server/LogicServer/config/ReviveDurationProvider.cpp
Normal file
106
server/LogicServer/config/ReviveDurationProvider.cpp
Normal file
@@ -0,0 +1,106 @@
|
||||
#include "StdAfx.h"
|
||||
#include "ReviveDurationProvider.h"
|
||||
|
||||
CReviveDurationProvider::CReviveDurationProvider()
|
||||
: Inherited(), m_DataAllocator(_T("ReviveDurationAlloc"))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
CReviveDurationProvider::~CReviveDurationProvider()
|
||||
{
|
||||
}
|
||||
|
||||
bool CReviveDurationProvider::LoadReviveDurationConfig(LPCTSTR sFilePath)
|
||||
{
|
||||
bool Result = false;
|
||||
CMemoryStream ms;
|
||||
CCustomLuaPreProcessor pp;
|
||||
|
||||
try
|
||||
{
|
||||
//从文件加载配置脚本
|
||||
if ( ms.loadFromFile(sFilePath) <= 0 )
|
||||
showErrorFormat(_T("unable to load from %s"), sFilePath);
|
||||
//对配置脚本进行预处理
|
||||
GetLogicServer()->GetVSPDefine().RegisteToPreprocessor(pp);
|
||||
LPCTSTR sText = pp.parse((LPCTSTR)ms.getMemory(), sFilePath);
|
||||
//设置脚本内容
|
||||
if ( !setScript(sText) )
|
||||
showError(_T("syntax error on ReviveDuration config"));
|
||||
Result = readConfigs();
|
||||
}
|
||||
catch (RefString &s)
|
||||
{
|
||||
OutputMsg(rmError, _T("load ReviveDuration config error: %s"), s.rawStr());
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
OutputMsg(rmError, _T("unexpected error on load ReviveDuration config"));
|
||||
}
|
||||
//销毁脚本虚拟机
|
||||
setScript(NULL);
|
||||
return Result;
|
||||
}
|
||||
|
||||
bool CReviveDurationProvider::readConfigs()
|
||||
{
|
||||
if ( !openGlobalTable("ReviveDurationConfig") )
|
||||
return false;
|
||||
CDataAllocator dataAllocator;
|
||||
size_t nConfigCount = lua_objlen(m_pLua,-1);
|
||||
if (enumTableFirst())
|
||||
{
|
||||
int nDefInt = 0;
|
||||
int nIdx = 0;
|
||||
m_ReviveDurationsCount = (int)nConfigCount;
|
||||
m_ReviveDurationsConfig = (OneReviveDurationConfig*)dataAllocator.allocObjects(sizeof(OneReviveDurationConfig)*nConfigCount);
|
||||
int bInt = 0;
|
||||
do
|
||||
{
|
||||
OneReviveDurationConfig &item = m_ReviveDurationsConfig[nIdx];
|
||||
item.nReviveDurationId = getFieldInt("id", &nDefInt);
|
||||
item.nReviveDurationTime = getFieldInt("reviveduration", &nDefInt);
|
||||
getFieldStringBuffer(("tips"), item.sTip, sizeof(item.sTip));
|
||||
nIdx++;
|
||||
} while (enumTableNext());
|
||||
}
|
||||
closeTable();
|
||||
m_DataAllocator.~CObjectAllocator();
|
||||
m_DataAllocator = dataAllocator;
|
||||
ZeroMemory(&dataAllocator, sizeof(dataAllocator));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void CReviveDurationProvider::showError(LPCTSTR sError)
|
||||
{
|
||||
m_sLastErrDesc = sError;
|
||||
RefString s = _T("[InVestMentProvider]");
|
||||
s += sError;
|
||||
throw s;
|
||||
}
|
||||
|
||||
OneReviveDurationConfig* CReviveDurationProvider::GetReviveDurationConfig(WORD wId) const
|
||||
{
|
||||
for (int i = 0; i < m_ReviveDurationsCount; i++)
|
||||
{
|
||||
if (wId == m_ReviveDurationsConfig[i].nReviveDurationId)
|
||||
{
|
||||
return &m_ReviveDurationsConfig[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool CReviveDurationProvider::IsTimeReviveDuration( WORD wId )
|
||||
{
|
||||
for (int i=0; i< m_ReviveDurationsCount; i++)
|
||||
{
|
||||
if (wId == m_ReviveDurationsConfig[i].nReviveDurationId)
|
||||
{
|
||||
return m_ReviveDurationsConfig[i].nReviveDurationTime > 0;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user