81 lines
2.1 KiB
C++
81 lines
2.1 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;
|
|
|
|
//write total file content to local disk file, wszFileName(utf8)
|
|
bool writeToDiskFile(const char* wszFileName);
|
|
public:
|
|
NPK::IFileStream* m_pFileStream = nullptr;
|
|
};
|
|
|
|
class LuaNPKFileList
|
|
{
|
|
public:
|
|
static LuaNPKFileList* createEmpty();
|
|
static void destroy(LuaNPKFileList* instance);
|
|
public:
|
|
bool loadListFromFile(const char* wszListFile/*utf8*/, const char* prefix, uint32_t flags, bool bEnableDuplicate);
|
|
bool dumpToLocalFile(const char* wszListFile/*utf8*/, uint32_t flags);
|
|
bool mergeOtherListInto(const LuaNPKFileList* sourceFileList, bool bEnableDuplicate);
|
|
bool applyToLocalNPKFiles(const char* wszNPKBase/*utf8*/);
|
|
|
|
int32_t getFileCounts(void) const;
|
|
LuaNPKFileItemFullInfo getFileItemFromIndex(int32_t index) const;
|
|
LuaNPKFileItemFullInfo getFileItemFromName(const char* szKeyName) const;
|
|
|
|
public:
|
|
NPK::IFileList* m_pFileList = nullptr;
|
|
};
|
|
|
|
class LuaNPKFile
|
|
{
|
|
public:
|
|
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();
|
|
};
|
|
|
|
void registerNPKLuaLibs(struct lua_State* L);
|