C

Qt Quick Ultralite swipe_game Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#ifndef GLOBALS_H
#define GLOBALS_H
#include <qul/singleton.h>
#include <qul/property.h>
#include <platforminterface/screen.h>
#include <string>
#include <platforminterface/allocator.h>

typedef std::basic_string<char, std::char_traits<char>, Qul::PlatformInterface::Allocator<char> > QulString;

class Globals : public Qul::Singleton<Globals>
{
public:
    QUL_ENUM(GameMode, Numbers, Countries);

    Globals();

    Qul::Property<uint16_t> gameStartNumber;
    Qul::Property<uint16_t> gameCurrentNumber;
    Qul::Property<QulString> gameStartCountry;
    Qul::Property<QulString> gameCurrentCountry;
    Qul::Property<GameMode> currentGameMode;
    Qul::Property<uint16_t> score;
    Qul::Property<uint8_t> fails;

    // time in milliseconds
    Qul::Property<int> time;
    Qul::Property<uint16_t> tries;

    Qul::Property<bool> useSmallTouchAreas;
    Qul::Property<bool> showTouchAreas;
    Qul::Property<bool> useViewAnimations;

    void increaseTime();
    void decreaseTime();

    void increaseTries();
    void decreaseTries();

    void switchGameMode();
    bool isNumberMode();
    void requestNewValue();
    void initGameData();
    void checkAnswer(bool guessedGreater);
    void addFail();

private:
    int generateNewNumber() const;
    int generateRandomNumber() const;
    void updateScore(bool correctGuess);

    int m_startNumber;
    int m_currentNumber;
};

#endif // GLOBALS_H