1#if PROTOCOL_VERSION > 767
24 throw std::runtime_error(
"Unable to create ConsumeEffectData with id: " + std::to_string(
static_cast<int>(type)) +
".");
31 Data = std::make_shared<ApplyStatusEffectsConsumeEffect>();
34 Data = std::make_shared<ClearAllStatusEffectsConsumeEffect>();
37 Data = std::make_shared<PlaySoundConsumeEffect>();
40 Data = std::make_shared<RemoveStatusEffectsConsumeEffect>();
43 Data = std::make_shared<TeleportRandomlyConsumeEffect>();
47 throw std::runtime_error(
"Unable to create ConsumeEffectData with id: " + std::to_string(
static_cast<int>(Type)) +
".");
57 SetType(ReadData<ConsumeEffectDataType, VarInt>(iter, length));
58 if (GetData() !=
nullptr)
60 GetData()->Read(iter, length);
66 WriteData<ConsumeEffectDataType, VarInt>(GetType(), container);
67 if (GetData() !=
nullptr)
69 GetData()->Write(container);
77 output[std::string(field_name<Type_index>)] = GetType();
78 output[std::string(field_name<Data_index>)] = GetData() ==
nullptr ? Json::Object() : GetData()->
Serialize();
#define DEFINE_NETWORK_TYPE(ClassName)
ConsumeEffect & SetType(const ConsumeEffectDataType type)
virtual Json::Value SerializeImpl() const =0
virtual void WriteImpl(WriteContainer &container) const =0
virtual Json::Value Serialize() const
virtual void ReadImpl(ReadIterator &iter, size_t &length)=0
@ NUM_CONSUME_EFFECT_DATA_TYPES
std::vector< unsigned char > WriteContainer
std::vector< unsigned char >::const_iterator ReadIterator