Don't save highscore when player skipped track
This commit is contained in:
parent
789885c546
commit
26db54c90f
@ -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);
|
||||
|
@ -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; }
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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));
|
||||
|
Loading…
x
Reference in New Issue
Block a user