261 lines
7.6 KiB
C++
261 lines
7.6 KiB
C++
|
||
|
||
// #include "stdafx.h"
|
||
|
||
// using namespace wylib::stream;
|
||
|
||
// CItemConfigLoader::CItemConfigLoader()
|
||
// {
|
||
|
||
// }
|
||
|
||
// CItemConfigLoader::~CItemConfigLoader()
|
||
// {
|
||
|
||
// }
|
||
|
||
// bool CItemConfigLoader::LoadFile(LPCTSTR sFilePath)
|
||
// {
|
||
// bool bRet = false;
|
||
// LPCTSTR sResult = NULL;
|
||
// CMemoryStream ms;
|
||
// CCustomLuaPreProcessor pp;
|
||
// try
|
||
// {
|
||
// GetRobotMgr()->GetVSPDefine().RegisteToPreprocessor(pp);
|
||
// if (ms.loadFromFile(sFilePath) <= 0)
|
||
// {
|
||
// showErrorFormat(_T("unable to load config file from %s"), sFilePath);
|
||
// return false;
|
||
// }
|
||
|
||
// sResult = pp.parse((LPCTSTR)ms.getMemory(), sFilePath);
|
||
// if (!sResult)
|
||
// {
|
||
// OutputMsg(rmError, _T("预处理文件%s失败"), sFilePath);
|
||
// return false;
|
||
// }
|
||
// if (!setScript(sResult))
|
||
// {
|
||
// OutputMsg(rmError,_T("读取预处理后的配置文件%s失败"), sFilePath);
|
||
// return false;
|
||
// }
|
||
// bRet = ReadItemConfig();
|
||
// }
|
||
// catch (RefString& s)
|
||
// {
|
||
// OutputMsg(rmError, (LPCTSTR)s);
|
||
// }
|
||
// catch (...)
|
||
// {
|
||
// OutputMsg(rmError, _T("unexcepted error on load config: %s"), sFilePath);
|
||
// }
|
||
// setScript(NULL);
|
||
|
||
// return bRet;
|
||
// }
|
||
|
||
// bool CItemConfigLoader::ReadItemConfig()
|
||
// {
|
||
|
||
|
||
// if (!openGlobalTable("StdItems"))
|
||
// return false;
|
||
|
||
// //获取配置中的物品数量
|
||
// const INT_PTR nItemCount = lua_objlen(m_pLua, -1) + 1;
|
||
// //如果物品数量为0则输出未配置任何物品的错误
|
||
// if (nItemCount <= 0)
|
||
// showError(_T("no item data on StdItem config"));
|
||
// //申请出物品数据并将物品数据内存块清空
|
||
// m_itemList.reserve(nItemCount);
|
||
// m_itemList.trunc(nItemCount);
|
||
// CStdItem *pStdItems = m_itemList;
|
||
// ZeroMemory(pStdItems, sizeof(CStdItem) * nItemCount);
|
||
|
||
// //循环读取物品配置数据
|
||
// if (enumTableFirst()) {
|
||
// INT_PTR nIdx = 1;
|
||
|
||
// do {
|
||
// //读取物品配置数据
|
||
// CStdItem &item = pStdItems[nIdx];
|
||
// readItemData(item);
|
||
// //如果该物品的ID不是期望的值,则输出错误并终止读取
|
||
// if (item.m_nIndex != nIdx) {
|
||
// showErrorFormat(_T("unexpected itemindex %d, request %d"),
|
||
// item.m_nIndex, nIdx);
|
||
// endTableEnum();
|
||
// break;
|
||
// }
|
||
// nIdx++;
|
||
// } while (enumTableNext());
|
||
|
||
|
||
|
||
// }
|
||
|
||
// closeTable();
|
||
// return true;
|
||
// }
|
||
// bool CItemConfigLoader::readItemData(CStdItem &item)
|
||
// {
|
||
// int nDefVal = 0;
|
||
|
||
// item.m_nIndex = getFieldInt("id");
|
||
// getFieldStringBuffer("name", item.m_sName, ArrayCount(item.m_sName));
|
||
// item.m_btType = (BYTE) getFieldInt("type");
|
||
// item.m_wIcon = (WORD) getFieldInt("icon");
|
||
// item.m_wShape = (WORD) getFieldInt("shape");
|
||
// item.m_dwDura = (UINT) getFieldNumber("dura");
|
||
// double nDwDefVal = 0;
|
||
// item.m_dwUseDurDrop = (UINT) getFieldNumber("useDurDrop", &nDwDefVal);
|
||
// item.m_nCDTime = getFieldInt("cdTime", &nDefVal);
|
||
// item.m_wDupCount = (WORD) getFieldInt("dup");
|
||
// item.m_btColGroup = (BYTE) getFieldInt("colGroup");
|
||
// item.m_btDealType = (BYTE) getFieldInt("dealType");
|
||
// item.m_nPrice = getFieldInt("dealPrice");
|
||
// item.m_UseTime = getFieldInt("time");
|
||
// item.m_btSmithId = (BYTE) getFieldInt("smithId", &nDefVal);
|
||
// item.b_btBreakId = (BYTE) getFieldInt("breakId", &nDefVal);
|
||
// item.m_wSuitID = getFieldInt("suitId", &nDefVal); //套装的ID
|
||
// item.b_showQuality = getFieldInt("showQuality", &nDefVal); //显示的品质
|
||
// item.m_nDropBroadcast = getFieldInt("dropBroadcast", &nDefVal);
|
||
// item.w_candidateIconCount = (WORD) getFieldInt("candidateIconCount",
|
||
// &nDefVal); //获取图标
|
||
// item.b_specRing = (BYTE) getFieldInt("specRing", &nDefVal);
|
||
// item.m_btBatchType = (BYTE) getFieldInt("batchType", &nDefVal);
|
||
// item.m_nBatchValue = getFieldInt("batchValue", &nDefVal);
|
||
// item.m_nSillId = getFieldInt("skillID2", &nDefVal);
|
||
// item.m_nConsignType = getFieldInt("consignType", &nDefVal);
|
||
// item.m_DropCount = 0;
|
||
|
||
// nDefVal = -1;
|
||
// item.m_nValidFbId = getFieldInt("validFbId", &nDefVal); // 物品生效的副本ID。默认为-1
|
||
// item.m_nValidSceneId = getFieldInt("validSceneId", &nDefVal);// 物品生效的场景ID。默认为-1
|
||
|
||
// // 读取物品可存在的场景集合
|
||
// item.m_existScenes.nCount = 0;
|
||
// if (feildTableExists("existScenes") && openFieldTable("existScenes"))
|
||
// {
|
||
// INT_PTR count = lua_objlen(m_pLua, -1);
|
||
// item.m_existScenes.nCount = count;
|
||
// item.m_existScenes.pSceneId = (int *) m_DataAllocator.allocObjects(
|
||
// count * sizeof(*(item.m_existScenes.pSceneId)));
|
||
// INT_PTR index = 0;
|
||
// if (count > 0 && enumTableFirst()) {
|
||
// do {
|
||
// int nSceneId = getFieldInt(NULL);
|
||
// if (index < count) {
|
||
// item.m_existScenes.pSceneId[index] = nSceneId;
|
||
// index++;
|
||
// if (nSceneId == -1) // -1表示不限制场景
|
||
// {
|
||
// endTableEnum();
|
||
// break;
|
||
// }
|
||
// } else {
|
||
// endTableEnum();
|
||
// break;
|
||
// }
|
||
// } while (enumTableNext());
|
||
// }
|
||
// closeTable();
|
||
// } else {
|
||
// // 默认不配置表示所有场景都能用
|
||
// item.m_existScenes.nCount = 1;
|
||
// item.m_existScenes.pSceneId = (int *) m_DataAllocator.allocObjects(
|
||
// item.m_existScenes.nCount
|
||
// * sizeof(*(item.m_existScenes.pSceneId)));
|
||
// item.m_existScenes.pSceneId[0] = -1;
|
||
// }
|
||
|
||
// //读取物品静态属性
|
||
// //if (feildTableExists("staitcAttrs") && openFieldTable("staitcAttrs")) {
|
||
// // readItemAttributeTable(dataAllocator, item.m_StaticAttrs);
|
||
// // closeTable();
|
||
// //}
|
||
// ////读取物品品质属性
|
||
// //if (feildTableExists("qualityAttrs") && openFieldTable("qualityAttrs")) {
|
||
// // if (enumTableFirst()) {
|
||
// // nLevel = 0;
|
||
// // do {
|
||
// // readItemAttributeTable(dataAllocator,
|
||
// // item.m_QualityAttrs[nLevel]);
|
||
// // nLevel++;
|
||
// // if (nLevel >= CStdItem::MaxItemQuality) {
|
||
// // endTableEnum();
|
||
// // break;
|
||
// // }
|
||
// // } while (enumTableNext());
|
||
// // }
|
||
// // closeTable();
|
||
// //}
|
||
// ////读取物品强化属性
|
||
// //if (feildTableExists("strongAttrs") && openFieldTable("strongAttrs")) {
|
||
// // if (enumTableFirst()) {
|
||
// // nLevel = 0;
|
||
// // do {
|
||
// // readItemAttributeTable(dataAllocator,
|
||
// // item.m_StrongAttrs[nLevel]);
|
||
// // nLevel++;
|
||
// // if (nLevel >= CStdItem::MaxItemStrong) {
|
||
// // endTableEnum();
|
||
// // break;
|
||
// // }
|
||
// // } while (enumTableNext());
|
||
// // item.m_StrongCount = (BYTE) nLevel;
|
||
// // }
|
||
// // closeTable();
|
||
// //}
|
||
|
||
|
||
// ////读取物品标志属性
|
||
// //if (feildTableExists("flags") && openFieldTable("flags")) {
|
||
// // readItemFlags(item);
|
||
// // closeTable();
|
||
// //}
|
||
// ////读取物品使用条件表
|
||
// if (feildTableExists("conds") && openFieldTable("conds")) {
|
||
// readItemConditionTable(item.m_Conditions);
|
||
// closeTable();
|
||
// }
|
||
// ////读取物品预留配置
|
||
// //if (feildTableExists("reserves") && openFieldTable("reserves")) {
|
||
// // readItemReservesTable(dataAllocator, item.m_Reserves);
|
||
// // closeTable();
|
||
// //}
|
||
|
||
// return true;
|
||
// }
|
||
// bool CItemConfigLoader::readItemConditionTable(CStdItem::ItemUseCondTable &condTable)
|
||
// {
|
||
// condTable.nCount = lua_objlen(m_pLua, -1);
|
||
// if (enumTableFirst()) {
|
||
// CStdItem::ItemUseCondition *pConds;
|
||
// condTable.pConds = pConds =
|
||
// (CStdItem::ItemUseCondition*) m_DataAllocator.allocObjects(
|
||
// sizeof(*condTable.pConds) * condTable.nCount);
|
||
// do {
|
||
// pConds->btCond = getFieldInt("cond");
|
||
// pConds->nValue = getFieldInt("value");
|
||
// pConds++;
|
||
// } while (enumTableNext());
|
||
// }
|
||
// return true;
|
||
// }
|
||
|
||
// const CStdItem * CItemConfigLoader::GetStdItemConfig(int nId )
|
||
// {
|
||
// INT_PTR nCount = m_itemList.count();
|
||
// for (INT_PTR i = 0; i < nCount; i++)
|
||
// {
|
||
// CStdItem* pStdItem = &m_itemList[i];
|
||
// if (pStdItem->m_nIndex == nId)
|
||
// {
|
||
// return pStdItem;
|
||
// }
|
||
// }
|
||
// return NULL;
|
||
// }
|