Skip to content

Commit

Permalink
Android: Get profile name from core
Browse files Browse the repository at this point in the history
To avoid duplicating information between Kotlin and C++.
  • Loading branch information
JosJuice committed Oct 1, 2023
1 parent b2e016f commit d6c0f8e
Show file tree
Hide file tree
Showing 19 changed files with 75 additions and 10 deletions.
Expand Up @@ -30,6 +30,8 @@ class EmulatedController private constructor(private val pointer: Long) {

external fun saveProfile(path: String)

external fun getProfileName(): String

companion object {
@JvmStatic
external fun getGcPad(controllerIndex: Int): EmulatedController
Expand Down
Expand Up @@ -100,15 +100,14 @@ class ProfileDialogPresenter {
.show()
}

private val profileDirectoryName: String
get() = if (menuTag.isGCPadMenu) "GCPad" else if (menuTag.isWiimoteMenu) "Wiimote" else throw UnsupportedOperationException()

private fun getProfileDirectoryPath(stock: Boolean): String =
if (stock) {
private fun getProfileDirectoryPath(stock: Boolean): String {
val profileDirectoryName = menuTag.correspondingEmulatedController.getProfileName()
return if (stock) {
"${DirectoryInitialization.getSysDirectory()}/Profiles/$profileDirectoryName/"
} else {
"${DirectoryInitialization.getUserDirectory()}/Config/Profiles/$profileDirectoryName/"
}
}

private fun getProfilePath(profileName: String, stock: Boolean): String =
getProfileDirectoryPath(stock) + profileName + EXTENSION
Expand Down
Expand Up @@ -2076,7 +2076,7 @@ class SettingsFragmentPresenter(
val gcPad = EmulatedController.getGcPad(gcPadNumber)

if (!TextUtils.isEmpty(gameId)) {
addControllerPerGameSettings(sl, "Pad", gcPadNumber)
addControllerPerGameSettings(sl, gcPad, gcPadNumber)
} else {
addControllerMetaSettings(sl, gcPad)
addControllerMappingSettings(sl, gcPad, null)
Expand Down Expand Up @@ -2106,7 +2106,7 @@ class SettingsFragmentPresenter(
val wiimote = EmulatedController.getWiimote(wiimoteNumber)

if (!TextUtils.isEmpty(gameId)) {
addControllerPerGameSettings(sl, "Wiimote", wiimoteNumber)
addControllerPerGameSettings(sl, wiimote, wiimoteNumber)
} else {
addControllerMetaSettings(sl, wiimote)

Expand Down Expand Up @@ -2202,11 +2202,11 @@ class SettingsFragmentPresenter(
*/
private fun addControllerPerGameSettings(
sl: ArrayList<SettingsItem>,
profileString: String,
controller: EmulatedController,
controllerNumber: Int
) {
val profiles = ProfileDialogPresenter(menuTag).getProfileNames(false)
val profileKey = profileString + "Profile" + (controllerNumber + 1)
val profileKey = controller.getProfileName() + "Profile" + (controllerNumber + 1)
sl.add(
StringSingleChoiceSetting(
context,
Expand Down
7 changes: 7 additions & 0 deletions Source/Android/jni/Input/EmulatedController.cpp
Expand Up @@ -124,6 +124,13 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedContro
ini.Save(path);
}

JNIEXPORT jstring JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getProfileName(
JNIEnv* env, jobject obj)
{
return ToJString(env, EmulatedControllerFromJava(env, obj)->GetConfig()->GetProfileName());
}

JNIEXPORT jobject JNICALL
Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_EmulatedController_getGcPad(
JNIEnv* env, jclass, jint controller_index)
Expand Down
5 changes: 5 additions & 0 deletions Source/Core/Core/FreeLookManager.cpp
Expand Up @@ -118,6 +118,11 @@ std::string FreeLookController::GetName() const
return std::string("FreeLook") + char('1' + m_index);
}

InputConfig* FreeLookController::GetConfig() const
{
return FreeLook::GetInputConfig();
}

void FreeLookController::LoadDefaults(const ControllerInterface& ciface)
{
EmulatedController::LoadDefaults(ciface);
Expand Down
1 change: 1 addition & 0 deletions Source/Core/Core/FreeLookManager.h
Expand Up @@ -47,6 +47,7 @@ class FreeLookController final : public ControllerEmu::EmulatedController
explicit FreeLookController(unsigned int index);

std::string GetName() const override;
InputConfig* GetConfig() const override;
void LoadDefaults(const ControllerInterface& ciface) override;

ControllerEmu::ControlGroup* GetGroup(FreeLookGroup group) const;
Expand Down
7 changes: 7 additions & 0 deletions Source/Core/Core/HW/GBAPadEmu.cpp
Expand Up @@ -5,6 +5,8 @@

#include <fmt/format.h>

#include "Core/HW/GBAPad.h"

#include "InputCommon/ControllerEmu/Control/Input.h"
#include "InputCommon/ControllerEmu/ControlGroup/Buttons.h"
#include "InputCommon/GCPadStatus.h"
Expand Down Expand Up @@ -43,6 +45,11 @@ std::string GBAPad::GetName() const
return fmt::format("GBA{}", m_index + 1);
}

InputConfig* GBAPad::GetConfig() const
{
return Pad::GetGBAConfig();
}

ControllerEmu::ControlGroup* GBAPad::GetGroup(GBAPadGroup group) const
{
switch (group)
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/Core/HW/GBAPadEmu.h
Expand Up @@ -29,6 +29,8 @@ class GBAPad : public ControllerEmu::EmulatedController

std::string GetName() const override;

InputConfig* GetConfig() const override;

ControllerEmu::ControlGroup* GetGroup(GBAPadGroup group) const;

void LoadDefaults(const ControllerInterface& ciface) override;
Expand Down
8 changes: 8 additions & 0 deletions Source/Core/Core/HW/GCKeyboardEmu.cpp
Expand Up @@ -5,6 +5,9 @@

#include "Common/Common.h"
#include "Common/CommonTypes.h"

#include "Core/HW/GCKeyboard.h"

#include "InputCommon/ControllerEmu/Control/Input.h"
#include "InputCommon/ControllerEmu/ControlGroup/Buttons.h"
#include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h"
Expand Down Expand Up @@ -84,6 +87,11 @@ std::string GCKeyboard::GetName() const
return std::string("GCKeyboard") + char('1' + m_index);
}

InputConfig* GCKeyboard::GetConfig() const
{
return Keyboard::GetConfig();
}

ControllerEmu::ControlGroup* GCKeyboard::GetGroup(KeyboardGroup group)
{
switch (group)
Expand Down
1 change: 1 addition & 0 deletions Source/Core/Core/HW/GCKeyboardEmu.h
Expand Up @@ -31,6 +31,7 @@ class GCKeyboard : public ControllerEmu::EmulatedController
explicit GCKeyboard(unsigned int index);
KeyboardStatus GetInput() const;
std::string GetName() const override;
InputConfig* GetConfig() const override;
ControllerEmu::ControlGroup* GetGroup(KeyboardGroup group);
void LoadDefaults(const ControllerInterface& ciface) override;

Expand Down
8 changes: 7 additions & 1 deletion Source/Core/Core/HW/GCPadEmu.cpp
Expand Up @@ -8,14 +8,15 @@
#include "Common/Common.h"
#include "Common/CommonTypes.h"

#include "Core/HW/GCPad.h"

#include "InputCommon/ControllerEmu/Control/Input.h"
#include "InputCommon/ControllerEmu/Control/Output.h"
#include "InputCommon/ControllerEmu/ControlGroup/AnalogStick.h"
#include "InputCommon/ControllerEmu/ControlGroup/Buttons.h"
#include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h"
#include "InputCommon/ControllerEmu/ControlGroup/MixedTriggers.h"
#include "InputCommon/ControllerEmu/StickGate.h"

#include "InputCommon/GCPadStatus.h"

static const u16 button_bitmasks[] = {
Expand Down Expand Up @@ -95,6 +96,11 @@ std::string GCPad::GetName() const
return std::string("GCPad") + char('1' + m_index);
}

InputConfig* GCPad::GetConfig() const
{
return Pad::GetConfig();
}

ControllerEmu::ControlGroup* GCPad::GetGroup(PadGroup group)
{
switch (group)
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/Core/HW/GCPadEmu.h
Expand Up @@ -43,6 +43,8 @@ class GCPad : public ControllerEmu::EmulatedController

std::string GetName() const override;

InputConfig* GetConfig() const override;

ControllerEmu::ControlGroup* GetGroup(PadGroup group);

void LoadDefaults(const ControllerInterface& ciface) override;
Expand Down
6 changes: 6 additions & 0 deletions Source/Core/Core/HW/WiimoteEmu/Extension/Extension.cpp
Expand Up @@ -10,6 +10,7 @@
#include "Common/CommonTypes.h"
#include "Common/Inline.h"

#include "Core/HW/Wiimote.h"
#include "Core/HW/WiimoteEmu/Extension/DesiredExtensionState.h"
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"

Expand All @@ -36,6 +37,11 @@ std::string Extension::GetDisplayName() const
return m_display_name;
}

InputConfig* Extension::GetConfig() const
{
return ::Wiimote::GetConfig();
}

None::None() : Extension("None")
{
}
Expand Down
2 changes: 2 additions & 0 deletions Source/Core/Core/HW/WiimoteEmu/Extension/Extension.h
Expand Up @@ -27,6 +27,8 @@ class Extension : public ControllerEmu::EmulatedController, public I2CSlave
std::string GetName() const override;
std::string GetDisplayName() const override;

InputConfig* GetConfig() const override;

// Used by the wiimote to detect extension changes.
// The normal extensions short this pin so it's always connected,
// but M+ does some tricks with it during activation.
Expand Down
5 changes: 5 additions & 0 deletions Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp
Expand Up @@ -324,6 +324,11 @@ std::string Wiimote::GetName() const
return fmt::format("Wiimote{}", 1 + m_index);
}

InputConfig* Wiimote::GetConfig() const
{
return ::Wiimote::GetConfig();
}

ControllerEmu::ControlGroup* Wiimote::GetWiimoteGroup(WiimoteGroup group) const
{
switch (group)
Expand Down
3 changes: 3 additions & 0 deletions Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h
Expand Up @@ -137,6 +137,9 @@ class Wiimote : public ControllerEmu::EmulatedController, public WiimoteCommon::
~Wiimote();

std::string GetName() const override;

InputConfig* GetConfig() const override;

void LoadDefaults(const ControllerInterface& ciface) override;

ControllerEmu::ControlGroup* GetWiimoteGroup(WiimoteGroup group) const;
Expand Down
5 changes: 5 additions & 0 deletions Source/Core/Core/HotkeyManager.cpp
Expand Up @@ -383,6 +383,11 @@ std::string HotkeyManager::GetName() const
return "Hotkeys";
}

InputConfig* HotkeyManager::GetConfig() const
{
return HotkeyManagerEmu::GetConfig();
}

void HotkeyManager::GetInput(HotkeyStatus* kb, bool ignore_focus)
{
const auto lock = GetStateLock();
Expand Down
1 change: 1 addition & 0 deletions Source/Core/Core/HotkeyManager.h
Expand Up @@ -233,6 +233,7 @@ class HotkeyManager : public ControllerEmu::EmulatedController

void GetInput(HotkeyStatus* hk, bool ignore_focus);
std::string GetName() const override;
InputConfig* GetConfig() const override;
ControllerEmu::ControlGroup* GetHotkeyGroup(HotkeyGroup group) const;
int FindGroupByID(int id) const;
int GetIndexForGroup(int group, int id) const;
Expand Down
3 changes: 3 additions & 0 deletions Source/Core/InputCommon/ControllerEmu/ControllerEmu.h
Expand Up @@ -19,6 +19,7 @@
#include "InputCommon/ControllerInterface/CoreDevice.h"

class ControllerInterface;
class InputConfig;

constexpr const char* DIRECTION_UP = _trans("Up");
constexpr const char* DIRECTION_DOWN = _trans("Down");
Expand Down Expand Up @@ -180,6 +181,8 @@ class EmulatedController
virtual std::string GetName() const = 0;
virtual std::string GetDisplayName() const;

virtual InputConfig* GetConfig() const = 0;

virtual void LoadDefaults(const ControllerInterface& ciface);

virtual void LoadConfig(Common::IniFile::Section* sec, const std::string& base = "");
Expand Down

0 comments on commit d6c0f8e

Please sign in to comment.