本文整理汇总了C++中CEntityProperty::SetBufAttr方法的典型用法代码示例。如果您正苦于以下问题:C++ CEntityProperty::SetBufAttr方法的具体用法?C++ CEntityProperty::SetBufAttr怎么用?C++ CEntityProperty::SetBufAttr使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CEntityProperty
的用法示例。
在下文中一共展示了CEntityProperty::SetBufAttr方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitProperty
// 清除子背包对象
//void CDBPlayer::ClearSubpackObjMap(long subPos)
//{
//map<long, set<CGUID>>::iterator placeItr = p_GoodsGroup->GetDirtyGoodsMap().find((long)PEI_PACK);
//if(placeItr != p_GoodsGroup->GetDirtyGoodsMap().end())
//{
// set<CGUID>::iterator goodsItr = placeItr->second.begin();
// while( goodsItr != placeItr->second.end() )
// {
// CDBGoods* packGoods = p_GoodsGroup->FindGoods(*goodsItr);
// if(packGoods)
// {
// long pos = packGoods->GetLongAttr(string("position"), 0);
// if(pos == PEI_PACK1+subPos)
// {
// if(!p_GoodsGroup->DelGoods(*goodsItr, (long)PEI_PACK))
// {
// char szPlayerID[128];
// char szGoodsID[128];
// GetExID().tostring(szPlayerID);
// (*goodsItr).tostring(szGoodsID);
// AddLogText("CDBPlayer::ClearSubpackObjMap del goods Err!Player[%s], goods[%s], pos[%d]!", szPlayerID, szGoodsID, pos);
// }
// placeItr->second.erase((*goodsItr));
// break;
// }
// }
// goodsItr++;
// }
// if(placeItr->second.size() == 0) // 已清空
// {
// p_GoodsGroup->GetDirtyGoodsMap().erase(placeItr);
// }
//}
//}
// 初始化属性配置
void CDBPlayer::InitProperty()
{
CDataEntityManager* pdeManager = NULL;
std::map<string, CDataEntityManager*>::iterator itr = GetGame()->GetDBEntityManager()->GetObjAttrDef().find(string("player"));
if(itr != GetGame()->GetDBEntityManager()->GetObjAttrDef().end())
pdeManager = itr->second;
if(pdeManager)
{
CDataEntityManager::EntityPropertyMapItr attrItr = pdeManager->GetEntityPropertyMap().begin();
for(; attrItr != pdeManager->GetEntityPropertyMap().end(); attrItr++)
{
CEntityProperty* pe = m_DataEntityManager.CreateEntityProperty(attrItr->first, attrItr->second->GetDBTableName(), attrItr->second->GetDataType());
if(pe)
{
if(pe->GetDataType() == DATA_OBJECT_TIME)
{
long timeBuf[6] = {0};
timeBuf[0] = 1990;
timeBuf[1] = 1;
timeBuf[2] = 1;
pe->SetBufAttr(0, (void*)&timeBuf[0], sizeof(DWORD)*6);
}
}
}
}
else
{
AddLogText("CDBPlayer::InitProperty() Err,未找到相关配置信息!");
}
}
示例2: InitProperty
// 初始化属性配置
void CDBFactionMember::InitProperty()
{
CDataEntityManager* pdeManager = NULL;
std::map<string, CDataEntityManager*>::iterator itr = GetGame()->GetDBEntityManager()->GetObjAttrDef().find(string("faction_member"));
if(itr != GetGame()->GetDBEntityManager()->GetObjAttrDef().end())
pdeManager = itr->second;
if(pdeManager)
{
CDataEntityManager::EntityPropertyMapItr attrItr = pdeManager->GetEntityPropertyMap().begin();
for(; attrItr != pdeManager->GetEntityPropertyMap().end(); attrItr++)
{
CEntityProperty* ep = m_DataEntityManager.CreateEntityProperty(attrItr->first, attrItr->second->GetDBTableName(), attrItr->second->GetDataType());
if(ep)
{
ep->SetDbFlag(attrItr->second->GetDbFlag());
if(ep->GetDataType() == DATA_OBJECT_TIME)
{
long timeBuf[6] = {0};
timeBuf[0] = 1990;
timeBuf[1] = 1;
timeBuf[2] = 1;
ep->SetBufAttr(0, (void*)&timeBuf[0], sizeof(DWORD)*6);
}
}
}
}
}
示例3: LoadBufferField
//读Buffer
bool CRsDupRgn::LoadBufferField(CBaseDBEntity *pGoods, const char* szFiledName, _RecordsetPtr &rs)
{
if(pGoods == NULL) return false;
try
{
if(rs->GetadoEOF())
{
ReleaseRs(rs);
return false;
}
long lSize=0;
FieldsPtr fldPtr = rs->GetFields();
FieldPtr itemPtr = fldPtr->GetItem(szFiledName);
lSize = itemPtr->ActualSize;
if(lSize > 0)
{
_variant_t varBLOB;
varBLOB = itemPtr->GetChunk(lSize);
BYTE *pBuf=NULL;
SafeArrayAccessData(varBLOB.parray,(void**)&pBuf);
SafeArrayUnaccessData(varBLOB.parray);
// 清空SKILL
CEntityProperty* ep = pGoods->GetDataEntityManager().GetEntityProperty(string(szFiledName));
if(ep)
ep->SetBufAttr(0, pBuf, lSize);
}
}
catch(_com_error e)
{
PrintErr(CStringReading::LoadString(IDS_DBS_RSDUPRGN,STR_DBS_DUPRGN_LOADRGNOBJERR), e);
return false;
}
return true;
}
示例4: Load
void CDBPlayer::Load(long msgid, BYTE* msgBuf, long& msgBufPos, long bufSize)
{
m_mapDirtyAttrData.clear();
WORD attrNum = _GetWordFromByteArray(msgBuf, msgBufPos, bufSize); // 属性种类个数
char varName[1024];
for(int i=0; i<(int)attrNum; i++)
{
//--新格式
//变量名字符串长度(long)
//变量名字符串
//变量类型(long)
//变量数据长度(long)
//变量数据
long varNameLen = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量名字符串长度(long)
_GetStringFromByteArray(msgBuf, msgBufPos, varName, bufSize);//变量名字符串
m_mapDirtyAttrData.insert(string(varName));
long bufType = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量类型(long)
long varBufLen = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量数据长度(long)
CEntityProperty* ep = NULL;
CDataEntityManager::EntityPropertyMapItr itr = GetDataEntityManager().GetEntityPropertyMap().find(varName);
if(itr != GetDataEntityManager().GetEntityPropertyMap().end())
ep = itr->second;
else
{
CDataEntityManager* pdeManager = NULL;
std::map<string, CDataEntityManager*>::iterator itr = GetGame()->GetDBEntityManager()->GetObjAttrDef().find(string("player"));
if(itr != GetGame()->GetDBEntityManager()->GetObjAttrDef().end())
pdeManager = itr->second;
if(pdeManager)
{
CEntityProperty* templateEP = pdeManager->GetEntityProperty(varName);
if(templateEP)
ep = GetDataEntityManager().CreateEntityProperty(varName, templateEP->GetDBTableName(), templateEP->GetDataType());
else
AddLogText("根据属性名[%s]查找属性指针为空!", varName);
}
}
assert(ep != NULL);
switch((DATA_OBJECT_TYPE)bufType)
{
case DATA_OBJECT_TIME:
{
// 6个long值 : 年 月 日 时 分 秒
BYTE timeValue[6*sizeof(DWORD)];
memset(timeValue, 0, 6*sizeof(DWORD));
_GetBufferFromByteArray(msgBuf, msgBufPos, timeValue, 6*sizeof(DWORD), bufSize);
ep->SetBufAttr(0, timeValue, 6*sizeof(DWORD));
}
break;
case DATA_OBJECT_STRING:
{
char varValue[1024];
_GetStringFromByteArray(msgBuf, msgBufPos, varValue, bufSize);//变量数据
ep->SetStringAttr(0, string((char*)varValue));
}
break;
case DATA_OBJECT_FLOAT:
case DATA_OBJECT_LONG:
case DATA_OBJECT_SHORT:
case DATA_OBJECT_ULONG:
case DATA_OBJECT_USHORT:
case DATA_OBJECT_BOOL:
case DATA_OBJECT_CHAR:
case DATA_OBJECT_BYTE:
case DATA_OBJECT_WORD:
case DATA_OBJECT_DWORD:
{
long value = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量数据
ep->SetLongAttr(0, (long)value);
}
break;
case DATA_OBJECT_GUID:
{
CGUID tGUID;
_GetBufferFromByteArray(msgBuf, msgBufPos, tGUID, bufSize);//变量数据
ep->SetGuidAttr(0, tGUID);
}
break;
case DATA_OBJECT_BUFFER:
{
BYTE* buf = new BYTE[varBufLen];
_GetBufferFromByteArray(msgBuf, msgBufPos, buf, varBufLen, bufSize);//变量数据
ep->SetBufAttr(0, buf, varBufLen);
SAFE_DELETE_ARRAY(buf);
}
break;
}
}
}
示例5: InitProperty
// 初始化属性配置
void CEntityGroup::InitProperty()
{
CEntityManager::AttrDefMap& mapAttrDef = GetGame()->GetEntityManager()->GetObjAttrDef();
CEntityManager::AttrDefMapItr itr = mapAttrDef.find(GetCompositeFlag());
if(itr != mapAttrDef.end())
{
// 初始化属性变量
tagEntityBuildInfo* pInfo = itr->second;
if(!pInfo) return;
map<string, tagEntityAttrInfo>::iterator daEpItr = itr->second->pDataMgr.begin();
for(; daEpItr != itr->second->pDataMgr.end(); daEpItr++)
{
m_DataEntityManager.CreateEntityProperty(daEpItr->second.lAttrTypeEnum);
}
// 初始化数据
m_lLeafComFlag = pInfo->strLeafComFlag;
m_lLeafComType = pInfo->lLeafComType;
m_bHasDetailLeavesFlag = pInfo->lHasDetailLeaves;
m_CompositeType = (COMPOSITE_TYPE)pInfo->lComType;
m_bHasAttrs = pInfo->lHhasAttrFlag;
m_strDetailComPositeFlagName = pInfo->strDbQueryName;
m_lDetailComPositeFlagType = pInfo->lDbQueryType;
if(m_lDetailComPositeFlagType != -1) // 有分散类型
{
long lQueryAttrType = GetGame()->GetEntityManager()->GetAttrEnumByStr(pInfo->strComFlag, pInfo->strDbQueryName);
CEntityProperty* pEP = m_DataEntityManager.CreateEntityProperty(lQueryAttrType);
if(pEP)
{
switch((DATA_OBJECT_TYPE)pInfo->lDbQueryType)
{
case DATA_OBJECT_TIME:
{
pEP->SetBufAttr(((void*)&pInfo->pQueryVar[0]), 6*sizeof(DWORD));
}
break;
case DATA_OBJECT_STRING:
{
pEP->SetStringAttr(string((char*)&pInfo->pQueryVar[0]));
}
break;
case DATA_OBJECT_BUFFER:
{
pEP->SetBufAttr(((void*)&pInfo->pQueryVar[0]), 6*sizeof(DWORD));
}
break;
case DATA_OBJECT_GUID:
{
CGUID bguid;
memcpy(&bguid, pInfo->pQueryVar, sizeof(CGUID));
pEP->SetGuidAttr(bguid);
}
break;
case DATA_OBJECT_BOOL:
case DATA_OBJECT_CHAR:
case DATA_OBJECT_BYTE:
case DATA_OBJECT_SHORT:
case DATA_OBJECT_WORD:
case DATA_OBJECT_USHORT:
case DATA_OBJECT_FLOAT:
case DATA_OBJECT_LONG:
case DATA_OBJECT_ULONG:
case DATA_OBJECT_DWORD:
{
long lVar = *((long*)&pInfo->pQueryVar[0]);
pEP->SetLongAttr(lVar);
}
break;
}
}
}
// 初始化结构
map<string, tagBuildFileInfo*>::iterator leafItr = pInfo->mapBuildFileInfo.begin();
for(; leafItr != pInfo->mapBuildFileInfo.end(); leafItr++)
{
tagBuildFileInfo* leafInfo = leafItr->second;
CEntityGroup* pLeaf = new CEntityGroup(leafInfo->strLeafComFlag, leafInfo->leafGuid);
if(pLeaf)
{
AddChild(pLeaf);
pLeaf->InitProperty();
}
}
}
}
示例6: GetFromByteArray
void CEntityGroup::GetFromByteArray(BYTE* msgBuf, long& msgBufPos, long bufSize)
{
QueryDataRelease();
RetQueryDataRelease();
// 查询变量
long lQueryAttrNum = _GetWordFromByteArray(msgBuf, msgBufPos, bufSize);
for(int j=0; j<lQueryAttrNum; j++)
{
char szQueryStrName[128];
_GetStringFromByteArray(msgBuf, msgBufPos, szQueryStrName, bufSize);
DATA_OBJECT_TYPE objType = (DATA_OBJECT_TYPE)_GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量类型(long)
long lQueryBufSize = _GetLongFromByteArray(msgBuf, msgBufPos, bufSize);
CTempEntityProperty* pEP = new CTempEntityProperty(szQueryStrName, objType);
if(pEP)
{
switch(objType)
{
case DATA_OBJECT_BUFFER:
{
if(lQueryBufSize>0)
{
BYTE* queryBuf = new BYTE[lQueryBufSize];
_GetBufferFromByteArray(msgBuf, msgBufPos, queryBuf, lQueryBufSize, bufSize);
pEP->SetBufAttr(queryBuf, lQueryBufSize);
SAFE_DELETE_ARRAY(queryBuf);
}
}
break;
case DATA_OBJECT_STRING:
{
char szValue[128];
memset(szValue, 0, sizeof(szValue));
_GetStringFromByteArray(msgBuf, msgBufPos, szValue, bufSize);
pEP->SetStringAttr(string(szValue));
}
break;
case DATA_OBJECT_GUID:
{
CGUID tGuid;
_GetBufferFromByteArray(msgBuf, msgBufPos, tGuid, bufSize);
pEP->SetGuidAttr(tGuid);
}
break;
case DATA_OBJECT_BOOL:
case DATA_OBJECT_CHAR:
case DATA_OBJECT_BYTE:
case DATA_OBJECT_SHORT:
case DATA_OBJECT_WORD:
case DATA_OBJECT_USHORT:
case DATA_OBJECT_FLOAT:
case DATA_OBJECT_LONG:
case DATA_OBJECT_ULONG:
case DATA_OBJECT_DWORD:
{
pEP->SetLongAttr(_GetLongFromByteArray(msgBuf, msgBufPos, bufSize));
}
break;
}
DB_RELATE_TYPE relateType = (DB_RELATE_TYPE)_GetByteFromByteArray(msgBuf, msgBufPos, bufSize);
pEP->SetDbRelateType(relateType);
m_pQueryDataMgr.push_back(pEP);
}
}
// 查询返回的变量
lQueryAttrNum = _GetWordFromByteArray(msgBuf, msgBufPos, bufSize);
for(int j=0; j<lQueryAttrNum; j++)
{
char szQueryStrName[128];
_GetStringFromByteArray(msgBuf, msgBufPos, szQueryStrName, bufSize);
DATA_OBJECT_TYPE objType = (DATA_OBJECT_TYPE)_GetLongFromByteArray(msgBuf, msgBufPos, bufSize);//变量类型(long)
CTempEntityProperty* pEP = new CTempEntityProperty(szQueryStrName, objType);
if(pEP)
{
switch(objType)
{
case DATA_OBJECT_STRING:
{
char szValue[128];
memset(szValue, 0, sizeof(szValue));
_GetStringFromByteArray(msgBuf, msgBufPos, szValue, bufSize);
pEP->SetStringAttr(string(szValue));
}
break;
case DATA_OBJECT_GUID:
{
CGUID tGuid;
_GetBufferFromByteArray(msgBuf, msgBufPos, tGuid, bufSize);
pEP->SetGuidAttr(tGuid);
}
break;
case DATA_OBJECT_BOOL:
case DATA_OBJECT_CHAR:
case DATA_OBJECT_BYTE:
case DATA_OBJECT_SHORT:
case DATA_OBJECT_WORD:
case DATA_OBJECT_USHORT:
case DATA_OBJECT_FLOAT:
//.........这里部分代码省略.........