From 38ce933fd5ec05673cbefae63f2bae74a1e0d53c Mon Sep 17 00:00:00 2001 From: GuglioIsStupid Date: Sat, 7 Mar 2026 06:36:05 -0500 Subject: voids request - Move the filesystem files to root/ as it will be used in both Minecraft.Client and Minecraft.World (#819) * Move Filesystem to root/include/ as per devoiders request * Filesystem -> lce_filesystem --- CMakeLists.txt | 1 + Minecraft.Client/Common/Audio/SoundEngine.cpp | 2 +- Minecraft.Client/Common/Filesystem/Filesystem.cpp | 74 ----------------------- Minecraft.Client/Common/Filesystem/Filesystem.h | 6 -- Minecraft.Client/Minecraft.Client.vcxproj | 6 +- Minecraft.Client/Minecraft.Client.vcxproj.filters | 17 +++--- cmake/ClientSources.cmake | 3 +- include/lce_filesystem/lce_filesystem.cpp | 73 ++++++++++++++++++++++ include/lce_filesystem/lce_filesystem.h | 6 ++ 9 files changed, 96 insertions(+), 92 deletions(-) delete mode 100644 Minecraft.Client/Common/Filesystem/Filesystem.cpp delete mode 100644 Minecraft.Client/Common/Filesystem/Filesystem.h create mode 100644 include/lce_filesystem/lce_filesystem.cpp create mode 100644 include/lce_filesystem/lce_filesystem.h diff --git a/CMakeLists.txt b/CMakeLists.txt index dbdef3f6..327958f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,7 @@ target_include_directories(MinecraftClient PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Windows64/Iggy/include" "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.Client/Xbox/Sentient/Include" "${CMAKE_CURRENT_SOURCE_DIR}/Minecraft.World/x64headers" + "${CMAKE_CURRENT_SOURCE_DIR}/include/" ) target_compile_definitions(MinecraftClient PRIVATE $<$:_LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64> diff --git a/Minecraft.Client/Common/Audio/SoundEngine.cpp b/Minecraft.Client/Common/Audio/SoundEngine.cpp index 12fa03b4..13826da3 100644 --- a/Minecraft.Client/Common/Audio/SoundEngine.cpp +++ b/Minecraft.Client/Common/Audio/SoundEngine.cpp @@ -25,7 +25,7 @@ #include #include #include -#include "..\Filesystem\Filesystem.h" +#include #ifdef __ORBIS__ #include diff --git a/Minecraft.Client/Common/Filesystem/Filesystem.cpp b/Minecraft.Client/Common/Filesystem/Filesystem.cpp deleted file mode 100644 index 0d225cb5..00000000 --- a/Minecraft.Client/Common/Filesystem/Filesystem.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "stdafx.h" -#include "Filesystem.h" - -#ifdef _WINDOWS64 -#include -#endif // TODO: More os' filesystem handling for when the project moves away from only Windows - -#include - -bool FileOrDirectoryExists(const char* path) -{ -#ifdef _WINDOWS64 - DWORD attribs = GetFileAttributesA(path); - return (attribs != INVALID_FILE_ATTRIBUTES); -#else - #error "FileOrDirectoryExists not implemented for this platform" - return false; -#endif -} - -bool FileExists(const char* path) -{ -#ifdef _WINDOWS64 - DWORD attribs = GetFileAttributesA(path); - return (attribs != INVALID_FILE_ATTRIBUTES && !(attribs & FILE_ATTRIBUTE_DIRECTORY)); -#else - #error "FileExists not implemented for this platform" - return false; -#endif -} - -bool DirectoryExists(const char* path) -{ -#ifdef _WINDOWS64 - DWORD attribs = GetFileAttributesA(path); - return (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY)); -#else - #error "DirectoryExists not implemented for this platform" - return false; -#endif -} - -bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize) -{ -#ifdef _WINDOWS64 - char searchPath[MAX_PATH]; - snprintf(searchPath, MAX_PATH, "%s\\*", directory); - - WIN32_FIND_DATAA findData; - HANDLE hFind = FindFirstFileA(searchPath, &findData); - - if (hFind == INVALID_HANDLE_VALUE) - { - return false; - } - - do - { - if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) - { - // Found a file, copy its path to the output buffer - snprintf(outFilePath, outFilePathSize, "%s\\%s", directory, findData.cFileName); - FindClose(hFind); - return true; - } - } while (FindNextFileA(hFind, &findData) != 0); - - FindClose(hFind); - return false; // No files found in the directory -#else - #error "GetFirstFileInDirectory not implemented for this platform" - return false; -#endif -} diff --git a/Minecraft.Client/Common/Filesystem/Filesystem.h b/Minecraft.Client/Common/Filesystem/Filesystem.h deleted file mode 100644 index 11d1bf5b..00000000 --- a/Minecraft.Client/Common/Filesystem/Filesystem.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -bool FileOrDirectoryExists(const char* path); -bool FileExists(const char* path); -bool DirectoryExists(const char* path); -bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize); diff --git a/Minecraft.Client/Minecraft.Client.vcxproj b/Minecraft.Client/Minecraft.Client.vcxproj index 8f2547d8..fccbc7dd 100644 --- a/Minecraft.Client/Minecraft.Client.vcxproj +++ b/Minecraft.Client/Minecraft.Client.vcxproj @@ -1561,7 +1561,7 @@ if not exist "$(TargetDir)\savedata" mkdir "$(TargetDir)\savedata" MultiThreadedDebug _LARGE_WORLDS;_DEBUG_MENUS_ENABLED;_DEBUG;_CRT_NON_CONFORMING_SWPRINTFS;_CRT_SECURE_NO_WARNINGS;_WINDOWS64;%(PreprocessorDefinitions) Disabled - Windows64\Iggy\include;$(ProjectDir);%(AdditionalIncludeDirectories) + Windows64\Iggy\include;$(ProjectDir);$(ProjectDir)..\include;%(AdditionalIncludeDirectories) true true Default @@ -5585,6 +5585,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU + true true @@ -5717,7 +5718,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU - @@ -28322,6 +28322,7 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU + true true @@ -28473,7 +28474,6 @@ xcopy /q /y /i /s /e $(ProjectDir)Durango\CU $(LayoutDir)Image\Loose\CU - diff --git a/Minecraft.Client/Minecraft.Client.vcxproj.filters b/Minecraft.Client/Minecraft.Client.vcxproj.filters index 0f02a16b..ed71bfe0 100644 --- a/Minecraft.Client/Minecraft.Client.vcxproj.filters +++ b/Minecraft.Client/Minecraft.Client.vcxproj.filters @@ -729,8 +729,11 @@ {e5d7fb24-25b8-413c-84ec-974bf0d4a3d1} - - {c79fd64d-7529-4da4-b5f3-2541e084932b} + + {d8cdea16-28f5-4993-baf8-26a129e50c84} + + + {70b1f1aa-fe50-4aab-9a6c-14df8cb1f231} @@ -3781,15 +3784,15 @@ Windows64\Source Files\Network - - Common\Source Files\Filesystem - Common\Source Files\Audio Common\Source Files\Audio + + include\lce_filesystem + @@ -5943,8 +5946,8 @@ Windows64\Source Files\Network - - Common\Source Files\Filesystem + + include\lce_filesystem diff --git a/cmake/ClientSources.cmake b/cmake/ClientSources.cmake index bb1f331d..6467a243 100644 --- a/cmake/ClientSources.cmake +++ b/cmake/ClientSources.cmake @@ -1,4 +1,6 @@ set(MINECRAFT_CLIENT_SOURCES + "../include/lce_filesystem/lce_filesystem.cpp" + "AbstractTexturePack.cpp" "AchievementPopup.cpp" "AchievementScreen.cpp" @@ -48,7 +50,6 @@ set(MINECRAFT_CLIENT_SOURCES "Common/DLC/DLCSkinFile.cpp" "Common/DLC/DLCTextureFile.cpp" "Common/DLC/DLCUIDataFile.cpp" - "Common/Filesystem/Filesystem.cpp" "Common/GameRules/AddEnchantmentRuleDefinition.cpp" "Common/GameRules/AddItemRuleDefinition.cpp" "Common/GameRules/ApplySchematicRuleDefinition.cpp" diff --git a/include/lce_filesystem/lce_filesystem.cpp b/include/lce_filesystem/lce_filesystem.cpp new file mode 100644 index 00000000..d0d4d600 --- /dev/null +++ b/include/lce_filesystem/lce_filesystem.cpp @@ -0,0 +1,73 @@ +#include "lce_filesystem.h" + +#ifdef _WINDOWS64 +#include +#endif // TODO: More os' filesystem handling for when the project moves away from only Windows + +#include + +bool FileOrDirectoryExists(const char* path) +{ +#ifdef _WINDOWS64 + DWORD attribs = GetFileAttributesA(path); + return (attribs != INVALID_FILE_ATTRIBUTES); +#else + #error "FileOrDirectoryExists not implemented for this platform" + return false; +#endif +} + +bool FileExists(const char* path) +{ +#ifdef _WINDOWS64 + DWORD attribs = GetFileAttributesA(path); + return (attribs != INVALID_FILE_ATTRIBUTES && !(attribs & FILE_ATTRIBUTE_DIRECTORY)); +#else + #error "FileExists not implemented for this platform" + return false; +#endif +} + +bool DirectoryExists(const char* path) +{ +#ifdef _WINDOWS64 + DWORD attribs = GetFileAttributesA(path); + return (attribs != INVALID_FILE_ATTRIBUTES && (attribs & FILE_ATTRIBUTE_DIRECTORY)); +#else + #error "DirectoryExists not implemented for this platform" + return false; +#endif +} + +bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize) +{ +#ifdef _WINDOWS64 + char searchPath[MAX_PATH]; + snprintf(searchPath, MAX_PATH, "%s\\*", directory); + + WIN32_FIND_DATAA findData; + HANDLE hFind = FindFirstFileA(searchPath, &findData); + + if (hFind == INVALID_HANDLE_VALUE) + { + return false; + } + + do + { + if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) + { + // Found a file, copy its path to the output buffer + snprintf(outFilePath, outFilePathSize, "%s\\%s", directory, findData.cFileName); + FindClose(hFind); + return true; + } + } while (FindNextFileA(hFind, &findData) != 0); + + FindClose(hFind); + return false; // No files found in the directory +#else + #error "GetFirstFileInDirectory not implemented for this platform" + return false; +#endif +} diff --git a/include/lce_filesystem/lce_filesystem.h b/include/lce_filesystem/lce_filesystem.h new file mode 100644 index 00000000..11d1bf5b --- /dev/null +++ b/include/lce_filesystem/lce_filesystem.h @@ -0,0 +1,6 @@ +#pragma once + +bool FileOrDirectoryExists(const char* path); +bool FileExists(const char* path); +bool DirectoryExists(const char* path); +bool GetFirstFileInDirectory(const char* directory, char* outFilePath, size_t outFilePathSize); -- cgit v1.2.3