Removed Tab, first working version!
This commit is contained in:
parent
ca330b1ac0
commit
4fbc39572b
@ -322,149 +322,149 @@ core::stringc ListUserConfigParam<T, U>::toString() const
|
||||
return "";
|
||||
} // toString
|
||||
|
||||
// ============================================================================
|
||||
// ============================================================================
|
||||
template<typename T, typename U>
|
||||
MapUserConfigParam<T, U>::MapUserConfigParam(const char* param_name,
|
||||
const char* comment)
|
||||
const char* comment)
|
||||
{
|
||||
m_param_name = param_name;
|
||||
all_params.push_back(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
m_param_name = param_name;
|
||||
all_params.push_back(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
} // MapUserConfigParam
|
||||
|
||||
// ============================================================================
|
||||
// ============================================================================
|
||||
template<typename T, typename U>
|
||||
MapUserConfigParam<T, U>::MapUserConfigParam(const char* param_name,
|
||||
const char* comment,
|
||||
int nb_elements,
|
||||
...)
|
||||
const char* comment,
|
||||
int nb_elements,
|
||||
...)
|
||||
{
|
||||
m_param_name = param_name;
|
||||
all_params.push_back(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
m_param_name = param_name;
|
||||
all_params.push_back(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
|
||||
// add the default list
|
||||
va_list arguments;
|
||||
va_start(arguments, nb_elements);
|
||||
typedef std::pair<T, U> DictThing;
|
||||
for (int i = 0; i < nb_elements; i++) {
|
||||
std::pair<T, U> key_value_pair = va_arg(arguments, DictThing);
|
||||
m_elements.insert(key_value_pair);
|
||||
}
|
||||
va_end(arguments); // Cleans up the list
|
||||
// add the default list
|
||||
va_list arguments;
|
||||
va_start(arguments, nb_elements);
|
||||
typedef std::pair<T, U> DictThing;
|
||||
for (int i = 0; i < nb_elements; i++) {
|
||||
std::pair<T, U> key_value_pair = va_arg(arguments, DictThing);
|
||||
m_elements.insert(key_value_pair);
|
||||
}
|
||||
va_end(arguments); // Cleans up the list
|
||||
} // MapUserConfigParam
|
||||
|
||||
// ============================================================================
|
||||
// ============================================================================
|
||||
template<typename T, typename U>
|
||||
MapUserConfigParam<T, U>::MapUserConfigParam(const char* param_name,
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment)
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment)
|
||||
{
|
||||
m_param_name = param_name;
|
||||
group->addChild(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
m_param_name = param_name;
|
||||
group->addChild(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
} // MapUserConfigParam
|
||||
|
||||
// ============================================================================
|
||||
// ============================================================================
|
||||
template<typename T, typename U>
|
||||
MapUserConfigParam<T, U>::MapUserConfigParam(const char* param_name,
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment,
|
||||
int nb_elements,
|
||||
...)
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment,
|
||||
int nb_elements,
|
||||
...)
|
||||
{
|
||||
m_param_name = param_name;
|
||||
group->addChild(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
m_param_name = param_name;
|
||||
group->addChild(this);
|
||||
if (comment != NULL) m_comment = comment;
|
||||
|
||||
// add the default list
|
||||
va_list arguments;
|
||||
va_start(arguments, nb_elements);
|
||||
|
||||
for (int i = 0; i < nb_elements; i++) {
|
||||
std::pair<T, U> key_value_pair = va_arg(arguments, DictThing);
|
||||
m_elements.insert(key_value_pair);
|
||||
}
|
||||
va_end(arguments); // Cleans up the list
|
||||
// add the default list
|
||||
va_list arguments;
|
||||
va_start(arguments, nb_elements);
|
||||
|
||||
for (int i = 0; i < nb_elements; i++) {
|
||||
std::pair<T, U> key_value_pair = va_arg(arguments, DictThing);
|
||||
m_elements.insert(key_value_pair);
|
||||
}
|
||||
va_end(arguments); // Cleans up the list
|
||||
} // MapUserConfigParam
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
template<typename T, typename U>
|
||||
void MapUserConfigParam<T, U>::write(std::ofstream& stream) const
|
||||
{
|
||||
const int elts_amount = m_elements.size();
|
||||
const int elts_amount = m_elements.size();
|
||||
|
||||
// comment
|
||||
if (m_comment.size() > 0) stream << " <!-- " << m_comment.c_str();
|
||||
stream << " -->\n <" << m_param_name.c_str() << "\n";
|
||||
// comment
|
||||
if (m_comment.size() > 0) stream << " <!-- " << m_comment.c_str();
|
||||
stream << " -->\n <" << m_param_name.c_str() << "\n";
|
||||
|
||||
stream << " Size=\"" << elts_amount << "\"\n";
|
||||
// actual elements
|
||||
//for (int n = 0; n<elts_amount; n++)
|
||||
|
||||
for (const auto& kv : m_elements) {
|
||||
stream << " " << kv.first << "=\"" << kv.second << "\"\n";
|
||||
}
|
||||
stream << " >\n";
|
||||
stream << " </" << m_param_name.c_str() << ">\n\n";
|
||||
stream << " Size=\"" << elts_amount << "\"\n";
|
||||
// actual elements
|
||||
//for (int n = 0; n<elts_amount; n++)
|
||||
|
||||
for (const auto& kv : m_elements) {
|
||||
stream << " " << kv.first << "=\"" << kv.second << "\"\n";
|
||||
}
|
||||
stream << " >\n";
|
||||
stream << " </" << m_param_name.c_str() << ">\n\n";
|
||||
} // write
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
template<typename T, typename U>
|
||||
void MapUserConfigParam<T, U>::findYourDataInAChildOf(const XMLNode* node)
|
||||
{
|
||||
const XMLNode* child = node->getNode(m_param_name);
|
||||
if (child == NULL)
|
||||
{
|
||||
//Log::error("User Config", "Couldn't find parameter group %s", m_param_name.c_str());
|
||||
return;
|
||||
}
|
||||
const XMLNode* child = node->getNode(m_param_name);
|
||||
if (child == NULL)
|
||||
{
|
||||
//Log::error("User Config", "Couldn't find parameter group %s", m_param_name.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
int attr_count = 0;
|
||||
child->get("Size", &attr_count);
|
||||
|
||||
for (const auto& kv : m_elements) {
|
||||
std::pair<T,U> elt;
|
||||
elt.first = kv.first;
|
||||
elt.second = kv.second;
|
||||
int attr_count = 0;
|
||||
child->get("Size", &attr_count);
|
||||
|
||||
for (const auto& kv : m_elements) {
|
||||
std::pair<T,U> elt;
|
||||
elt.first = kv.first;
|
||||
elt.second = kv.second;
|
||||
|
||||
|
||||
bool there = false;
|
||||
|
||||
bool there = false;
|
||||
|
||||
for (const auto& kvRHS : m_elements) {
|
||||
if (elt.second == kvRHS.second)
|
||||
{
|
||||
there = true;
|
||||
break;
|
||||
}
|
||||
for (const auto& kvRHS : m_elements) {
|
||||
if (elt.second == kvRHS.second)
|
||||
{
|
||||
there = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
if (!there)
|
||||
{
|
||||
m_elements.insert(elt);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!there)
|
||||
{
|
||||
m_elements.insert(elt);
|
||||
}
|
||||
}
|
||||
} // findYourDataInAChildOf
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
template<typename T, typename U>
|
||||
void MapUserConfigParam<T, U>::findYourDataInAnAttributeOf(const XMLNode* node)
|
||||
{
|
||||
} // findYourDataInAnAttributeOf
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
template<typename T, typename U>
|
||||
void MapUserConfigParam<T, U>::addElement(T element, U value)
|
||||
{
|
||||
m_elements[element] = value;
|
||||
m_elements[element] = value;
|
||||
} // findYourDataInAnAttributeOf
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
template<typename T, typename U>
|
||||
core::stringc MapUserConfigParam<T, U>::toString() const
|
||||
{
|
||||
return "";
|
||||
return "";
|
||||
} // toString
|
||||
|
||||
// ============================================================================
|
||||
|
@ -139,46 +139,49 @@ typedef ListUserConfigParam<std::string, const char*> StringListUserConfigPar
|
||||
template<typename T, typename U>
|
||||
class MapUserConfigParam : public UserConfigParam
|
||||
{
|
||||
std::map<T, U> m_elements;
|
||||
std::map<T, U> m_elements;
|
||||
|
||||
public:
|
||||
MapUserConfigParam(const char* param_name,
|
||||
const char* comment = NULL);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
const char* comment,
|
||||
int nb_elts,
|
||||
...);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment = NULL);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment,
|
||||
int nb_elts,
|
||||
...);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
const char* comment = NULL);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
const char* comment,
|
||||
int nb_elts,
|
||||
...);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment = NULL);
|
||||
MapUserConfigParam(const char* param_name,
|
||||
GroupUserConfigParam* group,
|
||||
const char* comment,
|
||||
int nb_elts,
|
||||
...);
|
||||
|
||||
void write(std::ofstream& stream) const;
|
||||
void findYourDataInAChildOf(const XMLNode* node);
|
||||
void findYourDataInAnAttributeOf(const XMLNode* node);
|
||||
void write(std::ofstream& stream) const;
|
||||
void findYourDataInAChildOf(const XMLNode* node);
|
||||
void findYourDataInAnAttributeOf(const XMLNode* node);
|
||||
|
||||
void addElement(T element, U value);
|
||||
void addElement(T element, U value);
|
||||
|
||||
irr::core::stringc toString() const;
|
||||
irr::core::stringc toString() const;
|
||||
|
||||
operator std::map<T,U>() const
|
||||
{
|
||||
return m_elements;
|
||||
}
|
||||
std::map<T, U>& operator=(const std::map<T,U>& v)
|
||||
{
|
||||
m_elements = std::map<T, U>(v);
|
||||
return m_elements;
|
||||
}
|
||||
std::map<T, U>& operator=(const MapUserConfigParam& v)
|
||||
{
|
||||
m_elements = std::map<T,U>(v);
|
||||
return m_elements;
|
||||
}
|
||||
operator std::map<T,U>() const
|
||||
{
|
||||
return m_elements;
|
||||
}
|
||||
std::map<T, U>& operator=(const std::map<T,U>& v)
|
||||
{
|
||||
m_elements = std::map<T, U>(v);
|
||||
return m_elements;
|
||||
}
|
||||
std::map<T, U>& operator=(const MapUserConfigParam& v)
|
||||
{
|
||||
m_elements = std::map<T,U>(v);
|
||||
return m_elements;
|
||||
}
|
||||
U& operator[] (const T key) {
|
||||
return m_elements[key];
|
||||
}
|
||||
}; // ListUserConfigParam
|
||||
typedef MapUserConfigParam<const char*, const char*> StringToStringUserConfigParam;
|
||||
typedef MapUserConfigParam<int, int> IntToIntUserConfigParam;
|
||||
@ -415,10 +418,10 @@ namespace UserConfigParams
|
||||
PARAM_PREFIX StringUserConfigParam m_last_used_kart_group
|
||||
PARAM_DEFAULT( StringUserConfigParam("all", "last_kart_group",
|
||||
"Last selected kart group") );
|
||||
// ---- Gamemode setup
|
||||
|
||||
// ---- Gamemode setup
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// ---- Wiimote data
|
||||
PARAM_PREFIX GroupUserConfigParam m_wiimote_group
|
||||
@ -755,15 +758,15 @@ namespace UserConfigParams
|
||||
"stun.voxalot.com",
|
||||
"stun.voxgratia.org",
|
||||
"stun.xten.com") );
|
||||
PARAM_PREFIX IntToIntUserConfigParam m_karts_per_gamemode
|
||||
PARAM_DEFAULT(IntToIntUserConfigParam("karts_per_gamemode", "The karts per gamemode"
|
||||
"Number of karts per gamemode. Order corresponds to Enum value",
|
||||
4,
|
||||
std::make_pair(0, 1),
|
||||
std::make_pair(1, 2),
|
||||
std::make_pair(3, 4),
|
||||
std::make_pair(4, 5)
|
||||
));
|
||||
PARAM_PREFIX IntToIntUserConfigParam m_karts_per_gamemode
|
||||
PARAM_DEFAULT(IntToIntUserConfigParam("karts_per_gamemode", "The karts per gamemode"
|
||||
"Number of karts per gamemode. Order corresponds to Enum value",
|
||||
4,
|
||||
std::make_pair(0, 1),
|
||||
std::make_pair(1, 2),
|
||||
std::make_pair(3, 4),
|
||||
std::make_pair(4, 5)
|
||||
));
|
||||
PARAM_PREFIX BoolUserConfigParam m_log_packets
|
||||
PARAM_DEFAULT( BoolUserConfigParam(false, "log-network-packets",
|
||||
"If all network packets should be logged") );
|
||||
|
@ -164,25 +164,19 @@ void TrackInfoScreen::init()
|
||||
m_ai_kart_spinner->setVisible(has_AI);
|
||||
getWidget<LabelWidget>("ai-text")->setVisible(has_AI);
|
||||
|
||||
UserConfigParams::m_num_karts;
|
||||
std::map<int , int> karts_per_gamemode = UserConfigParams::m_karts_per_gamemode;
|
||||
UserConfigParams::m_num_karts;
|
||||
std::map<int , int> karts_per_gamemode = UserConfigParams::m_karts_per_gamemode;
|
||||
|
||||
if (has_AI)
|
||||
{
|
||||
m_ai_kart_spinner->setActive(true);
|
||||
int gamemode = race_manager->getMinorMode();
|
||||
int num_ai = karts_per_gamemode[gamemode];
|
||||
|
||||
// Avoid negative numbers (which can happen if e.g. the number of karts
|
||||
int gamemode = race_manager->getMinorMode();
|
||||
int num_ai = karts_per_gamemode[gamemode];
|
||||
|
||||
// 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.
|
||||
|
||||
if (num_ai < 0)
|
||||
{
|
||||
num_ai = 0;
|
||||
karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumPlayers();
|
||||
UserConfigParams::m_karts_per_gamemode = karts_per_gamemode;
|
||||
}
|
||||
|
||||
|
||||
if (num_ai < 0) num_ai = 0;
|
||||
m_ai_kart_spinner->setValue(num_ai);
|
||||
|
||||
race_manager->setNumKarts(num_ai + local_players);
|
||||
@ -253,9 +247,9 @@ void TrackInfoScreen::init()
|
||||
m_ai_kart_spinner->setValue(0);
|
||||
m_ai_kart_spinner->setActive(false);
|
||||
race_manager->setNumKarts(race_manager->getNumLocalPlayers());
|
||||
|
||||
karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumPlayers();
|
||||
UserConfigParams::m_karts_per_gamemode = karts_per_gamemode;
|
||||
|
||||
karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumPlayers();
|
||||
UserConfigParams::m_karts_per_gamemode = karts_per_gamemode;
|
||||
}
|
||||
else if (record_available)
|
||||
{
|
||||
@ -382,10 +376,11 @@ void TrackInfoScreen::onEnterPressedInternal()
|
||||
if (has_AI)
|
||||
num_ai = m_ai_kart_spinner->getValue();
|
||||
|
||||
if (UserConfigParams::m_num_karts != (local_players + num_ai))
|
||||
|
||||
if (UserConfigParams::m_karts_per_gamemode[race_manager->getMinorMode()] != (local_players + num_ai))
|
||||
{
|
||||
race_manager->setNumKarts(local_players + num_ai);
|
||||
UserConfigParams::m_num_karts = local_players + num_ai;
|
||||
UserConfigParams::m_karts_per_gamemode[race_manager->getMinorMode()] = local_players + num_ai;
|
||||
}
|
||||
|
||||
// Disable accidentally unlocking of a challenge
|
||||
@ -435,7 +430,7 @@ void TrackInfoScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
{
|
||||
m_ai_kart_spinner->setActive(false);
|
||||
race_manager->setNumKarts(race_manager->getNumLocalPlayers());
|
||||
UserConfigParams::m_num_karts = race_manager->getNumLocalPlayers();
|
||||
UserConfigParams::m_karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumberOfKarts();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -454,7 +449,7 @@ void TrackInfoScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
{
|
||||
const int num_ai = m_ai_kart_spinner->getValue();
|
||||
race_manager->setNumKarts( race_manager->getNumLocalPlayers() + num_ai );
|
||||
UserConfigParams::m_num_karts = race_manager->getNumLocalPlayers() + num_ai;
|
||||
UserConfigParams::m_karts_per_gamemode[race_manager->getMinorMode()] = race_manager->getNumberOfKarts();
|
||||
updateHighScores();
|
||||
}
|
||||
} // eventCallback
|
||||
|
Loading…
x
Reference in New Issue
Block a user