Fix #3647
This commit is contained in:
@@ -138,6 +138,29 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
void resetKartForSwatterHit(int kart_id, int at_world_ticks)
|
||||
{ m_swatter_reset_kart_ticks[kart_id] = at_world_ticks; }
|
||||
// ------------------------------------------------------------------------
|
||||
virtual std::pair<uint32_t, uint32_t> getGameStartedProgress() const
|
||||
OVERRIDE
|
||||
{
|
||||
std::pair<uint32_t, uint32_t> progress(
|
||||
std::numeric_limits<uint32_t>::max(),
|
||||
std::numeric_limits<uint32_t>::max());
|
||||
if (race_manager->hasTimeTarget())
|
||||
{
|
||||
progress.first = (uint32_t)m_time;
|
||||
}
|
||||
if (m_red_scores > m_blue_scores)
|
||||
{
|
||||
progress.second = (uint32_t)((float)m_red_scores /
|
||||
(float)race_manager->getHitCaptureLimit() * 100.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
progress.second = (uint32_t)((float)m_blue_scores /
|
||||
(float)race_manager->getHitCaptureLimit() * 100.0f);
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
}; // CaptureTheFlag
|
||||
|
||||
#endif
|
||||
|
||||
@@ -68,6 +68,21 @@ public:
|
||||
int getKartScore(int kart_id) const { return m_scores.at(kart_id); }
|
||||
// ------------------------------------------------------------------------
|
||||
bool getKartFFAResult(int kart_id) const;
|
||||
// ------------------------------------------------------------------------
|
||||
virtual std::pair<uint32_t, uint32_t> getGameStartedProgress() const
|
||||
OVERRIDE
|
||||
{
|
||||
std::pair<uint32_t, uint32_t> progress(
|
||||
std::numeric_limits<uint32_t>::max(),
|
||||
std::numeric_limits<uint32_t>::max());
|
||||
if (race_manager->hasTimeTarget())
|
||||
{
|
||||
progress.first = (uint32_t)m_time;
|
||||
}
|
||||
progress.second = (uint32_t)((float)m_scores.size() /
|
||||
(float)race_manager->getHitCaptureLimit() * 100.0f);
|
||||
return progress;
|
||||
}
|
||||
}; // FreeForAll
|
||||
|
||||
|
||||
|
||||
@@ -1051,3 +1051,27 @@ void LinearWorld::setLastTriggeredCheckline(unsigned int kart_index, int index)
|
||||
if (m_kart_info.size() == 0) return;
|
||||
getTrackSector(kart_index)->setLastTriggeredCheckline(index);
|
||||
} // setLastTriggeredCheckline
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
std::pair<uint32_t, uint32_t> LinearWorld::getGameStartedProgress() const
|
||||
{
|
||||
std::pair<uint32_t, uint32_t> progress(
|
||||
std::numeric_limits<uint32_t>::max(),
|
||||
std::numeric_limits<uint32_t>::max());
|
||||
AbstractKart* slowest_kart = NULL;
|
||||
for (unsigned i = m_karts.size(); i > 0; i--)
|
||||
{
|
||||
slowest_kart = getKartAtPosition(i);
|
||||
if (slowest_kart && !slowest_kart->isEliminated())
|
||||
break;
|
||||
}
|
||||
if (slowest_kart &&
|
||||
getFinishedLapsOfKart(slowest_kart->getWorldKartId()) != -1)
|
||||
{
|
||||
progress.second = (uint32_t)(
|
||||
getOverallDistance(slowest_kart->getWorldKartId()) /
|
||||
(Track::getCurrentTrack()->getTrackLength() *
|
||||
(float)race_manager->getNumLaps()) * 100.0f);
|
||||
}
|
||||
return progress;
|
||||
} // getGameStartedProgress
|
||||
|
||||
@@ -201,6 +201,9 @@ public:
|
||||
{
|
||||
m_fastest_lap_ticks = ticks;
|
||||
}
|
||||
// ------------------------------------------------------------------------
|
||||
virtual std::pair<uint32_t, uint32_t> getGameStartedProgress() const
|
||||
OVERRIDE;
|
||||
}; // LinearWorld
|
||||
|
||||
#endif
|
||||
|
||||
@@ -395,7 +395,28 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
virtual bool hasTeam() const OVERRIDE { return true; }
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
virtual std::pair<uint32_t, uint32_t> getGameStartedProgress() const
|
||||
OVERRIDE
|
||||
{
|
||||
std::pair<uint32_t, uint32_t> progress(
|
||||
std::numeric_limits<uint32_t>::max(),
|
||||
std::numeric_limits<uint32_t>::max());
|
||||
if (race_manager->hasTimeTarget())
|
||||
{
|
||||
progress.first = (uint32_t)m_time;
|
||||
}
|
||||
else if (m_red_scorers.size() > m_blue_scorers.size())
|
||||
{
|
||||
progress.second = (uint32_t)((float)m_red_scorers.size() /
|
||||
(float)race_manager->getMaxGoal() * 100.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
progress.second = (uint32_t)((float)m_blue_scorers.size() /
|
||||
(float)race_manager->getMaxGoal() * 100.0f);
|
||||
}
|
||||
return progress;
|
||||
}
|
||||
}; // SoccerWorld
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user