PackFileManager.h
上传用户:wymy58
上传日期:2007-01-07
资源大小:2086k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // Copyright (C) 1998-1999 DXGuide.  All Rights Reserved.
  2. // File: PackFileManager.h
  3. #ifndef _PACKFILEMANAGER__H
  4. #define _PACKFILEMANAGER__H
  5. #if _MSC_VER >= 1000
  6. #pragma once
  7. #endif // _MSC_VER >= 1000
  8. #include "PackFileManagerBaseClass.h"
  9. #include "FastFileManager.h"
  10. #include "DirectoryFileManager.h"
  11. #include "ZipFileManager.h"
  12. enum PackFileManagerType
  13. {
  14. PACKFILEMANAGER_AUTO = -1,
  15. PACKFILEMANAGER_NONE = 0,
  16. PACKFILEMANAGER_FASTFILE,
  17. PACKFILEMANAGER_DIRECTORYFILE,
  18. PACKFILEMANAGER_ZIPFILE,
  19. };
  20. class CPackFileManager
  21. {
  22. friend class CPackFile;
  23. public:
  24. CPackFileManager(void);
  25. virtual ~CPackFileManager();
  26. public:
  27. bool Load(LPCTSTR  lpszName);
  28. CPackFileManager::PackFileManagerType GetPackFileManagerType(void) const;
  29. protected:
  30. static PackFileManagerType GetPackFileManagerType(LPCTSTR  lpszName, bool&  bResource);
  31. // Conversion routines
  32. public:
  33. operator CFastFileManager* const(void) const
  34. {
  35. ASSERT(GetPackFileManagerType() == PACKFILEMANAGER_FASTFILE);
  36. return  static_cast<CFastFileManager* const>(m_pPackFileManager);
  37. }
  38. operator CDirectoryFileManager* const(void) const
  39. {
  40. ASSERT(GetPackFileManagerType() == PACKFILEMANAGER_DIRECTORYFILE);
  41. return  static_cast<CDirectoryFileManager* const>(m_pPackFileManager);
  42. }
  43. operator CZipFileManager* const(void) const
  44. {
  45. ASSERT(GetPackFileManagerType() == PACKFILEMANAGER_ZIPFILE);
  46. return  static_cast<CZipFileManager* const>(m_pPackFileManager);
  47. }
  48. public:
  49. void SetOuterFilePath(LPCTSTR  strOuterFilePath)
  50. {
  51. m_strOuterFilePath = strOuterFilePath;
  52. }
  53. protected:
  54. CPackFileManagerBaseClass* m_pPackFileManager;
  55. CDirectoryFileManager* m_pOuterFileManager;
  56. CString m_strOuterFilePath;
  57. };
  58. #endif // _PACKFILEMANAGER__H