diff --git a/src/openrct2/FileClassifier.cpp b/src/openrct2/FileClassifier.cpp index eeb1a49b25..d4033d7b39 100644 --- a/src/openrct2/FileClassifier.cpp +++ b/src/openrct2/FileClassifier.cpp @@ -15,6 +15,7 @@ #pragma endregion #include "core/FileStream.hpp" +#include "core/Path.hpp" #include "FileClassifier.h" #include "rct12/SawyerChunkReader.h" @@ -151,3 +152,19 @@ static bool TryClassifyAsTD4_TD6(IStream * stream, ClassifiedFile * result) return success; } + +extern "C" +{ + uint32 get_file_extension_type(const utf8 * path) + { + auto extension = Path::GetExtension(path); + if (String::Equals(extension, ".dat", true)) return FILE_EXTENSION_DAT; + if (String::Equals(extension, ".sc4", true)) return FILE_EXTENSION_SC4; + if (String::Equals(extension, ".sv4", true)) return FILE_EXTENSION_SV4; + if (String::Equals(extension, ".td4", true)) return FILE_EXTENSION_TD4; + if (String::Equals(extension, ".sc6", true)) return FILE_EXTENSION_SC6; + if (String::Equals(extension, ".sv6", true)) return FILE_EXTENSION_SV6; + if (String::Equals(extension, ".td6", true)) return FILE_EXTENSION_TD6; + return FILE_EXTENSION_UNKNOWN; + } +} diff --git a/src/openrct2/FileClassifier.h b/src/openrct2/FileClassifier.h index ac9e29c600..4356bd4d19 100644 --- a/src/openrct2/FileClassifier.h +++ b/src/openrct2/FileClassifier.h @@ -16,9 +16,24 @@ #pragma once -#include #include "common.h" +enum +{ + FILE_EXTENSION_UNKNOWN, + FILE_EXTENSION_DAT, + FILE_EXTENSION_SC4, + FILE_EXTENSION_SV4, + FILE_EXTENSION_TD4, + FILE_EXTENSION_SC6, + FILE_EXTENSION_SV6, + FILE_EXTENSION_TD6, +}; + +#ifdef __cplusplus + +#include + interface IStream; enum class FILE_TYPE @@ -38,3 +53,15 @@ struct ClassifiedFile bool TryClassifyFile(const std::string &path, ClassifiedFile * result); bool TryClassifyFile(IStream * stream, ClassifiedFile * result); + +#endif // __cplusplus + + +#ifdef __cplusplus +extern "C" +{ +#endif + uint32 get_file_extension_type(const utf8 * path); +#ifdef __cplusplus +} +#endif diff --git a/src/openrct2/cmdline/ConvertCommand.cpp b/src/openrct2/cmdline/ConvertCommand.cpp index 3548b21773..cbc441b283 100644 --- a/src/openrct2/cmdline/ConvertCommand.cpp +++ b/src/openrct2/cmdline/ConvertCommand.cpp @@ -20,6 +20,7 @@ #include "../core/Exception.hpp" #include "../core/Guard.hpp" #include "../core/Path.hpp" +#include "../FileClassifier.h" #include "../ParkImporter.h" #include "../rct2/S6Exporter.h" #include "CommandLine.hpp" diff --git a/src/openrct2/editor.c b/src/openrct2/editor.c index 61b3d6d2d5..438544406e 100644 --- a/src/openrct2/editor.c +++ b/src/openrct2/editor.c @@ -17,6 +17,7 @@ #include "audio/audio.h" #include "drawing/drawing.h" #include "editor.h" +#include "FileClassifier.h" #include "game.h" #include "interface/viewport.h" #include "interface/window.h" diff --git a/src/openrct2/game.c b/src/openrct2/game.c index 2b5d3bf9ec..ac27d68552 100644 --- a/src/openrct2/game.c +++ b/src/openrct2/game.c @@ -19,6 +19,7 @@ #include "config/Config.h" #include "Context.h" #include "editor.h" +#include "FileClassifier.h" #include "game.h" #include "input.h" #include "interface/Screenshot.h" diff --git a/src/openrct2/rct2.c b/src/openrct2/rct2.c index 5ba8aabfd6..c797a653ed 100644 --- a/src/openrct2/rct2.c +++ b/src/openrct2/rct2.c @@ -135,16 +135,3 @@ const utf8 *get_file_path(sint32 pathId) } return path; } - -uint32 get_file_extension_type(const utf8 *path) -{ - const utf8 *extension = path_get_extension(path); - if (strcicmp(extension, ".dat") == 0) return FILE_EXTENSION_DAT; - if (strcicmp(extension, ".sc4") == 0) return FILE_EXTENSION_SC4; - if (strcicmp(extension, ".sv4") == 0) return FILE_EXTENSION_SV4; - if (strcicmp(extension, ".td4") == 0) return FILE_EXTENSION_TD4; - if (strcicmp(extension, ".sc6") == 0) return FILE_EXTENSION_SC6; - if (strcicmp(extension, ".sv6") == 0) return FILE_EXTENSION_SV6; - if (strcicmp(extension, ".td6") == 0) return FILE_EXTENSION_TD6; - return FILE_EXTENSION_UNKNOWN; -} diff --git a/src/openrct2/rct2.h b/src/openrct2/rct2.h index f8480ec3cd..9e6a18e9a0 100644 --- a/src/openrct2/rct2.h +++ b/src/openrct2/rct2.h @@ -143,17 +143,6 @@ enum { PATH_ID_END }; -enum { - FILE_EXTENSION_UNKNOWN, - FILE_EXTENSION_DAT, - FILE_EXTENSION_SC4, - FILE_EXTENSION_SV4, - FILE_EXTENSION_TD4, - FILE_EXTENSION_SC6, - FILE_EXTENSION_SV6, - FILE_EXTENSION_TD6, -}; - #ifdef __cplusplus extern "C" { #endif @@ -170,8 +159,6 @@ sint32 rct2_init_directories(); const char *get_file_path(sint32 pathId); void rct2_quit(); -uint32 get_file_extension_type(const utf8 *path); - #ifdef __cplusplus } #endif diff --git a/src/openrct2/scenario/scenario.c b/src/openrct2/scenario/scenario.c index 8082a01191..7027918fd2 100644 --- a/src/openrct2/scenario/scenario.c +++ b/src/openrct2/scenario/scenario.c @@ -17,6 +17,7 @@ #include "../audio/audio.h" #include "../cheats.h" #include "../config/Config.h" +#include "../FileClassifier.h" #include "../game.h" #include "../interface/viewport.h" #include "../localisation/date.h" diff --git a/src/openrct2/windows/title_editor.c b/src/openrct2/windows/title_editor.c index b38daa18d1..79b831e4f5 100644 --- a/src/openrct2/windows/title_editor.c +++ b/src/openrct2/windows/title_editor.c @@ -16,6 +16,7 @@ #include "../config/Config.h" #include "../drawing/drawing.h" +#include "../FileClassifier.h" #include "../game.h" #include "../input.h" #include "../interface/viewport.h"