Better team saving

This commit is contained in:
Benau
2016-01-15 23:50:54 +08:00
parent 82dca17f42
commit d328fc7133
3 changed files with 21 additions and 18 deletions

View File

@@ -47,7 +47,6 @@ public:
~SoccerAI();
virtual void update (float delta);
virtual void reset ();
bool getAITeam() const { return m_cur_team; }
};
#endif

View File

@@ -70,6 +70,7 @@ SoccerWorld::~SoccerWorld()
*/
void SoccerWorld::init()
{
m_kart_team_map.clear();
WorldWithRank::init();
m_display_rank = false;
m_goal_timer = 0.f;
@@ -319,9 +320,21 @@ AbstractKart *SoccerWorld::createKart(const std::string &kart_ident, int index,
bool team = true;
if (kart_type == RaceManager::KT_AI)
{
team = (index % 2 == 0 ? true : false);
m_kart_team_map[index] = team;
}
else
team = getKartTeam(index);
{
int rm_id = index -
(race_manager->getNumberOfKarts() - race_manager->getNumPlayers());
assert(rm_id >= 0);
team = (race_manager
->getKartInfo(rm_id).getSoccerTeam() == SOCCER_TEAM_BLUE ?
true : false);
m_kart_team_map[index] = team;
}
if(!team)
{
@@ -458,24 +471,14 @@ void SoccerWorld::resetAllNodes()
//-----------------------------------------------------------------------------
bool SoccerWorld::getKartTeam(unsigned int kart_id) const
{
// Test for human player first
int rm_id = kart_id -
(race_manager->getNumberOfKarts() - race_manager->getNumPlayers());
std::map<int, bool>::const_iterator n = m_kart_team_map.find(kart_id);
if (n != m_kart_team_map.end())
{
return n->second;
}
if (rm_id >= 0)
{
return (race_manager
->getKartInfo(rm_id).getSoccerTeam() == SOCCER_TEAM_BLUE ?
true : false);
}
else if (m_karts.size() > 0)
{
SoccerAI* controller =
dynamic_cast<SoccerAI*>(m_karts[kart_id]->getController());
if (controller)
return controller->getAITeam();
}
// Fallback
Log::warn("SoccerWorld", "Unknown team, using blue default.");
return true;
}

View File

@@ -62,6 +62,7 @@ private:
std::vector<float> m_red_score_times;
std::vector<int> m_blue_scorers;
std::vector<float> m_blue_score_times;
std::map<int, bool> m_kart_team_map;
/** Data generated from navmesh */
std::vector<int> m_kart_on_node;