summaryrefslogtreecommitdiff
path: root/Source/Android/jni/ButtonManager.cpp
diff options
context:
space:
mode:
authorzackhow <zackhow@gmail.com>2018-08-26 18:27:27 -0400
committerzackhow <zackhow@gmail.com>2018-10-28 20:22:06 -0400
commit5d93a10c60f25acd4f9045234156fd68720b1a87 (patch)
treea2cc8f25eef65ca3ad4158f2344dbfd01c44d32b /Source/Android/jni/ButtonManager.cpp
parentf1413dbbf6eeb8d95636a975ffe85653ac85751e (diff)
Android: Add game specific gc/wii controller settings
Diffstat (limited to 'Source/Android/jni/ButtonManager.cpp')
-rw-r--r--Source/Android/jni/ButtonManager.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/Source/Android/jni/ButtonManager.cpp b/Source/Android/jni/ButtonManager.cpp
index 637b23b3da..251c754968 100644
--- a/Source/Android/jni/ButtonManager.cpp
+++ b/Source/Android/jni/ButtonManager.cpp
@@ -335,7 +335,7 @@ static void AddBind(const std::string& dev, sBind* bind)
m_controllers[dev]->AddBind(bind);
}
-void Init()
+void Init(const std::string& gameId)
{
// Initialize our touchScreenKey buttons
for (int a = 0; a < 8; ++a)
@@ -592,6 +592,40 @@ void Init()
new sBind(padID, configTypes[a], type, bindnum, modifier == '-' ? -1.0f : 1.0f));
}
}
+
+ ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + std::string(gameId + ".ini"));
+ for (u32 a = 0; a < configStrings.size(); ++a)
+ {
+ for (int padID = 0; padID < 8; ++padID)
+ {
+ std::ostringstream config;
+ config << configStrings[a] << "_" << padID;
+ BindType type;
+ int bindnum;
+ char dev[128];
+ bool hasbind = false;
+ char modifier = '+';
+ std::string value;
+ ini.GetOrCreateSection("Android")->Get(config.str(), &value, "None");
+ if (value == "None")
+ continue;
+ if (std::string::npos != value.find("Axis"))
+ {
+ hasbind = true;
+ type = BIND_AXIS;
+ sscanf(value.c_str(), "Device '%127[^\']'-Axis %d%c", dev, &bindnum, &modifier);
+ }
+ else if (std::string::npos != value.find("Button"))
+ {
+ hasbind = true;
+ type = BIND_BUTTON;
+ sscanf(value.c_str(), "Device '%127[^\']'-Button %d", dev, &bindnum);
+ }
+ if (hasbind)
+ AddBind(std::string(dev),
+ new sBind(padID, configTypes[a], type, bindnum, modifier == '-' ? -1.0f : 1.0f));
+ }
+ }
}
bool GetButtonPressed(int padID, ButtonType button)