X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgame.c;h=ca2fa98e521542e1b723fc73479e592c76a6744b;hb=2fd4947ab48cc80c2a5b38f26e207635f5d40cf3;hp=1c33d10b8ef21cceb3570c909ab408321434b2f4;hpb=ae6637c6b1ac75a5c43c856d47b79f0b096a9ac6;p=rocksndiamonds.git diff --git a/src/game.c b/src/game.c index 1c33d10b..ca2fa98e 100644 --- a/src/game.c +++ b/src/game.c @@ -5151,7 +5151,8 @@ static int addScoreEntry(struct ScoreInfo *list, struct ScoreEntry *new_entry, } } - return -1; + // special case: new score is beyond the last high score list position + return MAX_SCORE_ENTRIES; } void NewHighScore(int level_nr, boolean tape_saved) @@ -5169,6 +5170,19 @@ void NewHighScore(int level_nr, boolean tape_saved) scores.last_added = addScoreEntry(&scores, &new_entry, one_per_name); + if (scores.last_added >= MAX_SCORE_ENTRIES) + { + scores.last_added = MAX_SCORE_ENTRIES - 1; + scores.force_last_added = TRUE; + + scores.entry[scores.last_added] = new_entry; + + // store last added local score entry (before merging server scores) + scores.last_added_local = scores.last_added; + + return; + } + if (scores.last_added < 0) return;