Android: update UI for graphics mods 2.0

This commit is contained in:
iwubcode 2024-04-14 15:07:41 -05:00
commit 032fbd4436
2 changed files with 21 additions and 31 deletions

View file

@ -5,13 +5,14 @@
#include <jni.h> #include <jni.h>
#include "VideoCommon/GraphicsModSystem/Config/GraphicsMod.h" #include "VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h"
#include "jni/AndroidCommon/AndroidCommon.h" #include "jni/AndroidCommon/AndroidCommon.h"
#include "jni/AndroidCommon/IDCache.h" #include "jni/AndroidCommon/IDCache.h"
static GraphicsModConfig* GetPointer(JNIEnv* env, jobject obj) static GraphicsModSystem::Config::GraphicsModGroup::GraphicsModWithMetadata* GetPointer(JNIEnv* env,
jobject obj)
{ {
return reinterpret_cast<GraphicsModConfig*>( return reinterpret_cast<GraphicsModSystem::Config::GraphicsModGroup::GraphicsModWithMetadata*>(
env->GetLongField(obj, IDCache::GetGraphicsModPointer())); env->GetLongField(obj, IDCache::GetGraphicsModPointer()));
} }
@ -20,20 +21,20 @@ extern "C" {
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsMod_getName(JNIEnv* env, jobject obj) Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsMod_getName(JNIEnv* env, jobject obj)
{ {
return ToJString(env, GetPointer(env, obj)->m_title); return ToJString(env, GetPointer(env, obj)->m_mod.m_title);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsMod_getCreator(JNIEnv* env, Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsMod_getCreator(JNIEnv* env,
jobject obj) jobject obj)
{ {
return ToJString(env, GetPointer(env, obj)->m_author); return ToJString(env, GetPointer(env, obj)->m_mod.m_author);
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsMod_getNotes(JNIEnv* env, jobject obj) Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsMod_getNotes(JNIEnv* env, jobject obj)
{ {
return ToJString(env, GetPointer(env, obj)->m_description); return ToJString(env, GetPointer(env, obj)->m_mod.m_description);
} }
JNIEXPORT jboolean JNICALL JNIEXPORT jboolean JNICALL

View file

@ -3,21 +3,21 @@
#include <jni.h> #include <jni.h>
#include <set>
#include <vector> #include <vector>
#include "VideoCommon/GraphicsModSystem/Config/GraphicsMod.h"
#include "VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h" #include "VideoCommon/GraphicsModSystem/Config/GraphicsModGroup.h"
#include "jni/AndroidCommon/AndroidCommon.h" #include "jni/AndroidCommon/AndroidCommon.h"
#include "jni/AndroidCommon/IDCache.h" #include "jni/AndroidCommon/IDCache.h"
static GraphicsModGroupConfig* GetPointer(JNIEnv* env, jobject obj) static GraphicsModSystem::Config::GraphicsModGroup* GetPointer(JNIEnv* env, jobject obj)
{ {
return reinterpret_cast<GraphicsModGroupConfig*>( return reinterpret_cast<GraphicsModSystem::Config::GraphicsModGroup*>(
env->GetLongField(obj, IDCache::GetGraphicsModGroupPointer())); env->GetLongField(obj, IDCache::GetGraphicsModGroupPointer()));
} }
jobject GraphicsModToJava(JNIEnv* env, GraphicsModConfig* mod, jobject jGraphicsModGroup) jobject GraphicsModToJava(JNIEnv* env,
GraphicsModSystem::Config::GraphicsModGroup::GraphicsModWithMetadata* mod,
jobject jGraphicsModGroup)
{ {
return env->NewObject(IDCache::GetGraphicsModClass(), IDCache::GetGraphicsModConstructor(), return env->NewObject(IDCache::GetGraphicsModClass(), IDCache::GetGraphicsModConstructor(),
reinterpret_cast<jlong>(mod), jGraphicsModGroup); reinterpret_cast<jlong>(mod), jGraphicsModGroup);
@ -36,34 +36,23 @@ JNIEXPORT jobjectArray JNICALL
Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsModGroup_getMods(JNIEnv* env, Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsModGroup_getMods(JNIEnv* env,
jobject obj) jobject obj)
{ {
GraphicsModGroupConfig* mod_group = GetPointer(env, obj); GraphicsModSystem::Config::GraphicsModGroup* mod_group = GetPointer(env, obj);
std::vector<GraphicsModSystem::Config::GraphicsModGroup::GraphicsModWithMetadata*> mods;
std::set<std::string> groups; for (auto& mod : mod_group->GetMods())
for (const GraphicsModConfig& mod : mod_group->GetMods())
{ {
for (const GraphicsTargetGroupConfig& group : mod.m_groups) if (mod.m_mod.m_actions.empty())
groups.insert(group.m_name);
}
std::vector<GraphicsModConfig*> mods;
for (GraphicsModConfig& mod : mod_group->GetMods())
{
// If no group matches the mod's features, or if the mod has no features, skip it
if (std::ranges::none_of(mod.m_features, [&groups](const GraphicsModFeatureConfig& feature) {
return groups.contains(feature.m_group);
}))
{
continue; continue;
}
mods.push_back(&mod); mods.push_back(&mod);
} }
return VectorToJObjectArray( return VectorToJObjectArray(
env, mods, IDCache::GetGraphicsModClass(), env, mods, IDCache::GetGraphicsModClass(),
[obj](JNIEnv* env, GraphicsModConfig* mod) { return GraphicsModToJava(env, mod, obj); }); [obj](JNIEnv* env,
GraphicsModSystem::Config::GraphicsModGroup::GraphicsModWithMetadata* mod) {
return GraphicsModToJava(env, mod, obj);
});
} }
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
@ -76,7 +65,7 @@ JNIEXPORT jobject JNICALL
Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsModGroup_load(JNIEnv* env, jclass, Java_org_dolphinemu_dolphinemu_features_cheats_model_GraphicsModGroup_load(JNIEnv* env, jclass,
jstring jGameId) jstring jGameId)
{ {
auto* mod_group = new GraphicsModGroupConfig(GetJString(env, jGameId)); auto* mod_group = new GraphicsModSystem::Config::GraphicsModGroup(GetJString(env, jGameId));
mod_group->Load(); mod_group->Load();