#pragma once #include "RE/P/PipboyValue.h" namespace RE { template class PipboyPrimitiveValue; // Forward declaration for specialization **only** template <> class __declspec(novtable) PipboyPrimitiveValue : public PipboyValue { public: virtual ~PipboyPrimitiveValue() {} // 00 // override virtual void CleanDirtyToGame() override {} // 00 virtual void Serialize([[maybe_unused]] Json::Value* a_json) override {} // 01 virtual void SerializeChanges([[maybe_unused]] BSBinarySerializer& a_serializer, [[maybe_unused]] bool a_fullSerialization) override {} // 03 virtual SERIALIZATION_DATA_TYPE GetType() override { return SERIALIZATION_DATA_TYPE::kUint32; } PipboyPrimitiveValue(std::uint32_t a_value, PipboyValue* a_parentValue) : PipboyValue(a_parentValue), value(a_value) {} void ctor(std::uint32_t a_value, PipboyValue* a_parentValue) { using func_t = decltype(&PipboyPrimitiveValue::ctor); static REL::Relocation func{ ID::PipboyPrimitiveValue::uint32::ctor }; func(this, a_value, a_parentValue); } operator std::uint32_t() const { return value; } // members std::uint32_t value; // 18 }; static_assert(sizeof(PipboyPrimitiveValue) == 0x20); template <> class __declspec(novtable) PipboyPrimitiveValue : public PipboyValue { public: virtual ~PipboyPrimitiveValue() {} // 00 // override virtual void CleanDirtyToGame() override {} // 00 virtual void Serialize([[maybe_unused]] Json::Value* a_json) override {} // 01 virtual void SerializeChanges([[maybe_unused]] BSBinarySerializer& a_serializer, [[maybe_unused]] bool a_fullSerialization) override {} // 03 virtual SERIALIZATION_DATA_TYPE GetType() override { return SERIALIZATION_DATA_TYPE::kBool; } PipboyPrimitiveValue(bool a_value, PipboyValue* a_parentValue) : PipboyValue(a_parentValue), value(a_value) {} void ctor(bool a_value, PipboyValue* a_parentValue) { using func_t = decltype(&PipboyPrimitiveValue::ctor); static REL::Relocation func{ ID::PipboyPrimitiveValue::boolean::ctor }; func(this, a_value, a_parentValue); } operator bool() const { return value; } // members bool value; // 18 }; static_assert(sizeof(PipboyPrimitiveValue) == 0x20); }