|
@@ -13,6 +13,8 @@
|
|
|
|
|
|
#ifdef VCMI_IOS
|
|
|
#include "iOS_utils.h"
|
|
|
+#elif defined(VCMI_ANDROID)
|
|
|
+#include "CAndroidVMHelper.h"
|
|
|
#endif
|
|
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
@@ -60,11 +62,6 @@ void IVCMIDirs::init()
|
|
|
bfs::create_directories(userSavePath());
|
|
|
}
|
|
|
|
|
|
-#ifdef VCMI_ANDROID
|
|
|
-#include "CAndroidVMHelper.h"
|
|
|
-
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef VCMI_WINDOWS
|
|
|
|
|
|
#ifdef __MINGW32__
|
|
@@ -529,6 +526,57 @@ std::vector<bfs::path> VCMIDirsOSX::dataPaths() const
|
|
|
bfs::path VCMIDirsOSX::libraryPath() const { return "."; }
|
|
|
bfs::path VCMIDirsOSX::binaryPath() const { return "."; }
|
|
|
#endif // VCMI_IOS, VCMI_MAC
|
|
|
+
|
|
|
+#elif defined(VCMI_ANDROID)
|
|
|
+class VCMIDirsAndroid : public IVCMIDirsUNIX
|
|
|
+{
|
|
|
+ std::string basePath;
|
|
|
+ std::string internalPath;
|
|
|
+ std::string nativePath;
|
|
|
+public:
|
|
|
+ std::string libraryName(const std::string & basename) const override;
|
|
|
+ bfs::path fullLibraryPath(const std::string & desiredFolder, const std::string & baseLibName) const override;
|
|
|
+ bfs::path binaryPath() const override;
|
|
|
+ bfs::path libraryPath() const override;
|
|
|
+ bfs::path userDataPath() const override;
|
|
|
+ bfs::path userCachePath() const override;
|
|
|
+ bfs::path userConfigPath() const override;
|
|
|
+
|
|
|
+ std::vector<bfs::path> dataPaths() const override;
|
|
|
+
|
|
|
+ void init() override;
|
|
|
+};
|
|
|
+
|
|
|
+std::string VCMIDirsAndroid::libraryName(const std::string & basename) const { return "lib" + basename + ".so"; }
|
|
|
+bfs::path VCMIDirsAndroid::binaryPath() const { return "."; }
|
|
|
+bfs::path VCMIDirsAndroid::libraryPath() const { return nativePath; }
|
|
|
+bfs::path VCMIDirsAndroid::userDataPath() const { return basePath; }
|
|
|
+bfs::path VCMIDirsAndroid::userCachePath() const { return userDataPath() / "cache"; }
|
|
|
+bfs::path VCMIDirsAndroid::userConfigPath() const { return userDataPath() / "config"; }
|
|
|
+
|
|
|
+bfs::path VCMIDirsAndroid::fullLibraryPath(const std::string & desiredFolder, const std::string & baseLibName) const
|
|
|
+{
|
|
|
+ // ignore passed folder (all libraries in android are dumped into a single folder)
|
|
|
+ return libraryPath() / libraryName(baseLibName);
|
|
|
+}
|
|
|
+
|
|
|
+std::vector<bfs::path> VCMIDirsAndroid::dataPaths() const
|
|
|
+{
|
|
|
+ return {
|
|
|
+ internalPath,
|
|
|
+ userDataPath(),
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+void VCMIDirsAndroid::init()
|
|
|
+{
|
|
|
+ // asks java code to retrieve needed paths from environment
|
|
|
+ CAndroidVMHelper envHelper;
|
|
|
+ basePath = envHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "dataRoot");
|
|
|
+ internalPath = envHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "internalDataRoot");
|
|
|
+ nativePath = envHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "nativePath");
|
|
|
+ IVCMIDirsUNIX::init();
|
|
|
+}
|
|
|
#elif defined(VCMI_XDG)
|
|
|
class VCMIDirsXDG : public IVCMIDirsUNIX
|
|
|
{
|
|
@@ -636,56 +684,7 @@ bfs::path VCMIDirsXDG::binaryPath() const
|
|
|
|
|
|
std::string VCMIDirsXDG::libraryName(const std::string& basename) const { return "lib" + basename + ".so"; }
|
|
|
|
|
|
-#ifdef VCMI_ANDROID
|
|
|
-
|
|
|
-class VCMIDirsAndroid : public VCMIDirsXDG
|
|
|
-{
|
|
|
- std::string basePath;
|
|
|
- std::string internalPath;
|
|
|
- std::string nativePath;
|
|
|
-public:
|
|
|
- bfs::path fullLibraryPath(const std::string & desiredFolder, const std::string & baseLibName) const override;
|
|
|
- bfs::path libraryPath() const override;
|
|
|
- bfs::path userDataPath() const override;
|
|
|
- bfs::path userCachePath() const override;
|
|
|
- bfs::path userConfigPath() const override;
|
|
|
-
|
|
|
- std::vector<bfs::path> dataPaths() const override;
|
|
|
-
|
|
|
- void init() override;
|
|
|
-};
|
|
|
-
|
|
|
-bfs::path VCMIDirsAndroid::libraryPath() const { return nativePath; }
|
|
|
-bfs::path VCMIDirsAndroid::userDataPath() const { return basePath; }
|
|
|
-bfs::path VCMIDirsAndroid::userCachePath() const { return userDataPath() / "cache"; }
|
|
|
-bfs::path VCMIDirsAndroid::userConfigPath() const { return userDataPath() / "config"; }
|
|
|
-
|
|
|
-bfs::path VCMIDirsAndroid::fullLibraryPath(const std::string & desiredFolder, const std::string & baseLibName) const
|
|
|
-{
|
|
|
- // ignore passed folder (all libraries in android are dumped into a single folder)
|
|
|
- return libraryPath() / libraryName(baseLibName);
|
|
|
-}
|
|
|
-
|
|
|
-std::vector<bfs::path> VCMIDirsAndroid::dataPaths() const
|
|
|
-{
|
|
|
- std::vector<bfs::path> paths(2);
|
|
|
- paths.push_back(internalPath);
|
|
|
- paths.push_back(userDataPath());
|
|
|
- return paths;
|
|
|
-}
|
|
|
-
|
|
|
-void VCMIDirsAndroid::init()
|
|
|
-{
|
|
|
- // asks java code to retrieve needed paths from environment
|
|
|
- CAndroidVMHelper envHelper;
|
|
|
- basePath = envHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "dataRoot");
|
|
|
- internalPath = envHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "internalDataRoot");
|
|
|
- nativePath = envHelper.callStaticStringMethod(CAndroidVMHelper::NATIVE_METHODS_DEFAULT_CLASS, "nativePath");
|
|
|
- IVCMIDirs::init();
|
|
|
-}
|
|
|
-
|
|
|
-#endif // VCMI_ANDROID
|
|
|
-#endif // VCMI_APPLE, VCMI_XDG
|
|
|
+#endif // VCMI_APPLE, VCMI_ANDROID, VCMI_XDG
|
|
|
#endif // VCMI_WINDOWS, VCMI_UNIX
|
|
|
|
|
|
// Getters for interfaces are separated for clarity.
|