ScummVM API documentation
highscores.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef SCUMM_INSANE_HIGHSCORES_H
22#define SCUMM_INSANE_HIGHSCORES_H
23
24#include "common/util.h"
25
26namespace Scumm {
27
28template<class Entry, class Score>
29int findHighScorePosition(const Entry *entries, int count, Score score, bool beforeEqual = false) {
30 int position = 0;
31 while (position < count && (entries[position].score > score ||
32 (!beforeEqual && entries[position].score == score)))
33 ++position;
34 return position;
35}
36
37template<class Entry>
38int insertHighScoreEntry(Entry *entries, int count, int capacity, int position, const Entry &entry) {
39 assert(count >= 0 && count <= capacity && position >= 0 && position <= count);
40 if (position >= capacity)
41 return count;
42 for (int i = MIN(count, capacity - 1); i > position; --i)
43 entries[i] = entries[i - 1];
44 entries[position] = entry;
45 return MIN(count + 1, capacity);
46}
47
48} // End of namespace Scumm
49
50#endif
T MIN(T a, T b)
Definition: util.h:63
Definition: actor.h:30