#pragma once #include "RE/B/BSTSmartPointer.h" namespace RE { class BSStorage; namespace BSScript { class Array; class IHandleReaderWriter; class Object; class Stack; class Struct; class TypeInfo; namespace Internal { class CodeTasklet; class ReadableStringTable; class ReadableTypeTable; class WritableStringTable; class WritableTypeTable; } class __declspec(novtable) IVMSaveLoadInterface { public: static constexpr auto RTTI{ RTTI::BSScript__IVMSaveLoadInterface }; static constexpr auto VTABLE{ VTABLE::BSScript__IVMSaveLoadInterface }; virtual ~IVMSaveLoadInterface(); // 00 virtual bool SaveGame(BSStorage& a_storage, IHandleReaderWriter const& a_HandleReaderWriter, bool a_flag) = 0; //14307D940 // 01 virtual bool LoadGame(BSStorage const& a_storage, IHandleReaderWriter const& a_HandleReaderWriter, bool& a_flag, bool& b_flag) = 0; //14307D948 // 02 virtual void MarkSaveInvalid(BSStorage& a_storage) = 0; //14307D950 // 03 virtual unsigned short GetSaveGameVersion() const = 0; //14307D958 // 04 virtual void CleanupSave() = 0; //14307D960 // 05 virtual void CleanupLoad() = 0; //14307D968 // 06 virtual void DropAllRunningData() = 0; //14307D970 // 07 virtual std::uint64_t GetSaveHandleForObject(const Object* a_Object) const = 0; //14307D978 // 08 virtual void SetSaveHandleForObject(const Object* a_Object, std::uint64_t) = 0; //14307D980 // 09 virtual bool GetObjectBySaveHandle(std::uint64_t, const TypeInfo& a_TypeInfo, BSTSmartPointer& a_object_pointer) const = 0; //14307D988 // 0A virtual bool GetObjectBySaveHandle(std::uint64_t, BSTSmartPointer& a_object_pointer) const = 0; //14307D990 // 0B virtual std::uint64_t GetSaveHandleForStruct(const Struct* a_Struct) const = 0; //14307D998 // 0C virtual void SetSaveHandleForStruct(const Struct* a_Struct, std::uint64_t) = 0; //14307D9A0 // 0D virtual bool GetStructBySaveHandle(std::uint64_t, BSTSmartPointer& a_object_pointer) const = 0; //14307D9A8 // 0E virtual std::uint64_t GetSaveHandleForArray(const Array* a_Array) const = 0; //14307D9B0 // 0F virtual void SetSaveHandleForArray(const Array* a_Array, std::uint64_t) = 0; //14307D9B8 // 10 virtual bool GetArrayBySaveHandle(std::uint64_t handle, BSTSmartPointer& a_array_pointer) const = 0; //14307D9C0 // 11 virtual bool GetStackByID(unsigned int, BSTSmartPointer& a_stack_pointer) const = 0; //14307D9C8 // 12 virtual const Internal::WritableStringTable& GetWritableStringTable() const = 0; //14307D9D0 // 13 virtual const Internal::WritableStringTable& GetWritableStringTable() = 0; //14307D9D8 // 14 virtual Internal::ReadableStringTable& GetReadableStringTable() const = 0; //14307D9E0 // 15 virtual const Internal::WritableTypeTable& GetWritableTypeTable() const = 0; //14307D9E8 // 16 virtual Internal::WritableTypeTable& GetWritableTypeTable() = 0; //14307D9F0 // 17 virtual const Internal::ReadableTypeTable& GetReadableTypeTable() const = 0; //14307D9F8 // 18 virtual bool CreateEmptyTasklet(Stack* a_Stack, BSTSmartPointer& a_tasklet_pointer) = 0; //14307DA00 // 19 }; static_assert(sizeof(IVMSaveLoadInterface) == 0x8); } }