From b6b644ecb571b8b09d548feff4a6f355b90d3a51 Mon Sep 17 00:00:00 2001 From: Benau Date: Sun, 7 Feb 2016 10:20:37 +0800 Subject: [PATCH] Clean up --- src/items/flyable.cpp | 3 +-- src/items/swatter.cpp | 2 +- src/karts/ghost_kart.hpp | 3 +++ src/karts/kart.cpp | 2 +- src/modes/standard_race.cpp | 22 +++++++++++++++------- src/replay/replay_play.cpp | 6 ++++-- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/items/flyable.cpp b/src/items/flyable.cpp index 7c9cca504..82839730a 100644 --- a/src/items/flyable.cpp +++ b/src/items/flyable.cpp @@ -226,8 +226,7 @@ void Flyable::getClosestKart(const AbstractKart **minKart, // it is not considered a target anymore. if(kart->isEliminated() || kart == m_owner || kart->isInvulnerable() || - kart->getKartAnimation() || - kart->isGhostKart() ) continue; + kart->getKartAnimation() ) continue; const SoccerWorld* sw = dynamic_cast(World::getWorld()); if (sw) diff --git a/src/items/swatter.cpp b/src/items/swatter.cpp index 6f98345e9..6e07df39d 100644 --- a/src/items/swatter.cpp +++ b/src/items/swatter.cpp @@ -243,7 +243,7 @@ void Swatter::chooseTarget() { AbstractKart *kart = world->getKart(i); // TODO: isSwatterReady(), isSquashable()? - if(kart->isEliminated() || kart == m_kart || kart->isGhostKart()) + if(kart->isEliminated() || kart==m_kart) continue; // don't squash an already hurt kart if (kart->isInvulnerable() || kart->isSquashed()) diff --git a/src/karts/ghost_kart.hpp b/src/karts/ghost_kart.hpp index 8754704d2..30333963f 100644 --- a/src/karts/ghost_kart.hpp +++ b/src/karts/ghost_kart.hpp @@ -75,6 +75,9 @@ public: // ------------------------------------------------------------------------ /** Returns whether this kart is a ghost (replay) kart. */ virtual bool isGhostKart() const { return true; } + // ------------------------------------------------------------------------ + /** Ghost can't be hunted. */ + virtual bool isInvulnerable() const { return true; } }; // GhostKart #endif diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 89470446a..9ced75e24 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -1493,7 +1493,7 @@ void Kart::showZipperFire() */ void Kart::setSquash(float time, float slowdown) { - if (isInvulnerable() || isGhostKart()) return; + if (isInvulnerable()) return; if (isShielded()) { diff --git a/src/modes/standard_race.cpp b/src/modes/standard_race.cpp index c028a079f..600ea03c1 100644 --- a/src/modes/standard_race.cpp +++ b/src/modes/standard_race.cpp @@ -102,17 +102,25 @@ void StandardRace::endRaceEarly() continue; } - if (!kart->isGhostKart()) + if (kart->isGhostKart()) { - // Keep active players apart for now - if (kart->getController()->isPlayerController()) - active_players.push_back(kartid); + // Ghost karts finish + setKartPosition(kartid, i - (unsigned int) active_players.size()); + kart->finishedRace(estimateFinishTimeForKart(kart)); } else { - // AI karts finish - setKartPosition(kartid, i - (unsigned int) active_players.size()); - kart->finishedRace(estimateFinishTimeForKart(kart)); + if (kart->getController()->isPlayerController()) + { + // Keep active players apart for now + active_players.push_back(kartid); + } + else + { + // AI karts finish + setKartPosition(kartid, i - (unsigned int) active_players.size()); + kart->finishedRace(estimateFinishTimeForKart(kart)); + } } } // i <= kart_amount // Now make the active players finish diff --git a/src/replay/replay_play.cpp b/src/replay/replay_play.cpp index f24c3cb66..863d25320 100644 --- a/src/replay/replay_play.cpp +++ b/src/replay/replay_play.cpp @@ -25,6 +25,7 @@ #include "race/race_manager.hpp" #include "tracks/track.hpp" +#include #include #include @@ -91,8 +92,9 @@ void ReplayPlay::loadKartInfo() { if (fgets(s, 1023, fd) == NULL) Log::fatal("Replay", "Could not read '%s'.", getReplayFilename().c_str()); - std::string is_end = std::string(s); - if (is_end == "kart_list_end\n" || is_end == "kart_list_end\r\n") break; + core::stringc is_end(s); + is_end.trim(); + if (is_end == "kart_list_end") break; char s1[1024]; if (sscanf(s,"kart: %s", s1) != 1)