void EffectValueOrRange::Deserialize(ByteStream& stream) { // read flag Flags8 flags = stream.Read8(); m_bRange = flags.GetBit<0>(); m_bPercent = flags.GetBit<1>(); m_iValues[0] = static_cast<int>(stream.Read32()); if (m_bRange) m_iValues[1] = static_cast<int>(stream.Read32()); }
void AddRemoveObjectMessage::Deserialize(ByteStream& stream) { // list of objects to add size_t iMax = stream.Read32(); m_vecObjectsToAdd.reserve(iMax); for (size_t i=0; i<iMax; i++) { MobilePtr spMobile(new Mobile(Uuid::Null())); spMobile->Deserialize(stream); m_vecObjectsToAdd.push_back(spMobile); } iMax = stream.Read32(); m_vecObjectsToRemove.reserve(iMax); for (size_t i=0; i<iMax; i++) m_vecObjectsToRemove.push_back(stream.ReadUuid()); }
void DamageHealSpellEffectBase::Deserialize(ByteStream& stream) { BaseClass::Deserialize(stream); // read flag Flags8 flags = stream.Read8(); m_bIsInstant = flags.GetBit<0>(); bool bHasDuration = flags.GetBit<1>(); bool bHasTickTime = flags.GetBit<2>(); m_uiDuration = bHasDuration ? stream.Read32() : 0; m_uiTickTime = bHasTickTime ? stream.Read32() : 0; }
void ItemTemplate::Deserialize(ByteStream& stream) { m_uiTemplateId = stream.Read32(); { unsigned char ucItemType = stream.Read8(); if (ucItemType >= itemTypeMax) throw Exception(_T("invalid item type"), __FILE__, __LINE__); m_enItemType = static_cast<T_enItemType>(ucItemType); } { unsigned char ucEquipSlotType = stream.Read8(); if (equipSlotCount > itemTypeMax) throw Exception(_T("invalid equip slot type"), __FILE__, __LINE__); m_enEquipSlotType = static_cast<T_enEquipSlotType>(ucEquipSlotType); } // TODO impl }
/// deserialize action by reading bytes from stream virtual void Deserialize(ByteStream& stream) override { Action::Deserialize(stream); m_uiHealthPoints = stream.Read32(); }