diff --git a/src/arch/ArchHooks/ArchHooks_MacOSX.mm b/src/arch/ArchHooks/ArchHooks_MacOSX.mm index 75d3e9da11..d5d099df4d 100644 --- a/src/arch/ArchHooks/ArchHooks_MacOSX.mm +++ b/src/arch/ArchHooks/ArchHooks_MacOSX.mm @@ -320,6 +320,40 @@ void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable ) FILEMAN->Mount("dirro", sDirOfExecutable, "/"); bool portable = DoesFileExist("/Portable.ini"); + + NSString* resourcePath = [[NSBundle mainBundle] resourcePath]; + if( resourcePath ) + { + const char* resourcePathUTF8String = [resourcePath UTF8String]; + FILEMAN->Mount( "dirro", ssprintf("%s/Announcers", resourcePathUTF8String), "/Announcers" ); + FILEMAN->Mount( "dirro", ssprintf("%s/BGAnimations", resourcePathUTF8String), "/BGAnimations" ); + FILEMAN->Mount( "dirro", ssprintf("%s/BackgroundEffects", resourcePathUTF8String), "/BackgroundEffects" ); + FILEMAN->Mount( "dirro", ssprintf("%s/BackgroundTransitions", resourcePathUTF8String), "/BackgroundTransitions" ); + FILEMAN->Mount( "dirro", ssprintf("%s/CDTitles", resourcePathUTF8String), "/CDTitles" ); + FILEMAN->Mount( "dirro", ssprintf("%s/Characters", resourcePathUTF8String), "/Characters" ); + FILEMAN->Mount( "dirro", ssprintf("%s/Courses", resourcePathUTF8String), "/Courses" ); + FILEMAN->Mount( "dirro", ssprintf("%s/NoteSkins", resourcePathUTF8String), "/NoteSkins" ); + FILEMAN->Mount( "dirro", ssprintf("%s/Packages", resourcePathUTF8String), "/Packages" ); + FILEMAN->Mount( "dirro", ssprintf("%s/Songs", resourcePathUTF8String), "/Songs" ); + FILEMAN->Mount( "dirro", ssprintf("%s/RandomMovies", resourcePathUTF8String), "/RandomMovies" ); + FILEMAN->Mount( "dirro", ssprintf("%s/Themes", resourcePathUTF8String), "/Themes" ); + FILEMAN->Mount( "dirro", ssprintf("%s/Data", resourcePathUTF8String), "/Data" ); + } + + CFURLRef dataUrl = CFBundleCopyResourceURL( CFBundleGetMainBundle(), CFSTR("StepMania"), CFSTR("smzip"), nil); + if( dataUrl ) + { + char dir[PATH_MAX]; + + CFStringRef dataPath = CFURLCopyFileSystemPath( dataUrl, kCFURLPOSIXPathStyle ); + CFStringGetCString( dataPath, dir, PATH_MAX, kCFStringEncodingUTF8 ); + + if( strncmp(sDirOfExecutable, dir, sDirOfExecutable.length()) == 0 ) + FILEMAN->Mount( "zip", dir + sDirOfExecutable.length(), "/" ); + CFRelease( dataPath ); + CFRelease( dataUrl ); + } + if (portable) { FILEMAN->Mount("dir", sDirOfExecutable + "/Announcers", "/Announcers"); @@ -339,20 +373,6 @@ void ArchHooks::MountInitialFilesystems( const RString &sDirOfExecutable ) FILEMAN->Mount("dir", sDirOfExecutable + "/RandomMovies", "/RandomMovies"); FILEMAN->Mount("dir", sDirOfExecutable + "/Themes", "/Themes"); } - - CFURLRef dataUrl = CFBundleCopyResourceURL( CFBundleGetMainBundle(), CFSTR("StepMania"), CFSTR("smzip"), nil); - if( dataUrl ) - { - char dir[PATH_MAX]; - - CFStringRef dataPath = CFURLCopyFileSystemPath( dataUrl, kCFURLPOSIXPathStyle ); - CFStringGetCString( dataPath, dir, PATH_MAX, kCFStringEncodingUTF8 ); - - if( strncmp(sDirOfExecutable, dir, sDirOfExecutable.length()) == 0 ) - FILEMAN->Mount( "zip", dir + sDirOfExecutable.length(), "/" ); - CFRelease( dataPath ); - CFRelease( dataUrl ); - } } void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable ) @@ -390,25 +410,6 @@ void ArchHooks::MountUserFilesystems( const RString &sDirOfExecutable ) // /Logs -> ~/Library/Logs/PRODUCT_ID PathForFolderType( dir, kDomainLibraryFolderType ); FILEMAN->Mount( "dir", ssprintf("%s/Logs/" PRODUCT_ID, dir), "/Logs" ); - - NSString* resourcePath = [[NSBundle mainBundle] resourcePath]; - if( resourcePath ) - { - const char* resourcePathUTF8String = [resourcePath UTF8String]; - FILEMAN->Mount( "dirro", ssprintf("%s/Announcers", resourcePathUTF8String), "/Announcers" ); - FILEMAN->Mount( "dirro", ssprintf("%s/BGAnimations", resourcePathUTF8String), "/BGAnimations" ); - FILEMAN->Mount( "dirro", ssprintf("%s/BackgroundEffects", resourcePathUTF8String), "/BackgroundEffects" ); - FILEMAN->Mount( "dirro", ssprintf("%s/BackgroundTransitions", resourcePathUTF8String), "/BackgroundTransitions" ); - FILEMAN->Mount( "dirro", ssprintf("%s/CDTitles", resourcePathUTF8String), "/CDTitles" ); - FILEMAN->Mount( "dirro", ssprintf("%s/Characters", resourcePathUTF8String), "/Characters" ); - FILEMAN->Mount( "dirro", ssprintf("%s/Courses", resourcePathUTF8String), "/Courses" ); - FILEMAN->Mount( "dirro", ssprintf("%s/NoteSkins", resourcePathUTF8String), "/NoteSkins" ); - FILEMAN->Mount( "dirro", ssprintf("%s/Packages", resourcePathUTF8String), "/Packages" ); - FILEMAN->Mount( "dirro", ssprintf("%s/Songs", resourcePathUTF8String), "/Songs" ); - FILEMAN->Mount( "dirro", ssprintf("%s/RandomMovies", resourcePathUTF8String), "/RandomMovies" ); - FILEMAN->Mount( "dirro", ssprintf("%s/Themes", resourcePathUTF8String), "/Themes" ); - FILEMAN->Mount( "dirro", ssprintf("%s/Data", resourcePathUTF8String), "/Data" ); - } } static inline int GetIntValue( CFTypeRef r )