当前位置: 首页>>代码示例>>C++>>正文


C++ FileStreamPtr::add32方法代码示例

本文整理汇总了C++中FileStreamPtr::add32方法的典型用法代码示例。如果您正苦于以下问题:C++ FileStreamPtr::add32方法的具体用法?C++ FileStreamPtr::add32怎么用?C++ FileStreamPtr::add32使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在FileStreamPtr的用法示例。


在下文中一共展示了FileStreamPtr::add32方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: serialize

void ThingType::serialize(const FileStreamPtr& fin)
{
    for(int i = 0; i < ThingLastAttr; ++i) {
        if(!hasAttr((ThingAttr)i))
            continue;

        int attr = i;
        if(g_game.getClientVersion() >= 780) {
            if(attr == ThingAttrChargeable)
                attr = ThingAttrWritable;
            else if(attr >= ThingAttrWritable)
                attr += 1;
        } else if(g_game.getClientVersion() >= 1010) {
            if(attr == ThingAttrNoMoveAnimation)
                attr = 16;
            else if(attr >= ThingAttrPickupable)
                attr += 1;
        }

        fin->addU8(attr);
        switch(attr) {
            case ThingAttrDisplacement: {
                fin->addU16(m_displacement.x);
                fin->addU16(m_displacement.y);
                break;
            }
            case ThingAttrLight: {
                Light light = m_attribs.get<Light>(attr);
                fin->addU16(light.intensity);
                fin->addU16(light.color);
                break;
            }
            case ThingAttrMarket: {
                MarketData market = m_attribs.get<MarketData>(attr);
                fin->addU16(market.category);
                fin->addU16(market.tradeAs);
                fin->addU16(market.showAs);
                fin->addString(market.name);
                fin->addU16(market.restrictVocation);
                fin->addU16(market.requiredLevel);
                break;
            }
            case ThingAttrUsable:
            case ThingAttrElevation:
            case ThingAttrGround:
            case ThingAttrWritable:
            case ThingAttrWritableOnce:
            case ThingAttrMinimapColor:
            case ThingAttrCloth:
            case ThingAttrLensHelp:
                fin->addU16(m_attribs.get<uint16>(attr));
                break;
            default:
                break;
        };
    }
    fin->addU8(ThingLastAttr);

    fin->addU8(m_size.width());
    fin->addU8(m_size.height());

    if(m_size.width() > 1 || m_size.height() > 1)
        fin->addU8(m_realSize);

    fin->addU8(m_layers);
    fin->addU8(m_numPatternX);
    fin->addU8(m_numPatternY);
    fin->addU8(m_numPatternZ);
    fin->addU8(m_animationPhases);

    if(g_game.getFeature(Otc::GameEnhancedAnimations)) {
        if(m_animationPhases > 1) {
            fin->addU8(m_animation.async ? 0 : 1);
            fin->add32(m_animation.loopCount);
            fin->addU8(m_animation.startIndex);

            for(std::tuple<int, int> frame : m_animation.frames) {
                fin->addU32(std::get<0>(frame));
                fin->addU32(std::get<1>(frame));
            }
        }
    }

    for(uint i = 0; i < m_spritesIndex.size(); i++) {
        if(g_game.getFeature(Otc::GameSpritesU32))
            fin->addU32(m_spritesIndex[i]);
        else
            fin->addU16(m_spritesIndex[i]);
    }
}
开发者ID:Ablankzin,项目名称:otclient,代码行数:90,代码来源:thingtype.cpp


注:本文中的FileStreamPtr::add32方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。