From: <hik...@us...> - 2010-02-21 01:47:39
|
Revision: 4781 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=4781&view=rev Author: hikerstk Date: 2010-02-21 00:39:23 +0000 (Sun, 21 Feb 2010) Log Message: ----------- Bugfix: world was not deleted after a GP race. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-02-20 23:32:59 UTC (rev 4780) +++ main/trunk/src/race/race_manager.cpp 2010-02-21 00:39:23 UTC (rev 4781) @@ -262,6 +262,7 @@ */ void RaceManager::next() { + delete World::getWorld(); m_num_finished_karts = 0; m_num_finished_players = 0; m_track_number++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2010-05-30 23:20:38
|
Revision: 5460 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=5460&view=rev Author: auria Date: 2010-05-30 23:20:32 +0000 (Sun, 30 May 2010) Log Message: ----------- Actually show the GP lost scene when losing a GP Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-05-30 22:20:32 UTC (rev 5459) +++ main/trunk/src/race/race_manager.cpp 2010-05-30 23:20:32 UTC (rev 5460) @@ -399,11 +399,12 @@ StateManager::get()->resetAndGoToScreen( MainMenuScreen::getInstance() ); - // TODO: show lose screen when losing - StateManager::get()->pushScreen ( GrandPrixWin::getInstance() ); - + + bool someHumanPlayerWon = false; + const unsigned int kartStatusCount = m_kart_status.size(); std::string winners[3]; - for (unsigned int i=0; i < m_kart_status.size(); ++i) + std::vector<std::string> humanLosers; // because we don't care about AIs that lost + for (unsigned int i=0; i < kartStatusCount; ++i) { if(UserConfigParams::m_verbosity>=5) { @@ -415,10 +416,46 @@ if (rank >= 0 && rank < 3) { winners[rank] = m_kart_status[i].m_ident; + if (m_kart_status[i].m_kart_type == KT_PLAYER || + m_kart_status[i].m_kart_type == KT_NETWORK_PLAYER) + { + someHumanPlayerWon = true; + } } + else if (rank >= 3) + { + if (m_kart_status[i].m_kart_type == KT_PLAYER || + m_kart_status[i].m_kart_type == KT_NETWORK_PLAYER) + { + humanLosers.push_back(m_kart_status[i].m_ident); + } + } } - GrandPrixWin::getInstance()->setKarts(winners); + if (someHumanPlayerWon) + { + StateManager::get()->pushScreen( GrandPrixWin::getInstance() ); + GrandPrixWin::getInstance()->setKarts(winners); + } + else + { + StateManager::get()->pushScreen( GrandPrixLose::getInstance() ); + + if (humanLosers.size() > 1) + { + // TODO: support multiplayer GPs!! + GrandPrixLose::getInstance()->setKart( humanLosers[0] ); + } + else if (humanLosers.size() == 1) + { + GrandPrixLose::getInstance()->setKart( humanLosers[0] ); + } + else + { + std::cerr << "RaceManager::exitRace() : what's going on?? no winners and no losers??\n"; + GrandPrixLose::getInstance()->setKart( "nolok" ); + } + } } World::deleteWorld(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2010-08-08 01:02:32
|
Revision: 5730 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=5730&view=rev Author: auria Date: 2010-08-08 01:02:26 +0000 (Sun, 08 Aug 2010) Log Message: ----------- Decide smarter who won and who lost in a GP, depending on number of players Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-08-08 00:59:19 UTC (rev 5729) +++ main/trunk/src/race/race_manager.cpp 2010-08-08 01:02:26 UTC (rev 5730) @@ -20,6 +20,7 @@ #include "race/race_manager.hpp" #include <iostream> +#include <algorithm> #include "challenges/unlock_manager.hpp" #include "config/user_config.hpp" @@ -417,18 +418,24 @@ bool someHumanPlayerWon = false; const unsigned int kartStatusCount = m_kart_status.size(); + + /** The rank from which players are considered losers - you are behind half the players OR + behind the first 3 (the first condition handles cases where there are 3 karts or less). + However this rank may not be 0, since at least one player must win, hence the std::max call. */ + const int loserThreshold = std::max(1, std::min(3, int(kartStatusCount)/2)); + std::string winners[3]; std::vector<std::string> humanLosers; // because we don't care about AIs that lost for (unsigned int i=0; i < kartStatusCount; ++i) { - if(UserConfigParams::m_verbosity>=5) + if(UserConfigParams::m_verbosity >= 5) { std::cout << m_kart_status[i].m_ident << " has GP final rank " << m_kart_status[i].m_gp_rank << std::endl; } const int rank = m_kart_status[i].m_gp_rank; - if (rank >= 0 && rank < 3) + if (rank >= 0 && rank < loserThreshold) { winners[rank] = m_kart_status[i].m_ident; if (m_kart_status[i].m_kart_type == KT_PLAYER || @@ -437,7 +444,7 @@ someHumanPlayerWon = true; } } - else if (rank >= 3) + else if (rank >= loserThreshold) { if (m_kart_status[i].m_kart_type == KT_PLAYER || m_kart_status[i].m_kart_type == KT_NETWORK_PLAYER) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2010-08-30 00:21:10
|
Revision: 5818 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=5818&view=rev Author: hikerstk Date: 2010-08-30 00:21:04 +0000 (Mon, 30 Aug 2010) Log Message: ----------- Fixed compiler warning. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-08-29 23:19:06 UTC (rev 5817) +++ main/trunk/src/race/race_manager.cpp 2010-08-30 00:21:04 UTC (rev 5818) @@ -106,7 +106,7 @@ const Kart *RaceManager::getKartWithGPRank(unsigned int n) { for(unsigned int i=0; i<m_kart_status.size(); i++) - if(m_kart_status[i].m_gp_rank == n) + if(m_kart_status[i].m_gp_rank == (int)n) return World::getWorld()->getKart(i); return NULL; } // getKLartWithGPRank This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2010-09-21 04:07:34
|
Revision: 6101 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=6101&view=rev Author: hikerstk Date: 2010-09-21 04:07:28 +0000 (Tue, 21 Sep 2010) Log Message: ----------- Added assert to catch inconsistent setting of number of karts. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-09-21 04:04:49 UTC (rev 6100) +++ main/trunk/src/race/race_manager.cpp 2010-09-21 04:07:28 UTC (rev 6101) @@ -213,6 +213,7 @@ // ========================================================================== m_kart_status.clear(); + assert(m_num_karts == m_random_kart_list.size()+m_player_karts.size()); // First add the AI karts (randomly chosen) // ---------------------------------------- int init_gp_rank = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2010-09-21 10:28:36
|
Revision: 6104 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=6104&view=rev Author: hikerstk Date: 2010-09-21 10:28:30 +0000 (Tue, 21 Sep 2010) Log Message: ----------- Fixed compiler warning. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-09-21 07:37:42 UTC (rev 6103) +++ main/trunk/src/race/race_manager.cpp 2010-09-21 10:28:30 UTC (rev 6104) @@ -212,7 +212,7 @@ m_kart_status.clear(); // Before thi - assert(m_num_karts == m_ai_kart_list.size()+m_player_karts.size()); + assert((unsigned int)m_num_karts == m_ai_kart_list.size()+m_player_karts.size()); // First add the AI karts (randomly chosen) // ---------------------------------------- int init_gp_rank = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2010-10-29 01:39:34
|
Revision: 6368 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=6368&view=rev Author: auria Date: 2010-10-29 01:39:27 +0000 (Fri, 29 Oct 2010) Log Message: ----------- Always 3 karts on GP podium screen Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2010-10-28 05:14:04 UTC (rev 6367) +++ main/trunk/src/race/race_manager.cpp 2010-10-29 01:39:27 UTC (rev 6368) @@ -425,10 +425,7 @@ bool someHumanPlayerWon = false; const unsigned int kartStatusCount = m_kart_status.size(); - /** The rank from which players are considered losers - you are behind half the players OR - behind the first 3 (the first condition handles cases where there are 3 karts or less). - However this rank may not be 0, since at least one player must win, hence the std::max call. */ - const int loserThreshold = std::max(1, std::min(3, int(kartStatusCount)/2)); + const int loserThreshold = 3; std::string winners[3]; std::vector<std::string> humanLosers; // because we don't care about AIs that lost This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2011-02-02 22:26:07
|
Revision: 7581 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=7581&view=rev Author: hikerstk Date: 2011-02-02 22:26:01 +0000 (Wed, 02 Feb 2011) Log Message: ----------- Fixed compilation problems on non-windows platforms. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2011-02-02 22:15:01 UTC (rev 7580) +++ main/trunk/src/race/race_manager.cpp 2011-02-02 22:26:01 UTC (rev 7581) @@ -40,6 +40,7 @@ #include "states_screens/main_menu_screen.hpp" #include "states_screens/state_manager.hpp" #include "tracks/track_manager.hpp" +#include "utils/ptr_vector.hpp" RaceManager* race_manager= NULL; @@ -326,31 +327,40 @@ //----------------------------------------------------------------------------- +/** This class is only used in computeGPRanks, but the C++ standard + * forbids the usage of local data type in templates, so we have to + * declare it outside of the function. This class is used to store + * and compare data for determining the GP rank. + */ +namespace computeGPRanksData +{ +class SortData +{ +public: + int m_score; + int m_position; + float m_race_time; + bool operator<(const SortData &a) + { + return ( (m_score > a.m_score) || + (m_score == m_score && m_race_time < a.m_race_time) ); + } + +}; // SortData +} // namespace + void RaceManager::computeGPRanks() { // calculate the rank of each kart const unsigned int NUM_KARTS = getNumberOfKarts(); - class SortData - { - public: - int m_score; - int m_position; - float m_race_time; - bool operator<(const SortData &a) - { - return ( m_score > a.m_score || - m_score == m_score && m_race_time < a.m_race_time); - } + ptr_vector<computeGPRanksData::SortData> sort_data; - }; // SortData - ptr_vector<SortData> sort_data; - // Ignore the first kart if it's a follow-the-leader race. int start=(race_manager->getMinorMode()==RaceManager::MINOR_MODE_FOLLOW_LEADER); if (start) { // fill values for leader - SortData *sd = new SortData; + computeGPRanksData::SortData *sd = new computeGPRanksData::SortData(); sd->m_position = -1; sd->m_score = -1; @@ -360,7 +370,7 @@ } for (unsigned int kart_id = start; kart_id < NUM_KARTS; ++kart_id) { - SortData *sd = new SortData; + computeGPRanksData::SortData *sd = new computeGPRanksData::SortData(); sd->m_position = kart_id; sd->m_score = race_manager->getKartScore(kart_id); sd->m_race_time = race_manager->getOverallTime(kart_id); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2011-03-08 01:20:59
|
Revision: 7844 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=7844&view=rev Author: hikerstk Date: 2011-03-08 01:20:53 +0000 (Tue, 08 Mar 2011) Log Message: ----------- Fixed GP sorting problem - stupid typo. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2011-03-08 00:37:50 UTC (rev 7843) +++ main/trunk/src/race/race_manager.cpp 2011-03-08 01:20:53 UTC (rev 7844) @@ -343,7 +343,7 @@ bool operator<(const SortData &a) { return ( (m_score > a.m_score) || - (m_score == m_score && m_race_time < a.m_race_time) ); + (m_score == a.m_score && m_race_time < a.m_race_time) ); } }; // SortData This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2011-03-22 12:31:14
|
Revision: 8022 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=8022&view=rev Author: hikerstk Date: 2011-03-22 12:31:08 +0000 (Tue, 22 Mar 2011) Log Message: ----------- Removed debug print. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2011-03-22 11:11:56 UTC (rev 8021) +++ main/trunk/src/race/race_manager.cpp 2011-03-22 12:31:08 UTC (rev 8022) @@ -406,9 +406,6 @@ // m_kart_status[position[i]].m_ident.c_str(), i-start); if(UserConfigParams::m_ftl_debug) { - if(sort_data[i].m_position<0 || - sort_data[i].m_position>=getNumberOfKarts()) - printf("XX"); const Kart *kart = World::getWorld()->getKart(sort_data[i].m_position); printf("[ftl] kart '%s' has now position %d.\n", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <au...@us...> - 2011-07-29 01:40:53
|
Revision: 9382 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=9382&view=rev Author: auria Date: 2011-07-29 01:40:46 +0000 (Fri, 29 Jul 2011) Log Message: ----------- Fixed compilation with GCC Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2011-07-28 22:56:49 UTC (rev 9381) +++ main/trunk/src/race/race_manager.cpp 2011-07-29 01:40:46 UTC (rev 9382) @@ -220,7 +220,7 @@ } m_ai_kart_list.clear(); - unsigned int m = std::min( (unsigned) n, m_default_ai_list.size()); + unsigned int m = std::min( (unsigned) n, (unsigned)m_default_ai_list.size()); for(unsigned int i=0; i<m; i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hik...@us...> - 2011-12-12 03:49:39
|
Revision: 10405 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=10405&view=rev Author: hikerstk Date: 2011-12-12 03:49:33 +0000 (Mon, 12 Dec 2011) Log Message: ----------- Final fix for #528 (see also r10404): don't test for locked karts when using --ai. Revision Links: -------------- http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=10404&view=rev Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2011-12-12 01:03:44 UTC (rev 10404) +++ main/trunk/src/race/race_manager.cpp 2011-12-12 03:49:33 UTC (rev 10405) @@ -101,12 +101,15 @@ name.c_str()); continue; } - if(unlock_manager->getCurrentSlot()->isLocked(name)) - { - printf("Kart '%s' is locked and therefore ignored.\n", - name.c_str()); - continue; - } + // This doesn't work anymore, since this is called when + // handling the command line options, at which time the + // player (and therefore the current slot) is not defined yet. + //if(unlock_manager->getCurrentSlot()->isLocked(name)) + //{ + // printf("Kart '%s' is locked and therefore ignored.\n", + // name.c_str()); + // continue; + //} m_default_ai_list.push_back(name); } } // setAIKartList This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wa...@us...> - 2012-06-28 04:00:47
|
Revision: 11342 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=11342&view=rev Author: wardje Date: 2012-06-28 04:00:40 +0000 (Thu, 28 Jun 2012) Log Message: ----------- Fix bug #655 (crash when going into story mode) Make sure the list of AI karts gets cleared by making sure that computeRandomKartList gets executed. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2012-06-27 22:18:44 UTC (rev 11341) +++ main/trunk/src/race/race_manager.cpp 2012-06-28 04:00:40 UTC (rev 11342) @@ -121,7 +121,7 @@ //} m_default_ai_list.push_back(name); } -} // setAIKartList +} // setDefaultAIKartList // ---------------------------------------------------------------------------- /** Sets information about a kart used by a local player (i.e. on this @@ -216,8 +216,6 @@ */ void RaceManager::computeRandomKartList() { - if (m_num_karts == 0) return; - int n = m_num_karts - m_player_karts.size(); if(UserConfigParams::logMisc()) std::cout << "AI karts count = " << n << " for m_num_karts=" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <uni...@us...> - 2013-05-26 00:31:33
|
Revision: 12788 http://supertuxkart.svn.sourceforge.net/supertuxkart/?rev=12788&view=rev Author: unitraxx Date: 2013-05-26 00:31:22 +0000 (Sun, 26 May 2013) Log Message: ----------- Small change to the checking of a saved GP. (First commit, don't shoot me if I did anything wrong.) Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2013-05-25 23:41:54 UTC (rev 12787) +++ main/trunk/src/race/race_manager.cpp 2013-05-26 00:31:22 UTC (rev 12788) @@ -336,26 +336,27 @@ init_gp_rank ++; } + m_track_number = 0; + if(m_major_mode==MAJOR_MODE_GRAND_PRIX) + { + //We look if Player 1 has a saved version of this GP. + // ================================================= + SavedGrandPrix* gp = SavedGrandPrix::getSavedGP( StateManager::get() + ->getActivePlayerProfile(0) + ->getUniqueID(), + m_grand_prix.getId(), + m_difficulty, + m_num_karts, + m_player_karts.size()); - //We look if Player 1 has a saved version of this GP. - SavedGrandPrix* gp = SavedGrandPrix::getSavedGP( StateManager::get() - ->getActivePlayerProfile(0) - ->getUniqueID(), - m_grand_prix.getId(), - m_difficulty, - m_num_karts, - m_player_karts.size()); - - // Start the race with the appropriate track - // ========================================= - if(gp != NULL) - { - m_track_number = gp->getNextTrack(); - gp->loadKarts(m_kart_status); + // Start the race with the appropriate track + // ========================================= + if(gp != NULL) + { + m_track_number = gp->getNextTrack(); + gp->loadKarts(m_kart_status); + } } - else - m_track_number = 0; - startNextRace(); } // startNew This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2013-11-13 19:45:35
|
Revision: 14421 http://sourceforge.net/p/supertuxkart/code/14421 Author: deveee Date: 2013-11-13 19:45:33 +0000 (Wed, 13 Nov 2013) Log Message: ----------- Remove saved GP when it was not continued. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2013-11-13 19:32:53 UTC (rev 14420) +++ main/trunk/src/race/race_manager.cpp 2013-11-13 19:45:33 UTC (rev 14421) @@ -337,7 +337,7 @@ } m_track_number = 0; - if(m_major_mode==MAJOR_MODE_GRAND_PRIX && m_continue_saved_gp) + if(m_major_mode==MAJOR_MODE_GRAND_PRIX) { //We look if Player 1 has a saved version of this GP. // ================================================= @@ -353,8 +353,15 @@ // ========================================= if(gp != NULL) { - m_track_number = gp->getNextTrack(); - gp->loadKarts(m_kart_status); + if (m_continue_saved_gp) + { + m_track_number = gp->getNextTrack(); + gp->loadKarts(m_kart_status); + } + else + { + gp->remove(); + } } } startNextRace(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2013-12-20 00:29:40
|
Revision: 14740 http://sourceforge.net/p/supertuxkart/code/14740 Author: deveee Date: 2013-12-20 00:29:37 +0000 (Fri, 20 Dec 2013) Log Message: ----------- Fixed problem with karts which were assigned to wrong team in soccer mode. Modified Paths: -------------- main/trunk/src/race/race_manager.cpp Modified: main/trunk/src/race/race_manager.cpp =================================================================== --- main/trunk/src/race/race_manager.cpp 2013-12-20 00:11:57 UTC (rev 14739) +++ main/trunk/src/race/race_manager.cpp 2013-12-20 00:29:37 UTC (rev 14740) @@ -322,7 +322,7 @@ // Then the players, which start behind the AI karts // ------------------------------------------------- - for(int i=m_player_karts.size()-1; i>=0; i--) + for(unsigned int i=0; i<m_player_karts.size(); i++) { KartType kt= m_player_karts[i].isNetworkPlayer() ? KT_NETWORK_PLAYER : KT_PLAYER; m_kart_status.push_back(KartStatus(m_player_karts[i].getKartName(), i, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |