Skip to content

Commit 654a189

Browse files
authored
fix or test! (#4)
1 parent c2f8b7b commit 654a189

3 files changed

Lines changed: 36 additions & 110 deletions

File tree

src/pl/PreLoader.cpp

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
#include <dlfcn.h>
88
#include <android/log.h>
99
#include "internal/AndroidUtils.h"
10-
#include "internal/ModManager.h"
1110
#include "Logger.h"
1211
#include "PreloaderInput.h"
12+
#include "pl/internal/Macro.h"
1313

14-
pl::log::Logger logger("NativeLoader");
14+
pl::log::Logger logger("Preloader");
15+
using LoadFunc = void (*)(JavaVM *);
1516

1617
static std::vector<PreloaderInput_OnTouch_Fn> g_touchCallbacks;
1718
static std::mutex g_callbackMutex;
@@ -28,6 +29,13 @@ static void (*androidMain)(struct android_app*) = nullptr;
2829

2930
extern "C" {
3031

32+
PLCAPI std::string getModsDir() {
33+
return g_modsDir;
34+
}
35+
36+
PLCAPI std::string getCacheDir() {
37+
return g_cacheDir;
38+
}
3139

3240
JNIEXPORT void ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize) {
3341
if (onCreate) {
@@ -65,9 +73,9 @@ JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
6573
}
6674

6775
JNIEXPORT void JNICALL
68-
Java_org_levimc_launcher_core_minecraft_MinecraftActivity_nativeOnLauncherLoaded(
76+
Java_org_levimc_launcher_core_mods_ModManager_nativeOnLaunched(
6977
JNIEnv* env,
70-
jobject thiz,
78+
jclass clazz,
7179
jstring libPath
7280
) {
7381
const char* path = env->GetStringUTFChars(libPath, nullptr);
@@ -89,37 +97,34 @@ Java_org_levimc_launcher_core_minecraft_MinecraftActivity_nativeOnLauncherLoaded
8997
logger.debug("Successfully loaded Minecraft native functions");
9098
}
9199
env->ReleaseStringUTFChars(libPath, path);
92-
if (!g_modsInitialized && !g_modsDir.empty()) {
93-
ModManager::LoadAndInitializeEnabledMods(g_modsDir, g_cacheDir, g_vm);
94-
g_modsInitialized = true;
95-
logger.debug("Mods initialized successfully");
96-
}
97100
}
98101

99-
JNIEXPORT void JNICALL
100-
Java_org_levimc_launcher_core_minecraft_MinecraftLauncher_nativeOnLauncherLoaded(
101-
JNIEnv* env,
102-
jobject thiz,
103-
jstring libPath
104-
) {
105-
106-
107-
Java_org_levimc_launcher_core_minecraft_MinecraftActivity_nativeOnLauncherLoaded(env, thiz, libPath);
102+
JNIEXPORT jboolean JNICALL Java_org_levimc_launcher_core_mods_ModManager_nativeLoadMod(JNIEnv* env, jclass clazz, jstring libPath) {
103+
const char* path = env->GetStringUTFChars(libPath, nullptr);
104+
if (void *handle = dlopen(path, RTLD_NOW)) {
105+
LoadFunc func = (LoadFunc)dlsym(handle, "LeviMod_Load");
106+
if (func) {
107+
func(vm);
108+
}
109+
} else {
110+
logger.error("failed to load mod: %s", path);
111+
return JNI_FALSE;
112+
}
113+
env->ReleaseStringUTFChars(libPath, path);
114+
logger.info("successful loading mod: %s", path);
115+
return JNI_TRUE;
108116
}
109117

118+
JNIEXPORT jboolean JNICALL Java_org_levimc_launcher_preloader_PreloaderInput_nativeOnTouch(JNIEnv* env, jclass clazz, jint action, jint pointerId, jfloat x, jfloat y) {
110119

111-
112-
JNIEXPORT jboolean JNICALL Java_org_levimc_launcher_preloader_PreloaderInput_nativeOnTouch(
113-
JNIEnv* env, jclass clazz, jint action, jint pointerId, jfloat x, jfloat y) {
114-
115-
std::lock_guard<std::mutex> lock(g_callbackMutex);
116-
bool consumed = false;
117-
for (auto callback : g_touchCallbacks) {
118-
if (callback) {
119-
consumed |= callback(action, pointerId, x, y);
120-
}
121-
}
122-
return consumed ? JNI_TRUE : JNI_FALSE;
120+
std::lock_guard<std::mutex> lock(g_callbackMutex);
121+
bool consumed = false;
122+
for (auto callback : g_touchCallbacks) {
123+
if (callback) {
124+
consumed |= callback(action, pointerId, x, y);
125+
}
126+
}
127+
return consumed ? JNI_TRUE : JNI_FALSE;
123128
}
124129

125130
static void RegisterTouchCallback(PreloaderInput_OnTouch_Fn callback) {
@@ -132,7 +137,7 @@ static PreloaderInput_Interface g_inputInterface = {
132137
.RegisterTouchCallback = RegisterTouchCallback
133138
};
134139

135-
__attribute__((visibility("default"))) PreloaderInput_Interface* GetPreloaderInput() {
140+
PLCAPI PreloaderInput_Interface* GetPreloaderInput() {
136141
return &g_inputInterface;
137142
}
138143

src/pl/internal/ModManager.cpp

Lines changed: 0 additions & 68 deletions
This file was deleted.

src/pl/internal/ModManager.h

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)