diff options
Diffstat (limited to 'main/main.cpp')
-rw-r--r-- | main/main.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/main/main.cpp b/main/main.cpp index 21fb61c81e..305cc88be7 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -202,7 +202,7 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas for(int i=0;i<argc;i++) { - args.push_back(argv[i]); + args.push_back(String::utf8(argv[i])); } List<String>::Element *I=args.front(); @@ -1037,18 +1037,24 @@ bool Main::start() { if (!absolute) { - int sep=local_game_path.find_last("/"); + if (Globals::get_singleton()->is_using_datapack()) { - if (sep==-1) { - DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); - local_game_path=da->get_current_dir()+"/"+local_game_path; - memdelete(da) ; - } else { + local_game_path="res://"+local_game_path; - DirAccess *da = DirAccess::open(local_game_path.substr(0,sep)); - if (da) { - local_game_path=da->get_current_dir()+"/"+local_game_path.substr(sep+1,local_game_path.length());; - memdelete(da); + } else { + int sep=local_game_path.find_last("/"); + + if (sep==-1) { + DirAccess *da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM); + local_game_path=da->get_current_dir()+"/"+local_game_path; + memdelete(da) ; + } else { + + DirAccess *da = DirAccess::open(local_game_path.substr(0,sep)); + if (da) { + local_game_path=da->get_current_dir()+"/"+local_game_path.substr(sep+1,local_game_path.length());; + memdelete(da); + } } } |