From 41ea4b1997408553f33fe6c9b4b4a51bb3df7f03 Mon Sep 17 00:00:00 2001 From: Deve <deveee@gmail.com> Date: Sat, 6 Oct 2018 22:31:37 +0200 Subject: [PATCH] Draw local players icons above AI/remote players on the minimap. --- src/states_screens/race_gui.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/states_screens/race_gui.cpp b/src/states_screens/race_gui.cpp index 49727f868..2216d7572 100644 --- a/src/states_screens/race_gui.cpp +++ b/src/states_screens/race_gui.cpp @@ -596,14 +596,27 @@ void RaceGUI::drawGlobalMiniMap() lower_y -(int)(draw_at.getY()-(m_minimap_player_size/2.2f))); draw2DImage(m_blue_flag, bp, bs, NULL, NULL, true); } - - for(unsigned int i=0; i<world->getNumKarts(); i++) + + // Move AI/remote players to the beginning, so that local players icons + // are drawn above them + World::KartList karts = world->getKarts(); + std::sort(karts.begin(), karts.end(), [] + (const std::shared_ptr<AbstractKart> a, + const std::shared_ptr<AbstractKart> b)->bool { - const AbstractKart *kart = world->getKart(i); + return !a->getController()->isLocalPlayerController(); + }); + + for (unsigned int i = 0; i < karts.size(); i++) + { + const AbstractKart *kart = karts[i].get(); const SpareTireAI* sta = dynamic_cast<const SpareTireAI*>(kart->getController()); + // don't draw eliminated kart - if(kart->isEliminated() && !(sta && sta->isMoving())) continue; + if (kart->isEliminated() && !(sta && sta->isMoving())) + continue; + const Vec3& xyz = kart->getSmoothedTrans().getOrigin(); Vec3 draw_at; track->mapPoint2MiniMap(xyz, &draw_at);