diff options
Diffstat (limited to 'StarsEx/DataSource.h')
-rw-r--r-- | StarsEx/DataSource.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/StarsEx/DataSource.h b/StarsEx/DataSource.h index 3c4a84d..5dbc1d7 100644 --- a/StarsEx/DataSource.h +++ b/StarsEx/DataSource.h @@ -17,24 +17,31 @@ class DataSource { public: - DataSource(); + static const char* TYPENAME() { return "DataSource"; } + + enum class Group { DEFAULT, BASE, MOD }; + + explicit DataSource(Group group=Group::DEFAULT); virtual ~DataSource(); - virtual void SetPrefix(const char* prefix=nullptr); + Group GetGroup() const; + void SetPrefix(const char* prefix=nullptr); + virtual bool Find(const char* name) const = 0; virtual int ListFiles(Text filter, List<Text>& items, bool recurse=false) const = 0; virtual int Load(const char* name, std::uint8_t*& buf, bool null_terminate=false) const = 0; protected: Text m_prefix; + Group m_group; }; class ArchiveDataSource : public DataSource { public: - explicit ArchiveDataSource(const char* name); - explicit ArchiveDataSource(DataArchive* archive); + explicit ArchiveDataSource(const char* name, Group group=Group::DEFAULT); + explicit ArchiveDataSource(DataArchive* archive, Group group=Group::DEFAULT); ~ArchiveDataSource() override; bool Find(const char* name) const override; @@ -49,7 +56,7 @@ protected: class FileSystemDataSource : public DataSource { public: - explicit FileSystemDataSource(const char* path="."); + explicit FileSystemDataSource(const char* path=".", Group group=Group::DEFAULT); ~FileSystemDataSource() override; bool Find(const char* name) const override; |