Display different message when the player win a grand prix

This commit is contained in:
Alayan 2018-10-13 20:59:14 +02:00
parent 78b1d5c672
commit f32b6059e6
3 changed files with 16 additions and 6 deletions

View File

@ -782,6 +782,7 @@ void RaceManager::exitRace(bool delete_world)
} }
StateManager::get()->resetAndGoToScreen( MainMenuScreen::getInstance() ); StateManager::get()->resetAndGoToScreen( MainMenuScreen::getInstance() );
bool some_human_player_well_ranked = false;
bool some_human_player_won = false; bool some_human_player_won = false;
const unsigned int kart_status_count = (unsigned int)m_kart_status.size(); const unsigned int kart_status_count = (unsigned int)m_kart_status.size();
@ -805,6 +806,8 @@ void RaceManager::exitRace(bool delete_world)
if (m_kart_status[i].m_kart_type == KT_PLAYER || if (m_kart_status[i].m_kart_type == KT_PLAYER ||
m_kart_status[i].m_kart_type == KT_NETWORK_PLAYER) m_kart_status[i].m_kart_type == KT_NETWORK_PLAYER)
{ {
some_human_player_well_ranked = true;
if (rank == 0)
some_human_player_won = true; some_human_player_won = true;
} }
} }
@ -830,13 +833,14 @@ void RaceManager::exitRace(bool delete_world)
race_manager->setNumKarts(0); race_manager->setNumKarts(0);
race_manager->setNumPlayers(0); race_manager->setNumPlayers(0);
if (some_human_player_won) if (some_human_player_well_ranked)
{ {
race_manager->startSingleRace("gpwin", 999, race_manager->startSingleRace("gpwin", 999,
race_manager->raceWasStartedFromOverworld()); race_manager->raceWasStartedFromOverworld());
GrandPrixWin* scene = GrandPrixWin::getInstance(); GrandPrixWin* scene = GrandPrixWin::getInstance();
scene->push(); scene->push();
scene->setKarts(winners); scene->setKarts(winners);
scene->setPlayerWon(some_human_player_won);
} }
else else
{ {

View File

@ -113,6 +113,7 @@ GrandPrixWin::GrandPrixWin() : GrandPrixCutscene("grand_prix_win.stkgui")
m_kart_node[i] = NULL; m_kart_node[i] = NULL;
m_podium_steps[i] = NULL; m_podium_steps[i] = NULL;
} }
m_player_won = false;
} // GrandPrixWin } // GrandPrixWin
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
@ -316,10 +317,11 @@ void GrandPrixWin::onUpdate(float dt)
static int test_y = 0; static int test_y = 0;
GUIEngine::getTitleFont()->draw(_("You completed the Grand Prix!"), irr::core::stringw message = (m_player_won) ? _("You won the Grand Prix!") :
core::rect< s32 >( 0, test_y, w, h/10 ), _("You completed the Grand Prix!");
color,
true/* center h */, true /* center v */ ); GUIEngine::getTitleFont()->draw(message, core::rect< s32 >( 0, test_y, w, h/10 ),
color, true/* center h */, true /* center v */ );
} // onUpdate } // onUpdate

View File

@ -62,6 +62,9 @@ class GrandPrixWin :
float m_podium_x[3], m_podium_y[3], m_podium_z[3]; float m_podium_x[3], m_podium_y[3], m_podium_z[3];
/** Used to display a different message if a player is 1st */
bool m_player_won;
public: public:
// implement callbacks from parent class GUIEngine::Screen // implement callbacks from parent class GUIEngine::Screen
void init() OVERRIDE; void init() OVERRIDE;
@ -72,6 +75,7 @@ public:
/** \pre must be called after pushing the screen, but before onUpdate had the chance to be invoked */ /** \pre must be called after pushing the screen, but before onUpdate had the chance to be invoked */
void setKarts(const std::string idents[3]); void setKarts(const std::string idents[3]);
void setPlayerWon(bool some_player_won) { m_player_won = some_player_won; }
}; };
#endif #endif