mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-05-31 19:51:20 +00:00
81 lines
2.1 KiB
C++
81 lines
2.1 KiB
C++
#ifndef CPACKAGE
|
|
#define CPACKAGE
|
|
|
|
#include <Common/CAssetID.h>
|
|
#include <Common/CFourCC.h>
|
|
#include <Common/TString.h>
|
|
|
|
class CGameProject;
|
|
|
|
struct SNamedResource
|
|
{
|
|
TString Name;
|
|
CAssetID ID;
|
|
CFourCC Type;
|
|
};
|
|
|
|
class CResourceCollection
|
|
{
|
|
TString mName;
|
|
std::vector<SNamedResource> mNamedResources;
|
|
|
|
public:
|
|
CResourceCollection() : mName("UNNAMED") {}
|
|
CResourceCollection(const TString& rkName) : mName(rkName) {}
|
|
|
|
inline TString Name() const { return mName; }
|
|
inline u32 NumResources() const { return mNamedResources.size(); }
|
|
inline const SNamedResource& ResourceByIndex(u32 Idx) const { return mNamedResources[Idx]; }
|
|
|
|
inline void AddResource(const TString& rkName, const CAssetID& rkID, const CFourCC& rkType)
|
|
{
|
|
mNamedResources.push_back( SNamedResource { rkName, rkID, rkType } );
|
|
}
|
|
};
|
|
|
|
class CPackage
|
|
{
|
|
CGameProject *mpProject;
|
|
TString mPakName;
|
|
TWideString mPakPath;
|
|
std::vector<CResourceCollection*> mCollections;
|
|
|
|
enum EPackageDefinitionVersion
|
|
{
|
|
eVer_Initial,
|
|
|
|
eVer_Max,
|
|
eVer_Current = eVer_Max - 1
|
|
};
|
|
|
|
public:
|
|
CPackage() {}
|
|
|
|
CPackage(CGameProject *pProj, const TString& rkName, const TWideString& rkPath)
|
|
: mpProject(pProj)
|
|
, mPakName(rkName)
|
|
, mPakPath(rkPath)
|
|
{}
|
|
|
|
void Load();
|
|
void Save();
|
|
|
|
TWideString DefinitionPath(bool Relative) const;
|
|
TWideString CookedPackagePath(bool Relative) const;
|
|
|
|
CResourceCollection* AddCollection(const TString& rkName);
|
|
void RemoveCollection(CResourceCollection *pCollection);
|
|
void RemoveCollection(u32 Index);
|
|
|
|
// Accessors
|
|
inline TString Name() const { return mPakName; }
|
|
inline TWideString Path() const { return mPakPath; }
|
|
inline u32 NumCollections() const { return mCollections.size(); }
|
|
inline CResourceCollection* CollectionByIndex(u32 Idx) const { return mCollections[Idx]; }
|
|
|
|
inline void SetPakName(TString NewName) { mPakName = NewName; }
|
|
};
|
|
|
|
#endif // CPACKAGE
|
|
|