|
From: Tapio V. <aa...@us...> - 2012-01-31 11:46:23
|
Author: Tapio Vierros <tap...@gm...>
Date: Thu Dec 15 19:22:32 2011 +0200
Instrument forcing in UI.
* Dynamically populate the config items with available controller presets.
* Use the config values when evaluating instrument forcing.
---
game/joystick.cc | 23 ++++++++++++++++++++++-
1 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/game/joystick.cc b/game/joystick.cc
index 29432ed..21285e1 100644
--- a/game/joystick.cc
+++ b/game/joystick.cc
@@ -333,8 +333,29 @@ void input::SDL::init() {
readControllers(g_instruments, getDefaultConfig(fs::path("/config/controllers.xml")));
readControllers(g_instruments, getConfigDir() / "controllers.xml");
std::map<unsigned int, input::Instrument> forced_type;
+ ConfigItem::StringList instruments = config["game/instruments"].sl();
+
+ // Populate controller forcing config items
+ ConfigItem& ci0 = config["game/instrument0"];
+ ConfigItem& ci1 = config["game/instrument1"];
+ ConfigItem& ci2 = config["game/instrument2"];
+ ConfigItem& ci3 = config["game/instrument3"];
+ int i = 0;
+ for (input::Instruments::const_iterator it = g_instruments.begin(); it != g_instruments.end(); ++it, ++i) {
+ // Add the enum
+ std::string title = it->second.description;
+ ci0.addEnum(title);
+ ci1.addEnum(title);
+ ci2.addEnum(title);
+ ci3.addEnum(title);
+ // Check for active items
+ if (i == ci0.i()-1) instruments.push_back("0:" + it->first);
+ if (i == ci1.i()-1) instruments.push_back("1:" + it->first);
+ if (i == ci2.i()-1) instruments.push_back("2:" + it->first);
+ if (i == ci3.i()-1) instruments.push_back("3:" + it->first);
+ }
- ConfigItem::StringList const& instruments = config["game/instruments"].sl();
+ // Check all forced instruments
for (ConfigItem::StringList::const_iterator it = instruments.begin(); it != instruments.end(); ++it) {
std::istringstream iss(*it);
unsigned sdl_id;
|