Ticket #4277: fix_through_serialization.patch

File fix_through_serialization.patch, 1.7 KB (added by wraitii, 8 years ago)
  • source/simulation2/components/CCmpRangeManager.cpp

    diff --git a/source/simulation2/components/CCmpRangeManager.cpp b/source/simulation2/components/CCmpRangeManager.cpp
    index 69245d1..00e65d5 100644
    a b public:  
    421421        SerializeRepetitiveVector<SerializeU16_Unbounded>()(serialize, "dirty visibility", m_DirtyVisibility);
    422422        SerializeVector<SerializeU32_Unbounded>()(serialize, "modified entities", m_ModifiedEntities);
    423423
    424         // We don't serialize m_Subdivision, m_LosPlayerCounts or m_LosTiles
     424        // We don't serialize m_Subdivision or m_LosTiles
    425425        // since they can be recomputed from the entity data when deserializing;
    426426        // m_LosState must be serialized since it depends on the history of exploration
    427427
    public:  
    433433    virtual void Serialize(ISerializer& serialize)
    434434    {
    435435        SerializeCommon(serialize);
     436
     437        serialize.NumberU32_Unbounded("los player count", (u32)m_LosPlayerCounts.size());
     438        for (size_t i = 0; i < m_LosPlayerCounts.size();i++)
     439            SerializeRepetitiveVector<SerializeU16_Unbounded>()(serialize, "los counts", m_LosPlayerCounts[i]);
    436440    }
    437441
    438442    virtual void Deserialize(const CParamNode& paramNode, IDeserializer& deserialize)
    public:  
    445449        m_Deserializing = true;
    446450        ResetDerivedData();
    447451        m_Deserializing = false;
     452
     453        u32 losPlayers = 0;
     454        deserialize.NumberU32_Unbounded("los player count", losPlayers);
     455        m_LosPlayerCounts.resize(losPlayers);
     456        for (size_t i = 0; i < m_LosPlayerCounts.size();i++)
     457            SerializeRepetitiveVector<SerializeU16_Unbounded>()(deserialize, "los counts", m_LosPlayerCounts[i]);
     458
    448459    }
    449460
    450461    virtual void HandleMessage(const CMessage& msg, bool UNUSED(global))