Allow a challenge to specify which AI kart to use, and use it for the final race against Nolok challenge
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11536 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
f20fe77a98
commit
20382c0f15
@ -5,15 +5,15 @@
|
|||||||
<requirements trophies="23"/>
|
<requirements trophies="23"/>
|
||||||
|
|
||||||
<hard>
|
<hard>
|
||||||
<karts number="2"/>
|
<karts number="2" aiIdent="nolok"/>
|
||||||
<requirements position="1"/>
|
<requirements position="1"/>
|
||||||
</hard>
|
</hard>
|
||||||
<medium>
|
<medium>
|
||||||
<karts number="2"/>
|
<karts number="2" aiIdent="nolok"/>
|
||||||
<requirements position="1"/>
|
<requirements position="1"/>
|
||||||
</medium>
|
</medium>
|
||||||
<easy>
|
<easy>
|
||||||
<karts number="2"/>
|
<karts number="2" aiIdent="nolok"/>
|
||||||
<requirements position="1"/>
|
<requirements position="1"/>
|
||||||
</easy>
|
</easy>
|
||||||
|
|
||||||
|
@ -154,6 +154,10 @@ ChallengeData::ChallengeData(const std::string& filename)
|
|||||||
if (!karts_node->get("number", &num_karts)) error("karts");
|
if (!karts_node->get("number", &num_karts)) error("karts");
|
||||||
m_num_karts[d] = num_karts;
|
m_num_karts[d] = num_karts;
|
||||||
|
|
||||||
|
std::string ai_kart_ident;
|
||||||
|
if (karts_node->get("aiIdent", &ai_kart_ident))
|
||||||
|
m_ai_kart_ident[d] = ai_kart_ident;
|
||||||
|
|
||||||
const XMLNode* requirements_node = difficulties[d]->getNode("requirements");
|
const XMLNode* requirements_node = difficulties[d]->getNode("requirements");
|
||||||
if (requirements_node == NULL) error("<requirements .../>");
|
if (requirements_node == NULL) error("<requirements .../>");
|
||||||
|
|
||||||
@ -363,6 +367,11 @@ void ChallengeData::setRace(RaceManager::Difficulty d) const
|
|||||||
race_manager->setNumKarts(m_num_karts[d]);
|
race_manager->setNumKarts(m_num_karts[d]);
|
||||||
race_manager->setNumLocalPlayers(1);
|
race_manager->setNumLocalPlayers(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_ai_kart_ident[d] != "")
|
||||||
|
{
|
||||||
|
race_manager->setAIKartOverride(m_ai_kart_ident[d]);
|
||||||
|
}
|
||||||
} // setRace
|
} // setRace
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@ -58,6 +58,7 @@ private:
|
|||||||
int m_num_laps;
|
int m_num_laps;
|
||||||
int m_position[RaceManager::DIFFICULTY_COUNT];
|
int m_position[RaceManager::DIFFICULTY_COUNT];
|
||||||
int m_num_karts[RaceManager::DIFFICULTY_COUNT];
|
int m_num_karts[RaceManager::DIFFICULTY_COUNT];
|
||||||
|
std::string m_ai_kart_ident[RaceManager::DIFFICULTY_COUNT];
|
||||||
float m_time[RaceManager::DIFFICULTY_COUNT];
|
float m_time[RaceManager::DIFFICULTY_COUNT];
|
||||||
int m_energy[RaceManager::DIFFICULTY_COUNT];
|
int m_energy[RaceManager::DIFFICULTY_COUNT];
|
||||||
std::string m_gp_id;
|
std::string m_gp_id;
|
||||||
@ -136,6 +137,8 @@ public:
|
|||||||
float getTime (RaceManager::Difficulty difficulty) const { return m_time[difficulty]; }
|
float getTime (RaceManager::Difficulty difficulty) const { return m_time[difficulty]; }
|
||||||
int getEnergy (RaceManager::Difficulty difficulty) const { return m_energy[difficulty]; }
|
int getEnergy (RaceManager::Difficulty difficulty) const { return m_energy[difficulty]; }
|
||||||
|
|
||||||
|
std::string getAIKartIdent(RaceManager::Difficulty difficulty) const { return m_ai_kart_ident[difficulty]; }
|
||||||
|
|
||||||
}; // Ch
|
}; // Ch
|
||||||
|
|
||||||
#endif // HEADER_CHALLENGE_DATA_HPP
|
#endif // HEADER_CHALLENGE_DATA_HPP
|
||||||
|
@ -243,6 +243,14 @@ void RaceManager::computeRandomKartList()
|
|||||||
kart_properties_manager->getRandomKartList(n, m_player_karts,
|
kart_properties_manager->getRandomKartList(n, m_player_karts,
|
||||||
&m_ai_kart_list );
|
&m_ai_kart_list );
|
||||||
|
|
||||||
|
if (m_ai_kart_override != "")
|
||||||
|
{
|
||||||
|
for (int n = 0; n < m_ai_kart_list.size(); n++)
|
||||||
|
{
|
||||||
|
m_ai_kart_list[n] = m_ai_kart_override;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // computeRandomKartList
|
} // computeRandomKartList
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -265,6 +265,9 @@ private:
|
|||||||
/** The list of default AI karts to use. This is from the command line. */
|
/** The list of default AI karts to use. This is from the command line. */
|
||||||
std::vector<std::string> m_default_ai_list;
|
std::vector<std::string> m_default_ai_list;
|
||||||
|
|
||||||
|
/** If set, specifies which kart to use for AI(s) */
|
||||||
|
std::string m_ai_kart_override;
|
||||||
|
|
||||||
/** The list of AI karts to use. This is stored here so that the
|
/** The list of AI karts to use. This is stored here so that the
|
||||||
* same list of AIs is used for all tracks of a GP. */
|
* same list of AIs is used for all tracks of a GP. */
|
||||||
std::vector<std::string> m_ai_kart_list;
|
std::vector<std::string> m_ai_kart_list;
|
||||||
@ -312,6 +315,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
void setNumLocalPlayers(unsigned int n);
|
void setNumLocalPlayers(unsigned int n);
|
||||||
|
|
||||||
|
void setAIKartOverride(const std::string& kart) { m_ai_kart_override = kart; }
|
||||||
|
|
||||||
/** In case of non GP mode set the track to use.
|
/** In case of non GP mode set the track to use.
|
||||||
* \param track Pointer to the track to use.
|
* \param track Pointer to the track to use.
|
||||||
*/
|
*/
|
||||||
@ -334,7 +339,7 @@ public:
|
|||||||
{ m_major_mode = mode; }
|
{ m_major_mode = mode; }
|
||||||
void setMinorMode(MinorRaceModeType mode)
|
void setMinorMode(MinorRaceModeType mode)
|
||||||
{ m_minor_mode = mode; }
|
{ m_minor_mode = mode; }
|
||||||
void setNumKarts(int num) { m_num_karts = num; }
|
void setNumKarts(int num) { m_num_karts = num; m_ai_kart_override = ""; }
|
||||||
void setCoinTarget(int num) { m_coin_target = num; }
|
void setCoinTarget(int num) { m_coin_target = num; }
|
||||||
|
|
||||||
/** \} */
|
/** \} */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user