diff --git a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h index ded0e1dc03..dd9a3f1370 100644 --- a/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h +++ b/src/openrct2-ui/drawing/engines/opengl/OpenGLAPI.h @@ -42,8 +42,10 @@ #endif #include -// OpenRCT2: SDL_opengl.h includes windows.h, which defines the CreateWindow macro and causes conflicts +// OpenRCT2: SDL_opengl.h includes windows.h, which defines some macros that can cause conflicts #undef CreateWindow +#undef CreateDirectory +#undef GetMessage #ifdef OPENGL_NO_LINK diff --git a/src/openrct2/core/FileStream.hpp b/src/openrct2/core/FileStream.hpp index c683f84401..529fd41e90 100644 --- a/src/openrct2/core/FileStream.hpp +++ b/src/openrct2/core/FileStream.hpp @@ -12,6 +12,7 @@ #include "../common.h" #include "../localisation/Language.h" #include "IStream.hpp" +#include "Path.hpp" #include "String.hpp" #include @@ -81,6 +82,16 @@ namespace OpenRCT2 throw; } + // Make sure the directory exists before writing to a file inside it + if (_canWrite) + { + std::string directory = Path::GetDirectory(path); + if (!Path::DirectoryExists(directory)) + { + Path::CreateDirectory(directory); + } + } + #ifdef _WIN32 auto pathW = String::ToWideChar(path); auto modeW = String::ToWideChar(mode);