Don't save highscore when player skipped track

This commit is contained in:
mrkubax10 2021-09-18 11:21:04 +02:00
parent 789885c546
commit 26db54c90f
6 changed files with 27 additions and 3 deletions

View File

@ -70,6 +70,7 @@ SavedGrandPrix::SavedGrandPrix(unsigned int player_id,
int player_karts,
int last_track,
int reverse_type,
int skipped_tracks,
const std::vector<RaceManager::KartStatus> &kart_list)
: m_savedgp_group("SavedGP",
"Represents the saved state of a GP"),
@ -79,7 +80,8 @@ SavedGrandPrix::SavedGrandPrix(unsigned int player_id,
m_difficulty((int)difficulty,"difficulty", &m_savedgp_group),
m_player_karts(player_karts,"player_karts", &m_savedgp_group),
m_next_track(last_track,"last_track", &m_savedgp_group),
m_reverse_type(reverse_type,"reverse_type", &m_savedgp_group)
m_reverse_type(reverse_type,"reverse_type", &m_savedgp_group),
m_skipped_tracks(skipped_tracks, "skipped_tracks", &m_savedgp_group)
{
for(unsigned int i =0; i < kart_list.size(); i++)
{
@ -104,7 +106,8 @@ SavedGrandPrix::SavedGrandPrix(const XMLNode* node)
m_difficulty (0,"difficulty", &m_savedgp_group),
m_player_karts(0,"player_karts", &m_savedgp_group),
m_next_track (0,"last_track", &m_savedgp_group),
m_reverse_type(0,"reverse_type", &m_savedgp_group)
m_reverse_type(0,"reverse_type", &m_savedgp_group),
m_skipped_tracks(0, "skipped_tracks", &m_savedgp_group)
{
//m_player_group.findYourDataInAChildOf(node);
m_player_id. findYourDataInAnAttributeOf(node);
@ -114,6 +117,7 @@ SavedGrandPrix::SavedGrandPrix(const XMLNode* node)
m_player_karts.findYourDataInAnAttributeOf(node);
m_next_track. findYourDataInAnAttributeOf(node);
m_reverse_type.findYourDataInAnAttributeOf(node);
m_skipped_tracks.findYourDataInAnAttributeOf(node);
std::vector<XMLNode*> karts;
node->getNodes("Kart", karts);

View File

@ -82,6 +82,9 @@ protected:
/** GPReverseType of the GP as int */
IntUserConfigParam m_reverse_type;
/** Count of tracks that player skipped */
IntUserConfigParam m_skipped_tracks;
PtrVector<SavedGPKart> m_karts;
public:
@ -96,6 +99,7 @@ public:
int player_karts,
int last_track,
int reverse_type,
int skipped_tracks,
const std::vector<RaceManager::KartStatus> &kart_list);
/**
@ -138,6 +142,10 @@ public:
/** Returns the reverse Type. */
int getReverseType() const { return m_reverse_type; }
// ------------------------------------------------------------------------
/** Returns skipped tracks count */
int getSkippedTracks() const { return m_skipped_tracks; }
// ------------------------------------------------------------------------
/** Sets the index of the last track finished. */
void setNextTrack(int next_track) { m_next_track = next_track; }

View File

@ -131,6 +131,7 @@ RaceManager::RaceManager()
m_hit_capture_limit = 0;
m_flag_return_ticks = stk_config->time2Ticks(20.0f);
m_flag_deactivated_ticks = stk_config->time2Ticks(3.0f);
m_skipped_tracks_in_gp = 0;
setMaxGoal(0);
setTimeTarget(0.0f);
setReverseTrack(false);
@ -419,6 +420,7 @@ void RaceManager::startNew(bool from_overworld)
m_grand_prix.changeReverse((GrandPrixData::GPReverseType)
m_saved_gp->getReverseType());
m_reverse_track = m_grand_prix.getReverse();
m_skipped_tracks_in_gp = m_saved_gp->getSkippedTracks();
} // if m_saved_gp==NULL
} // if m_continue_saved_gp
} // if !network_world
@ -743,6 +745,7 @@ void RaceManager::saveGP()
(int)m_player_karts.size(),
m_track_number,
m_grand_prix.getReverseType(),
m_skipped_tracks_in_gp,
m_kart_status);
// If a new GP is saved, delete any other saved data for this
@ -1045,6 +1048,8 @@ void RaceManager::startGP(const GrandPrixData &gp, bool from_overworld,
setGrandPrix(gp);
setupPlayerKartInfo();
m_continue_saved_gp = continue_saved_gp;
if (!continue_saved_gp)
m_skipped_tracks_in_gp = 0;
setMajorMode(RaceManager::MAJOR_MODE_GRAND_PRIX);
startNew(from_overworld);

View File

@ -339,6 +339,7 @@ private:
float m_time_target;
int m_goal_target;
int m_hit_capture_limit;
int m_skipped_tracks_in_gp;
void startNextRace(); // start a next race
friend bool operator< (const KartStatus& left, const KartStatus& right)
@ -895,6 +896,10 @@ public:
unsigned getFlagDeactivatedTicks() const
{ return m_flag_deactivated_ticks; }
// ----------------------------------------------------------------------------------------
int getSkippedTracksInGP() const { return m_skipped_tracks_in_gp; }
// ----------------------------------------------------------------------------------------
void addSkippedTrackInGP() { m_skipped_tracks_in_gp++; }
// ----------------------------------------------------------------------------------------
/** Whether the current game mode allow live joining even the current game
*. started in network*/
bool supportsLiveJoining() const

View File

@ -382,6 +382,8 @@ GUIEngine::EventPropagation
else if (selection == "endrace")
{
ModalDialog::dismiss();
if (RaceManager::get()->getMajorMode() == RaceManager::MAJOR_MODE_GRAND_PRIX)
RaceManager::get()->addSkippedTrackInGP();
World::getWorld()->getRaceGUI()->removeReferee();
World::getWorld()->endRaceEarly();
return GUIEngine::EVENT_BLOCK;

View File

@ -209,7 +209,7 @@ void RaceResultGUI::init()
(RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_NORMAL_RACE || RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_TIME_TRIAL))
{
if (RaceManager::get()->getNumOfTracks() == RaceManager::get()->getTrackNumber() + 1
&& !RaceManager::get()->getGrandPrix().isRandomGP())
&& !RaceManager::get()->getGrandPrix().isRandomGP() && RaceManager::get()->getSkippedTracksInGP() == 0)
{
Highscores* highscores = World::getWorld()->getGPHighscores();
const AbstractKart* k = RaceManager::get()->getKartWithGPRank(RaceManager::get()->getLocalPlayerGPRank(PLAYER_ID_GAME_MASTER));