Map compiles now and can be set

This commit is contained in:
Fantasmos 2017-10-28 11:35:11 +11:00
parent f10feb77fd
commit ca330b1ac0
3 changed files with 29 additions and 27 deletions

View File

@ -426,10 +426,9 @@ void MapUserConfigParam<T, U>::findYourDataInAChildOf(const XMLNode* node)
for (const auto& kv : m_elements) { for (const auto& kv : m_elements) {
std::pair<T,U> elt; std::pair<T,U> elt;
std::string str;
child->get(kv.first, &str);
elt.first = kv.first; elt.first = kv.first;
elt.second = str.c_str(); elt.second = kv.second;
bool there = false; bool there = false;

View File

@ -169,17 +169,19 @@ public:
{ {
return m_elements; return m_elements;
} }
float& operator=(const std::map<T,U>& v) std::map<T, U>& operator=(const std::map<T,U>& v)
{ {
m_elements = std::map<T, U>(v); return m_elements; m_elements = std::map<T, U>(v);
return m_elements;
} }
float& operator=(const MapUserConfigParam& v) std::map<T, U>& operator=(const MapUserConfigParam& v)
{ {
m_elements = std::map<T,U>(v); return m_elements; m_elements = std::map<T,U>(v);
return m_elements;
} }
}; // ListUserConfigParam }; // ListUserConfigParam
typedef MapUserConfigParam<const char*, const char*> StringToStringUserConfigParam; typedef MapUserConfigParam<const char*, const char*> StringToStringUserConfigParam;
typedef MapUserConfigParam<int, int> IntToIntUserConfigParam;
// ============================================================================ // ============================================================================
class IntUserConfigParam : public UserConfigParam class IntUserConfigParam : public UserConfigParam
{ {
@ -753,14 +755,14 @@ namespace UserConfigParams
"stun.voxalot.com", "stun.voxalot.com",
"stun.voxgratia.org", "stun.voxgratia.org",
"stun.xten.com") ); "stun.xten.com") );
PARAM_PREFIX StringToStringUserConfigParam m_karts_per_gamemode PARAM_PREFIX IntToIntUserConfigParam m_karts_per_gamemode
PARAM_DEFAULT(StringToStringUserConfigParam("karts_per_gamemode", "The karts per gamemode" PARAM_DEFAULT(IntToIntUserConfigParam("karts_per_gamemode", "The karts per gamemode"
"Number of karts per gamemode. Order corresponds to Enum value", "Number of karts per gamemode. Order corresponds to Enum value",
4, 4,
std::make_pair("3", "1"), std::make_pair(0, 1),
std::make_pair("f", "2"), std::make_pair(1, 2),
std::make_pair("e", "4"), std::make_pair(3, 4),
std::make_pair("te", "5") std::make_pair(4, 5)
)); ));
PARAM_PREFIX BoolUserConfigParam m_log_packets PARAM_PREFIX BoolUserConfigParam m_log_packets
PARAM_DEFAULT( BoolUserConfigParam(false, "log-network-packets", PARAM_DEFAULT( BoolUserConfigParam(false, "log-network-packets",

View File

@ -165,21 +165,24 @@ void TrackInfoScreen::init()
getWidget<LabelWidget>("ai-text")->setVisible(has_AI); getWidget<LabelWidget>("ai-text")->setVisible(has_AI);
UserConfigParams::m_num_karts; UserConfigParams::m_num_karts;
std::map<const char* , const char*> karts_per_gamemode = UserConfigParams::m_karts_per_gamemode; std::map<int , int> karts_per_gamemode = UserConfigParams::m_karts_per_gamemode;
auto data = UserConfigParams::m_karts_per_gamemode;
if (has_AI) if (has_AI)
{ {
m_ai_kart_spinner->setActive(true); m_ai_kart_spinner->setActive(true);
int gamemode = race_manager->getMinorMode(); int gamemode = race_manager->getMinorMode();
//Temp fix int num_ai = karts_per_gamemode[gamemode];
//int num_ai = stoi(karts_per_gamemode[ "3"/*gamemode*/]) - local_players; //TODO error caused by enums not being sequential
int num_ai = 1;
// Avoid negative numbers (which can happen if e.g. the number of karts // Avoid negative numbers (which can happen if e.g. the number of karts
// in a previous race was lower than the number of players now. // in a previous race was lower than the number of players now.
if (num_ai < 0) num_ai = 0; if (num_ai < 0)
{
num_ai = 0;
karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumPlayers();
UserConfigParams::m_karts_per_gamemode = karts_per_gamemode;
}
m_ai_kart_spinner->setValue(num_ai); m_ai_kart_spinner->setValue(num_ai);
race_manager->setNumKarts(num_ai + local_players); race_manager->setNumKarts(num_ai + local_players);
@ -251,10 +254,8 @@ void TrackInfoScreen::init()
m_ai_kart_spinner->setActive(false); m_ai_kart_spinner->setActive(false);
race_manager->setNumKarts(race_manager->getNumLocalPlayers()); race_manager->setNumKarts(race_manager->getNumLocalPlayers());
//This is causing an error karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumPlayers();
/// karts_per_gamemode[race_manager->getMinorMode()] = std::to_string(race_manager->getNumLocalPlayers()); UserConfigParams::m_karts_per_gamemode = karts_per_gamemode;
// UserConfigParams::m_karts_per_gamemode = karts_per_gamemode; //TODO Causes error
UserConfigParams::m_num_karts = race_manager->getNumLocalPlayers();
} }
else if (record_available) else if (record_available)
{ {