dominus icon

Untitled

dominus | PRO | 09/10/24 10:07:57 AM UTC | 0 ⭐ | 14005 👁️ | Never ⏰ | []
Diff |

2.89 KB

|

None

|

0 👍

/

0 👎

diff --git a/files/utils.cc b/files/utils.cc
index 764f95105..e39cfce35 100644
--- a/files/utils.cc
+++ b/files/utils.cc
@@ -792,9 +792,14 @@ void setup_data_dir(const std::string& data_path, const char* runpath) {
    if (is_system_path_defined("<BUNDLE>")) {
        // We have the flxfiles in the bundle, so lets use it.
        // But lets use <DATA> in the iTunes file sharing.
-       string path(IOSGetDocumentsDir());
+       bool has_data = false;
+       string path(IOSGetDocumentsDir(&has_data));
        path += "/data";
        add_system_path("<DATA>", path);
+       if(!has_data) {
+           string source_data_dir = "./data/game";
+           copy_data_to_documents_dir(source_data_dir.c_str());
+       }
        return;
    }
 #endif
diff --git a/ios/include/ios_utils.h b/ios/include/ios_utils.h
index c6dca6b62..6093e332c 100644
--- a/ios/include/ios_utils.h
+++ b/ios/include/ios_utils.h
@@ -34,6 +34,7 @@ class TouchUI_iOS : public TouchUI {
    void onDpadLocationChanged() final;
 };
 
-const char* IOSGetDocumentsDir();
+const char* IOSGetDocumentsDir(bool * = NULL);
+void copy_data_to_documents_dir(const char *);
 
 #endif
diff --git a/ios/ios_utils.mm b/ios/ios_utils.mm
index d18e3db96..0241d9197 100644
--- a/ios/ios_utils.mm
+++ b/ios/ios_utils.mm
@@ -274,15 +274,45 @@ - (void)hideButtonControls {
 
 /* ---------------------------------------------------------------------- */
 
-const char* IOSGetDocumentsDir() {
+const char* IOSGetDocumentsDir(bool * hasData) {
+   NSString *docDirectory = nil;
    if (gDocsDir[0] == 0) {
        NSArray* paths = NSSearchPathForDirectoriesInDomains(
                NSDocumentDirectory, NSUserDomainMask, YES);
-       NSString* docDirectory = [paths objectAtIndex:0];
+       docDirectory = [paths objectAtIndex:0];
        strcpy(gDocsDir, docDirectory.UTF8String);
        printf("Documents: %s\n", gDocsDir);
        // chdir(gDocsDir);
        // *strncpy(gDocsDir, , sizeof(gDocsDir) - 1) = 0;
    }
+   if (hasData) {
+       if(!docDirectory) {
+           NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+           docDirectory = [paths objectAtIndex:0];
+       }
+
+       BOOL isDir = NO;
+       if([[NSFileManager defaultManager] fileExistsAtPath:[docDirectory stringByAppendingPathComponent:@"game"] isDirectory:&isDir]) {
+           if(isDir) {
+               *hasData = YES;
+               return gDocsDir;
+           }
+       }
+       *hasData = NO;
+   }
    return gDocsDir;
 }
+
+void copy_data_to_documents_dir(const char * path)
+{
+   bool has_data = false;
+   NSString * src = [NSString stringWithUTF8String:path];
+   NSString * dest = [NSString stringWithUTF8String:IOSGetDocumentsDir(&has_data)];
+   NSError * err = nil;
+   BOOL result = [[NSFileManager defaultManager] copyItemAtPath:src toPath:[dest stringByAppendingPathComponent:@"game"] error:&err];
+   if(!result) {
+       NSLog(@"Error copying data to documents directory: %@", err);
+   } else {
+       NSLog(@"Copied game data to documents directory.");
+   }
+}
\ No newline at end of file
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎