summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/DataLoader.cpp
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-04-10 20:01:38 +0200
committerAki <please@ignore.pl>2022-04-10 20:55:52 +0200
commit014ec9abb825fc91366ae54945187d01e2c92e55 (patch)
tree4ba7f305bcb4bae3fe0707102b8ef4d39161d42a /StarsEx/DataLoader.cpp
parent879612a1dcb6bb5b891447baffd4d5917ea37ee5 (diff)
downloadstarshatter-014ec9abb825fc91366ae54945187d01e2c92e55.zip
starshatter-014ec9abb825fc91366ae54945187d01e2c92e55.tar.gz
starshatter-014ec9abb825fc91366ae54945187d01e2c92e55.tar.bz2
Added simple DataSources to replace parts of DataLoader
Diffstat (limited to 'StarsEx/DataLoader.cpp')
-rw-r--r--StarsEx/DataLoader.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/StarsEx/DataLoader.cpp b/StarsEx/DataLoader.cpp
index 72eaf4b..1dcbe0e 100644
--- a/StarsEx/DataLoader.cpp
+++ b/StarsEx/DataLoader.cpp
@@ -26,11 +26,13 @@ DataLoader* DataLoader::loader = 0;
DataLoader::DataLoader()
: datapath(""), video(0), use_file_system(true), enable_media(true)
-{ }
+{
+}
DataLoader::~DataLoader()
{
archives.destroy();
+ sources.destroy();
}
// +--------------------------------------------------------------------+
@@ -82,6 +84,37 @@ DataLoader::EnableMedia(bool enable)
// +--------------------------------------------------------------------+
int
+DataLoader::InsertDatafile(const char* name, int pos)
+{
+ FILE* f = fopen(name, "rb");
+ if (!f) {
+ Print(" WARNING: could not open datafile '%s'\n", name);
+ return DATAFILE_NOTEXIST;
+ }
+ fclose(f);
+ auto archive = new DataArchive(name);
+ if (!archive || archive->NumFiles() < 1) {
+ Print(" WARNING: invalid data file '%s'\n", name);
+ if (archive) delete archive;
+ return DATAFILE_INVALID;
+ }
+ DataSource* source = new ArchiveDataSource(archive);
+ if (pos < 0)
+ sources.append(source);
+ else
+ sources.insert(source, pos);
+ return DATAFILE_OK;
+}
+
+void
+DataLoader::ClearSources()
+{
+ sources.destroy();
+}
+
+// +--------------------------------------------------------------------+
+
+int
DataLoader::EnableDatafile(const char* name)
{
int status = DATAFILE_NOTEXIST;