本文整理汇总了C++中PropStream::SKIP_N方法的典型用法代码示例。如果您正苦于以下问题:C++ PropStream::SKIP_N方法的具体用法?C++ PropStream::SKIP_N怎么用?C++ PropStream::SKIP_N使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PropStream
的用法示例。
在下文中一共展示了PropStream::SKIP_N方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadFromOtb
//.........这里部分代码省略.........
if (!stream.GET_STRUCT(lb2)) {
return ERROR_INVALID_FORMAT;
}
lightLevel = lb2->lightLevel;
lightColor = lb2->lightColor;
break;
}
case ITEM_ATTR_TOPORDER: {
if (datalen != sizeof(uint8_t)) {
return ERROR_INVALID_FORMAT;
}
if (!stream.GET_UCHAR(alwaysOnTopOrder)) {
return ERROR_INVALID_FORMAT;
}
break;
}
case ITEM_ATTR_WAREID: {
if (datalen != sizeof(uint16_t)) {
return ERROR_INVALID_FORMAT;
}
if (!stream.GET_USHORT(wareId)) {
return ERROR_INVALID_FORMAT;
}
break;
}
default: {
//skip unknown attributes
if (!stream.SKIP_N(datalen)) {
return ERROR_INVALID_FORMAT;
}
break;
}
}
}
if (reverseItemMap.find(clientId) == reverseItemMap.end()) {
reverseItemMap[clientId] = serverId;
}
// store the found item
if (serverId >= items.size()) {
items.resize(serverId + 1);
}
ItemType& iType = items[serverId];
iType.group = (itemgroup_t)type;
switch (type) {
case ITEM_GROUP_CONTAINER:
iType.type = ITEM_TYPE_CONTAINER;
break;
case ITEM_GROUP_DOOR:
//not used
iType.type = ITEM_TYPE_DOOR;
break;
case ITEM_GROUP_MAGICFIELD:
//not used
iType.type = ITEM_TYPE_MAGICFIELD;
break;
case ITEM_GROUP_TELEPORT:
//not used
示例2: loadFromOtb
//.........这里部分代码省略.........
iType->defence = wb2->defence;
break;
}
case ITEM_ATTR_AMU2:
{
if(datalen != sizeof(amuBlock2))
return ERROR_INVALID_FORMAT;
amuBlock2* ab2;
if(!props.GET_STRUCT(ab2))
return ERROR_INVALID_FORMAT;
iType->weaponType = WEAPON_AMMO;
iType->shootType = translateOTBShootType((ShootTypeOtb_t)ab2->shootType);
iType->amuType = (Ammo_t)ab2->amuType;
iType->attack = ab2->attack;
break;
}
case ITEM_ATTR_ARMOR2:
{
if(datalen != sizeof(armorBlock2))
return ERROR_INVALID_FORMAT;
armorBlock2* ab2;
if(!props.GET_STRUCT(ab2))
return ERROR_INVALID_FORMAT;
iType->armor = ab2->armor;
iType->weight = ab2->weight;
//ignore this value
//iType->slot_position = (slots_t)ab2.slot_position;
break;
}
case ITEM_ATTR_WRITEABLE3:
{
if(datalen != sizeof(writeableBlock3))
return ERROR_INVALID_FORMAT;
writeableBlock3* wb3;
if(!props.GET_STRUCT(wb3))
return ERROR_INVALID_FORMAT;
iType->readOnlyId = wb3->readOnlyId;
iType->maxTextLen = wb3->maxTextLen;
break;
}
case ITEM_ATTR_LIGHT2:
{
if(datalen != sizeof(lightBlock2))
return ERROR_INVALID_FORMAT;
lightBlock2* lb2;
if(!props.GET_STRUCT(lb2))
return ERROR_INVALID_FORMAT;
iType->lightLevel = lb2->lightLevel;
iType->lightColor = lb2->lightColor;
break;
}
case ITEM_ATTR_TOPORDER:
{
if(datalen != sizeof(unsigned char))
return ERROR_INVALID_FORMAT;
if(!props.GET_UCHAR(iType->alwaysOnTopOrder))
return ERROR_INVALID_FORMAT;
break;
}
default:
//skip unknown attributes
if(!props.SKIP_N(datalen))
return ERROR_INVALID_FORMAT;
break;
}
}
//get rune mag level from spells.xml
if(iType->group == ITEM_GROUP_RUNE){
/*
std::map<unsigned short, Spell*>::iterator it = spells.getAllRuneSpells()->find(iType->id);
if(it != spells.getAllRuneSpells()->end()){
iType->runeMagLevel = it->second->getMagLv();
}
else{
iType->runeMagLevel = 0;
}
*/
}
// store the found item
items[iType->id] = iType;
//revItems[iType->clientId] = iType->id;
node = f.getNextNode(node, type);
}
return ERROR_NONE;
}