C
Qt Quick Ultralite swipe_game Demo
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#include "HighscoreModel.h"
#include <algorithm>
#include <cassert>
HighscoreModel::HighscoreModel()
{
m_highscores.reserve(10);
}
int HighscoreModel::count() const
{
return m_highscores.size();
}
Highscore HighscoreModel::data(int index) const
{
assert(index >= 0 && index < m_highscores.size());
return (index >= 0 && index < m_highscores.size()) ? m_highscores[index] : Highscore();
}
static bool reverseOrder(const Highscore &lhs, const Highscore &rhs)
{
return lhs > rhs;
}
void HighscoreModel::addEntry(int time, int tries, int score)
{
Highscore newScore(time, tries, score);
if (m_highscores.size() < HighscoreModel::maxSize)
m_highscores.push_back(newScore);
else if (m_highscores.back() < newScore)
m_highscores.back() = newScore;
std::sort(m_highscores.begin(), m_highscores.end(), &reverseOrder);
modelReset();
}