104 lines
2.7 KiB
C++
104 lines
2.7 KiB
C++
/**
|
|
* @file RDI.hpp
|
|
* @date 04/02/2023
|
|
* @author JackCarterSmith
|
|
* @copyright GPL-v3.0
|
|
* @brief Rogue Data Interface library main entry file.
|
|
*
|
|
*/
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
#include "FileHandler/HOB.h"
|
|
|
|
|
|
#ifndef RDI_HPP_
|
|
#define RDI_HPP_
|
|
|
|
|
|
#if defined(_MSC_VER)
|
|
# define RDI_ABI_EXPORT __declspec(dllexport)
|
|
# define RDI_ABI_IMPORT __declspec(dllimport)
|
|
#elif __GNUC__ >= 4
|
|
# define RDI_ABI_EXPORT __attribute__ ((visibility("default")))
|
|
# define RDI_ABI_IMPORT __attribute__ ((visibility("default")))
|
|
#else
|
|
# define RDI_ABI_EXPORT
|
|
# define RDI_ABI_IMPORT
|
|
#endif
|
|
|
|
#if defined(RDI_DLL)
|
|
# if defined(WIN32)
|
|
# if defined(RDI_DLLBUILD)
|
|
# define RDI_EXTERN RDI_ABI_EXPORT
|
|
# else
|
|
# define RDI_EXTERN RDI_ABI_IMPORT
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef RDI_EXTERN
|
|
# define RDI_EXTERN
|
|
#endif
|
|
|
|
|
|
namespace RDI {
|
|
|
|
/**
|
|
* @brief Errors flags who can be returned by this lib's interfaces.
|
|
* //TODO: Should be removed and use c++ exceptions instead
|
|
*/
|
|
typedef enum e_rdi_result {
|
|
RDI_OK,
|
|
|
|
RDI_ERROR_GENERIC,
|
|
RDI_ERROR_PROCESS,
|
|
RDI_ERROR_MEMORY,
|
|
RDI_ERROR_FILESYSTEM,
|
|
|
|
RDI_ERROR_UNEXPECTED
|
|
} RDI_RESULT;
|
|
|
|
/**
|
|
* @brief Get the current library version.
|
|
* @return String of the version.
|
|
*/
|
|
RDI_EXTERN const std::string RDI_getLibVersion( void ) noexcept;
|
|
|
|
/**
|
|
* @brief Allocate memory and create default structure to access datas.
|
|
* @details Try to open DATA.DAT file at location specified by roguePath.
|
|
* If file can be opened, it's mapped in memory and process files list.
|
|
* @param[in] roguePath Path to DATA.DAT and DATA.HDR location.
|
|
*/
|
|
RDI_EXTERN void RDI_Init( std::string roguePath );
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Erso specific methods */
|
|
RDI_EXTERN const unsigned char RDI_getSectionCount( void );
|
|
RDI_EXTERN const std::string RDI_getSectionName( unsigned char id );
|
|
RDI_EXTERN const unsigned int RDI_getSectionOffset( unsigned char id );
|
|
|
|
RDI_EXTERN const unsigned int RDI_getDirectoryElementCount( std::string path );
|
|
RDI_EXTERN const std::vector<std::string> RDI_getDirectoryElements( std::string path );
|
|
RDI_EXTERN const bool RDI_isElementDirectory( std::string path );
|
|
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Krennic specific methods */
|
|
RDI_EXTERN const std::vector<std::string> RDI_getLevelsName( void );
|
|
RDI_EXTERN const std::vector<std::string> RDI_getModelsName( void );
|
|
RDI_EXTERN const std::vector<std::string> RDI_getTexturesName( void );
|
|
RDI_EXTERN const std::vector<std::string> RDI_getMusicsName( void );
|
|
|
|
RDI_EXTERN HOB* RDI_getModel( std::string modelName );
|
|
|
|
|
|
/**
|
|
* @brief Clean up global resources.
|
|
*/
|
|
RDI_EXTERN void RDI_CleanUp( void );
|
|
}
|
|
|
|
#endif /* RDI_HPP_ */
|