You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/Editor/Util/PakFile.h

62 lines
1.9 KiB
C++

/*
* Copyright (c) Contributors to the Open 3D Engine Project.
* For complete copyright and license terms please see the LICENSE at the root of this distribution.
*
* SPDX-License-Identifier: Apache-2.0 OR MIT
*
*/
#ifndef CRYINCLUDE_EDITOR_UTIL_PAKFILE_H
#define CRYINCLUDE_EDITOR_UTIL_PAKFILE_H
#pragma once
#include <AzFramework/Archive/INestedArchive.h>
class CCryMemFile;
// forward references.
namespace AZ::IO
{
struct IArchive;
}
/*! CPakFile Wraps game implementation of INestedArchive.
Used for storing multiple files into zip archive file.
*/
class SANDBOX_API CPakFile
{
public:
CPakFile();
CPakFile(AZ::IO::IArchive* pCryPak);
~CPakFile();
//! Opens archive for writing.
explicit CPakFile(const char* filename);
//! Opens archive for writing.
bool Open(const char* filename, bool bAbsolutePath = true);
//! Opens archive for reading only.
bool OpenForRead(const char* filename);
void Close();
//! Adds or update file in archive.
bool UpdateFile(const char* filename, CCryMemFile& file, bool bCompress = true);
//! Adds or update file in archive.
bool UpdateFile(const char* filename, CMemoryBlock& mem, bool bCompress = true, int nCompressLevel = AZ::IO::INestedArchive::LEVEL_BETTER);
//! Adds or update file in archive.
bool UpdateFile(const char* filename, void* pBuffer, int nSize, bool bCompress = true, int nCompressLevel = AZ::IO::INestedArchive::LEVEL_BETTER);
//! Remove file from archive.
bool RemoveFile(const char* filename);
//! Remove dir from archive.
bool RemoveDir(const char* directory);
//! Return archive of this pak file wrapper.
AZ::IO::INestedArchive* GetArchive() { return m_pArchive.get(); };
private:
AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING
AZStd::intrusive_ptr<AZ::IO::INestedArchive> m_pArchive;
AZ::IO::IArchive* m_pCryPak;
AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING
};
#endif // CRYINCLUDE_EDITOR_UTIL_PAKFILE_H