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();
}