diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-07-05 10:28:29 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-05 10:28:29 +0200 |
commit | a149e412f75e9eef87e8ff54e21402f90161f65b (patch) | |
tree | 22b36e565fe883fdf51a9c83a0b57e985d27179b /core | |
parent | a9ad1e6692af85fbe8aab36361c304b81ed376f4 (diff) | |
parent | 40f4d3cf0fea814e23de33db1f1f02ebe05292ab (diff) |
Merge pull request #24086 from RandomShaper/bundle-pck-to-executable
Enhance game export
Diffstat (limited to 'core')
-rw-r--r-- | core/io/file_access_pack.cpp | 2 | ||||
-rw-r--r-- | core/project_settings.cpp | 24 |
2 files changed, 17 insertions, 9 deletions
diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp index d38d09c6bb..ca66b34e17 100644 --- a/core/io/file_access_pack.cpp +++ b/core/io/file_access_pack.cpp @@ -144,7 +144,7 @@ bool PackedSourcePCK::try_open_pack(const String &p_path) { uint32_t magic = f->get_32(); if (magic != 0x43504447) { - //maybe at he end.... self contained exe + //maybe at the end.... self contained exe f->seek_end(); f->seek(f->get_position() - 4); magic = f->get_32(); diff --git a/core/project_settings.cpp b/core/project_settings.cpp index fc1a74801d..584b75b026 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -343,17 +343,17 @@ Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, b return err; } - // Attempt with exec_name.pck - // (This is the usual case when distributing a Godot game.) - - // Based on the OS, it can be the exec path + '.pck' (Linux w/o extension, macOS in .app bundle) - // or the exec path's basename + '.pck' (Windows). - // We need to test both possibilities as extensions for Linux binaries are optional - // (so both 'mygame.bin' and 'mygame' should be able to find 'mygame.pck'). - String exec_path = OS::get_singleton()->get_executable_path(); if (exec_path != "") { + // Attempt with exec_name.pck + // (This is the usual case when distributing a Godot game.) + + // Based on the OS, it can be the exec path + '.pck' (Linux w/o extension, macOS in .app bundle) + // or the exec path's basename + '.pck' (Windows). + // We need to test both possibilities as extensions for Linux binaries are optional + // (so both 'mygame.bin' and 'mygame' should be able to find 'mygame.pck'). + bool found = false; String exec_dir = exec_path.get_base_dir(); @@ -375,6 +375,14 @@ Error ProjectSettings::_setup(const String &p_path, const String &p_main_pack, b } } + // Attempt with PCK bundled into executable + + if (!found) { + if (_load_resource_pack(exec_path)) { + found = true; + } + } + // If we opened our package, try and load our project if (found) { Error err = _load_settings_text_or_binary("res://project.godot", "res://project.binary"); |