1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-23 05:07:46 +00:00
sapphire/deps/datReader/SqPack.cpp

79 lines
1.6 KiB
C++
Raw Normal View History

#include "SqPack.h"
2020-02-02 17:14:59 +11:00
namespace xiv::dat {
enum PlatformId :
uint8_t
{
Win32,
PS3,
PS4
};
2020-02-02 17:14:59 +11:00
struct SqPackHeader
{
char magic[0x8];
PlatformId platformId;
uint8_t padding0[3];
uint32_t size;
uint32_t version;
uint32_t type;
};
2020-02-02 17:14:59 +11:00
struct SqPackIndexHeader
{
uint32_t size;
uint32_t type;
};
}
2020-02-02 17:14:59 +11:00
namespace xiv::utils:: bparse
{
template<>
inline void reorder< xiv::dat::SqPackHeader >( xiv::dat::SqPackHeader& i_struct )
{
for( int32_t i = 0; i < 0x8; ++i )
{
xiv::utils::bparse::reorder( i_struct.magic[ i ] );
}
xiv::utils::bparse::reorder( i_struct.platformId );
xiv::utils::bparse::reorder( i_struct.size );
xiv::utils::bparse::reorder( i_struct.version );
xiv::utils::bparse::reorder( i_struct.type );
}
template<>
inline void reorder< xiv::dat::SqPackIndexHeader >( xiv::dat::SqPackIndexHeader& i_struct )
{
xiv::utils::bparse::reorder( i_struct.size );
xiv::utils::bparse::reorder( i_struct.type );
}
}
using xiv::utils::bparse::extract;
2020-02-02 17:14:59 +11:00
namespace xiv::dat
{
// Open the file
SqPack::SqPack( const std::filesystem::path& path ) :
m_handle( path.string(), std::ios_base::in | std::ios_base::binary )
{
// Extract the header
extract< SqPackHeader >( m_handle );
2020-02-02 17:14:59 +11:00
// Skip until the IndexHeader the extract it
m_handle.seekg( 0x400 );
extract< SqPackIndexHeader >( m_handle );
}
2020-02-02 17:14:59 +11:00
SqPack::~SqPack()
{
}
2020-02-02 17:14:59 +11:00
void SqPack::isBlockValid( uint32_t i_offset, uint32_t i_size, const SqPackBlockHash& i_block_hash )
{
// TODO
}
}