virtual void Deserialize(const CParamNode& paramNode, IDeserializer& deserialize) { Init(paramNode); u32 numEntities; deserialize.NumberU32_Unbounded("num entities", numEntities); for (u32 i = 0; i < numEntities; ++i) { entity_id_t ent; std::string templateName; deserialize.NumberU32_Unbounded("id", ent); deserialize.StringASCII("template", templateName, 0, 256); m_LatestTemplates[ent] = templateName; } }
virtual void Deserialize(const CParamNode& paramNode, IDeserializer& deserialize) { Init(paramNode); // The attack code stores the id so that the projectile gets deleted when it hits the target deserialize.NumberU32_Unbounded("next id", m_NextId); }
void CCmpPathfinder::Deserialize(const CParamNode& paramNode, IDeserializer& deserialize) { Init(paramNode); SerializeVector<SerializeLongRequest>()(deserialize, "long requests", m_AsyncLongPathRequests); SerializeVector<SerializeShortRequest>()(deserialize, "short requests", m_AsyncShortPathRequests); deserialize.NumberU32_Unbounded("next ticket", m_NextAsyncTicket); deserialize.NumberU16_Unbounded("same turn moves count", m_SameTurnMovesCount); }
virtual void Deserialize(const CParamNode& UNUSED(paramNode), IDeserializer& deserialize) { JSContext* cx = GetSimContext().GetScriptInterface().GetContext(); JSAutoRequest rq(cx); u32 numCmds; deserialize.NumberU32_Unbounded("num commands", numCmds); for (size_t i = 0; i < numCmds; ++i) { i32 player; JS::RootedValue data(cx); deserialize.NumberI32_Unbounded("player", player); deserialize.ScriptVal("data", &data); m_LocalQueue.emplace_back(SimulationCommand(player, cx, data)); } }
virtual void Deserialize(const CParamNode& paramNode, IDeserializer& deserialize) { Init(paramNode); deserialize.Bool("in world", m_InWorld); if (m_InWorld) { deserialize.NumberFixed_Unbounded("x", m_X); deserialize.NumberFixed_Unbounded("y", m_Y); deserialize.NumberFixed_Unbounded("z", m_Z); deserialize.NumberFixed_Unbounded("last x", m_LastX); deserialize.NumberFixed_Unbounded("last y diff", m_LastYDifference); deserialize.NumberFixed_Unbounded("last z", m_LastZ); } deserialize.NumberI32_Unbounded("territory", m_Territory); deserialize.NumberFixed_Unbounded("rot x", m_RotX); deserialize.NumberFixed_Unbounded("rot y", m_RotY); deserialize.NumberFixed_Unbounded("rot z", m_RotZ); deserialize.NumberFixed_Unbounded("altitude", m_Y); deserialize.Bool("relative", m_RelativeToGround); deserialize.Bool("floating", m_Floating); deserialize.NumberFixed_Unbounded("constructionprogress", m_ConstructionProgress); // TODO: should there be range checks on all these values? m_InterpolatedRotY = m_RotY.ToFloat(); deserialize.NumberU32_Unbounded("turret parent", m_TurretParent); if (m_TurretParent != INVALID_ENTITY) { deserialize.NumberFixed_Unbounded("x", m_TurretPosition.X); deserialize.NumberFixed_Unbounded("y", m_TurretPosition.Y); deserialize.NumberFixed_Unbounded("z", m_TurretPosition.Z); } if (m_InWorld) UpdateXZRotation(); UpdateMessageSubscriptions(); }