KPakData.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //---------------------------------------------------------------------------
  2. // Sword3 Engine (c) 1999-2000 by Kingsoft
  3. //
  4. // File: KPakData.h
  5. // Date: 2000.08.08
  6. // Code: WangWei(Daphnis)
  7. // Desc: Header File
  8. //---------------------------------------------------------------------------
  9. #ifndef KPakData_H
  10. #define KPakData_H
  11. //---------------------------------------------------------------------------
  12. #include "KMemClass.h"
  13. #include "KFile.h"
  14. #include "KCodec.h"
  15. //---------------------------------------------------------------------------
  16. // pack file header
  17. typedef struct {
  18. BYTE Signature[8]; // 文件标识 ("PACKAGE")
  19. DWORD FilesInPack; // 包中的文件总数
  20. DWORD CompressMethod; // 使用的压缩算法
  21. } TPakFileHeader;
  22. // pack file index 
  23. typedef struct {
  24. DWORD FileId; // 32bit Id值
  25. DWORD FileOffset; // 文件在包中的偏移
  26. DWORD FileLength; // 文件的原始长度
  27. } TPakFileIndex;
  28. //---------------------------------------------------------------------------
  29. class ENGINE_API KPakData
  30. {
  31. private:
  32. KFile m_File; // PAK文件
  33. KMemClass m_MemIndex; // 索引内存
  34. KCodec* m_pCodec; // 解码器
  35. DWORD m_nFilesInPack; // 包中的文件总数
  36. DWORD m_nCompressMethod; // 压缩算法
  37. public:
  38. KPakData();
  39. ~KPakData();
  40. BOOL Open(LPSTR FileName);
  41. DWORD Read(LPVOID lpBuffer, DWORD dwLength);
  42. DWORD Seek(LONG lOffset, DWORD dwMethod);
  43. DWORD Tell();
  44. void Close();
  45. BOOL Search(LPSTR pFileName, PDWORD pOffset, PDWORD pLen);
  46. BOOL Decode(TCodeInfo* pCodeInfo);
  47. };
  48. //---------------------------------------------------------------------------
  49. #endif