From 9a1c4ad5658eafad852e693526ebe4abe8aaf18c Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sat, 15 Aug 2015 23:57:04 -0300 Subject: [PATCH] The iOS game list screen now also displays folders that contain main.lua. --- src/common/iOS.mm | 19 ++++++++++++++++--- src/common/macosx.h | 4 ++-- src/common/macosx.mm | 2 +- src/love.cpp | 4 ++-- src/modules/filesystem/Filesystem.cpp | 2 +- src/modules/window/sdl/Window.cpp | 2 +- 6 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/common/iOS.mm b/src/common/iOS.mm index e9eb8d1a3..05a192f80 100644 --- a/src/common/iOS.mm +++ b/src/common/iOS.mm @@ -130,9 +130,22 @@ static NSString *getDocumentsDirectory() static NSArray *getLovesInDocuments() { - NSString *documents = getDocumentsDirectory(); - NSArray *filepaths = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documents error:nil]; - return [filepaths pathsMatchingExtensions:@[@"love"]]; + NSMutableArray *paths = [NSMutableArray new]; + + NSFileManager *manager = [NSFileManager defaultManager]; + NSDirectoryEnumerator *enumerator = [manager enumeratorAtPath:getDocumentsDirectory()]; + + NSString *path = nil; + while ((path = [enumerator nextObject])) + { + // Add .love files plus folders that contain main.lua to our list. + if ([path.pathExtension isEqualToString:@"love"]) + [paths addObject:path]; + else if ([path.lastPathComponent isEqualToString:@"main.lua"]) + [paths addObject:path.stringByDeletingLastPathComponent]; + } + + return paths; } static bool deleteFileInDocuments(NSString *filename) diff --git a/src/common/macosx.h b/src/common/macosx.h index 696646794..d6a6db49d 100644 --- a/src/common/macosx.h +++ b/src/common/macosx.h @@ -29,7 +29,7 @@ namespace love { -namespace osx +namespace macosx { /** @@ -55,7 +55,7 @@ std::string getExecutablePath(); **/ void requestAttention(bool continuous); -} // osx +} // macosx } // love #endif // LOVE_MACOSX diff --git a/src/common/macosx.mm b/src/common/macosx.mm index 6a1bd369c..cae896058 100644 --- a/src/common/macosx.mm +++ b/src/common/macosx.mm @@ -29,7 +29,7 @@ namespace love { -namespace osx +namespace macosx { std::string getLoveInResources() diff --git a/src/love.cpp b/src/love.cpp index 393ba9d5f..a4a95f37c 100644 --- a/src/love.cpp +++ b/src/love.cpp @@ -111,7 +111,7 @@ static void get_app_arguments(int argc, char **argv, int &new_argc, char **&new_ #ifdef LOVE_MACOSX // Check for a drop file string. - std::string dropfilestr = love::osx::checkDropEvents(); + std::string dropfilestr = love::macosx::checkDropEvents(); if (!dropfilestr.empty()) { temp_argv.insert(temp_argv.begin() + 1, dropfilestr); @@ -123,7 +123,7 @@ static void get_app_arguments(int argc, char **argv, int &new_argc, char **&new_ std::string loveResourcesPath; bool fused = true; #if defined(LOVE_MACOSX) - loveResourcesPath = love::osx::getLoveInResources(); + loveResourcesPath = love::macosx::getLoveInResources(); #elif defined(LOVE_IOS) loveResourcesPath = love::ios::getLoveInResources(fused); #endif diff --git a/src/modules/filesystem/Filesystem.cpp b/src/modules/filesystem/Filesystem.cpp index 839d2db1e..b3a8b43c7 100644 --- a/src/modules/filesystem/Filesystem.cpp +++ b/src/modules/filesystem/Filesystem.cpp @@ -74,7 +74,7 @@ bool Filesystem::isRealDirectory(const std::string &path) const std::string Filesystem::getExecutablePath() const { #if defined(LOVE_MACOSX) - return love::osx::getExecutablePath(); + return love::macosx::getExecutablePath(); #elif defined(LOVE_IOS) return love::ios::getExecutablePath(); #elif defined(LOVE_WINDOWS) diff --git a/src/modules/window/sdl/Window.cpp b/src/modules/window/sdl/Window.cpp index cc1fa52d0..032984f85 100644 --- a/src/modules/window/sdl/Window.cpp +++ b/src/modules/window/sdl/Window.cpp @@ -1031,7 +1031,7 @@ void Window::requestAttention(bool continuous) #elif defined(LOVE_MACOSX) - love::osx::requestAttention(continuous); + love::macosx::requestAttention(continuous); #else