C

Qt Quick Ultralite loader Example

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
import QtQuick 2.15
import SettingsData
import GameState

Item {
    id: root

    MouseArea {
        id: startButton

        anchors.fill: parent
        visible: !GameState.running

        Text {
            id: startLabel

            anchors.centerIn: parent
            text: "Tap to start."
            font: SettingsData.smallFont
        }

        onClicked: {
            GameState.running = true
            GameState.prepareRound()
            GameState.roundStarted()
        }
    }

    Rectangle {
        id: colorDisplay

        anchors.centerIn: parent

        visible: false
        width: 100
        height: width
        radius: 5
    }

    Timer {
        id: showCardTimer
        interval: 150
        onTriggered: { colorDisplay.visible = true }
    }

    Timer {
        id: colorDisplayTimer

        property int i: 0

        interval: i === 0 ? 0 : SettingsData.colorDisplayTimeout
        repeat: i <= GameState.colorsQueue.size()

        onTriggered: {
            colorDisplay.visible = false

            if (i === GameState.colorsQueue.size()) {
                i = 0
                GameState.takeInput = true
                stop()
            } else {
                colorDisplay.color = GameState.colorsQueue.at(i)
                showCardTimer.start()
                i++
            }
        }
        Connections{
            target: GameState
            function onRoundStarted() {
                colorDisplayTimer.start()
            }
        }
    }

    Component.onCompleted: {
        if (GameState.running) {
            colorDisplayTimer.start()
        }
    }
}