init
This commit is contained in:
156
server/LogicServer/config/CombatProvider.cpp
Normal file
156
server/LogicServer/config/CombatProvider.cpp
Normal file
@@ -0,0 +1,156 @@
|
||||
#include "StdAfx.h"
|
||||
#include "CombatProvider.h"
|
||||
|
||||
using namespace wylib::stream;
|
||||
|
||||
CCombatRankProvider::CCombatRankProvider()
|
||||
: Inherited(), m_DataAllocator(_T("CombatDataAlloc"))
|
||||
{
|
||||
ZeroMemory(&m_CombatRankConfig,sizeof(m_CombatRankConfig));
|
||||
ZeroMemory(m_CombatGroupList,sizeof(m_CombatGroupList));
|
||||
m_Count = 0;
|
||||
}
|
||||
|
||||
CCombatRankProvider::~CCombatRankProvider()
|
||||
{
|
||||
//m_CombatGroupList.clear();
|
||||
//ZeroMemory(m_CombatGroupList,sizeof(m_CombatGroupList));
|
||||
}
|
||||
|
||||
bool CCombatRankProvider::LoadCombatConfig(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 CombatRanking config"));
|
||||
//读取标准物品配置数据
|
||||
Result = ReadCombatConfigs();
|
||||
}
|
||||
catch (RefString &s)
|
||||
{
|
||||
OutputMsg(rmError, _T("load CombatRanking config error: %s"), s.rawStr());
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
OutputMsg(rmError, _T("unexpected error on load CombatRanking config"));
|
||||
}
|
||||
//销毁脚本虚拟机
|
||||
setScript(NULL);
|
||||
return Result;
|
||||
}
|
||||
|
||||
bool CCombatRankProvider::ReadCombatConfigs()
|
||||
{
|
||||
if ( !openGlobalTable("CombatRankConfig") )
|
||||
return false;
|
||||
|
||||
m_CombatRankConfig.nShouCount = getFieldInt("ClinetShowCount");
|
||||
m_CombatRankConfig.nMaxRankNum = getFieldInt("MaxRankNum");
|
||||
m_CombatRankConfig.nLevLimit = getFieldInt("LevLimit");
|
||||
m_CombatRankConfig.nCircleLimit = getFieldInt("circleLimit");
|
||||
m_CombatRankConfig.nMaxChallangeRecord = getFieldInt("MaxChallangeRecord");
|
||||
m_CombatRankConfig.nMaxChallageTimes = getFieldInt("CanChanllangeTimes");
|
||||
m_CombatRankConfig.nMaxPickTimes = getFieldInt("maxPickCount");
|
||||
m_CombatRankConfig.nMaxCD = getFieldInt("maxCDTime");
|
||||
m_CombatRankConfig.nAddCD = getFieldInt("addCDTime");
|
||||
|
||||
|
||||
LPCSTR tempStr;
|
||||
INT_PTR i = 1;
|
||||
if ( openFieldTable("RankInfo") )
|
||||
{
|
||||
size_t nCount = lua_objlen(m_pLua,-1);
|
||||
|
||||
if (nCount > 0 )
|
||||
{
|
||||
if ( enumTableFirst() )
|
||||
{
|
||||
do
|
||||
{
|
||||
if (i >= enMaxVocCount)
|
||||
{
|
||||
endTableEnum();
|
||||
break;
|
||||
}
|
||||
|
||||
tempStr = getFieldString("RankName");
|
||||
if (tempStr)
|
||||
{
|
||||
_asncpytA(m_CombatRankConfig.sRankInfo[i].nRankName, tempStr);
|
||||
}
|
||||
|
||||
tempStr = getFieldString("RankFile");
|
||||
if (tempStr)
|
||||
{
|
||||
_asncpytA(m_CombatRankConfig.sRankInfo[i].nFileName, tempStr);
|
||||
}
|
||||
|
||||
i++;
|
||||
}while (enumTableNext());
|
||||
}
|
||||
}
|
||||
closeTable();
|
||||
}
|
||||
|
||||
i=0;
|
||||
if ( openFieldTable("PickRule") )
|
||||
{
|
||||
size_t nCount = lua_objlen(m_pLua,-1);
|
||||
|
||||
if (nCount > 0 )
|
||||
{
|
||||
if ( enumTableFirst() )
|
||||
{
|
||||
do
|
||||
{
|
||||
m_CombatGroupList[i].nStartRank = getFieldInt("StartRank");
|
||||
m_CombatGroupList[i].nEndRank = getFieldInt("EndRank");
|
||||
|
||||
if (openFieldTable("PickRange"))
|
||||
{
|
||||
size_t nPickCount = lua_objlen(m_pLua, -1);
|
||||
if (nPickCount > 0)
|
||||
{
|
||||
INT_PTR j = 0;
|
||||
if (enumTableFirst())
|
||||
{
|
||||
do
|
||||
{
|
||||
if (j >= MAXPICKITEMNUM)
|
||||
{
|
||||
endTableEnum();
|
||||
break;
|
||||
}
|
||||
m_CombatGroupList[i].sPickitems[j].nStartPickRank = getFieldInt("StartPick");
|
||||
m_CombatGroupList[i].sPickitems[j].nEndPIckRank = getFieldInt("EndPick");
|
||||
j++;
|
||||
} while (enumTableNext());
|
||||
}
|
||||
}
|
||||
closeTable();
|
||||
}
|
||||
|
||||
i++;
|
||||
m_Count++;
|
||||
}while (enumTableNext());
|
||||
}
|
||||
}
|
||||
closeTable();
|
||||
|
||||
}
|
||||
|
||||
m_DataAllocator.~CObjectAllocator();
|
||||
closeTable();
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user