コード例 #1
0
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());
}
コード例 #2
0
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());
}
コード例 #3
0
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;
}
コード例 #4
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
}
コード例 #5
0
 /// deserialize action by reading bytes from stream
 virtual void Deserialize(ByteStream& stream) override
 {
    Action::Deserialize(stream);
    m_uiHealthPoints = stream.Read32();
 }