Files
dnf-utils/sgutil/sgu_lua_npk_file.h
T
2025-09-02 20:39:30 +08:00

71 lines
1.5 KiB
C++

#pragma once
#include <stdint.h>
#include "libNPK.h"
struct LuaNPKFileItemBaseInfo : public NPK::FileItemBaseInfo
{
const char* c_keyName() const { return keyName.c_str(); }
};
struct LuaNPKFileItemFullInfo : public NPK::FileItemFullInfo
{
const char* c_npkName() const { return npkName.c_str(); }
const char* c_npkBase() const { return npkBase.c_str(); }
const char* c_keyName() const { return keyName.c_str(); }
};
class LuaNPKFileStream
{
public:
const char* name(void) const;
uint32_t size(void) const;
uint32_t read(void* buffer, uint32_t size);
bool seek(uint32_t offset);
uint32_t tell(void) const;
uint32_t crc32(void);
bool isEOF(void) const;
NPK::IFileStream* m_pFileStream = nullptr;
};
class LuaNPKFileList
{
public:
static LuaNPKFileList* createEmpty();
static void destroy(LuaNPKFileList* instance);
public:
int32_t getFileCounts(void) const;
LuaNPKFileItemFullInfo getFileItem(int32_t index) const;
public:
NPK::IFileList* m_pFileList = nullptr;
};
class LuaNPKFile
{
public:
static void registerLuaApi(struct lua_State* L);
static LuaNPKFile* create();
static void destroy(LuaNPKFile* instance);
public:
bool openPakFile(const char* szPackFileName);
bool closePakFile(void);
int32_t getFileCounts(void) const;
LuaNPKFileList* generateFullInfoList();
LuaNPKFileItemBaseInfo getFileNode(int32_t index) const;
LuaNPKFileStream* openFileStream(const char* szFileName);
void closeFileStream(LuaNPKFileStream* fileStream);
public:
NPK::INPKFile* m_pNPKFile = nullptr;
public:
LuaNPKFile();
~LuaNPKFile();
};