This commit is contained in:
Benau
2018-12-14 22:06:59 +08:00
parent 176af22c8d
commit aa27958675
5 changed files with 87 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -201,6 +201,9 @@ public:
{
m_fastest_lap_ticks = ticks;
}
// ------------------------------------------------------------------------
virtual std::pair<uint32_t, uint32_t> getGameStartedProgress() const
OVERRIDE;
}; // LinearWorld
#endif

View File

@@ -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