summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fileio_type.h2
-rw-r--r--src/saveload/saveload.cpp27
2 files changed, 28 insertions, 1 deletions
diff --git a/src/fileio_type.h b/src/fileio_type.h
index 390b28f24..3aee5a0e7 100644
--- a/src/fileio_type.h
+++ b/src/fileio_type.h
@@ -20,6 +20,8 @@ enum AbstractFileType {
FT_SAVEGAME, ///< old or new savegame
FT_SCENARIO, ///< old or new scenario
FT_HEIGHTMAP, ///< heightmap file
+
+ FT_INVALID = 7, ///< Invalid or unknown file type.
};
/** Elements of a file system that are recognized. */
diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp
index 007b22f01..a0d15938a 100644
--- a/src/saveload/saveload.cpp
+++ b/src/saveload/saveload.cpp
@@ -2893,7 +2893,7 @@ void GenerateDefaultSaveName(char *buf, const char *last)
}
/**
- * Set the mode of the file to save or load based on the type of file entry at the file system.
+ * Set the mode and file type of the file to save or load based on the type of file entry at the file system.
* @param ft Type of file entry of the file system.
*/
void FileToSaveLoad::SetMode(FiosType ft)
@@ -2923,6 +2923,31 @@ void FileToSaveLoad::SetMode(FiosType ft)
this->mode = SL_INVALID;
break;
}
+
+ switch (ft) {
+ case FIOS_TYPE_OLDFILE:
+ case FIOS_TYPE_FILE:
+ this->filetype = FT_SAVEGAME;
+ break;
+
+ case FIOS_TYPE_OLD_SCENARIO:
+ case FIOS_TYPE_SCENARIO:
+ this->filetype = FT_SCENARIO;
+ break;
+
+#ifdef WITH_PNG
+ case FIOS_TYPE_PNG:
+ /* FALL THROUGH */
+#endif /* WITH_PNG */
+
+ case FIOS_TYPE_BMP:
+ this->filetype = FT_HEIGHTMAP;
+ break;
+
+ default:
+ this->filetype = FT_INVALID;
+ break;
+ }
}
#if 0