C

Qt Quick Ultralite swipe_game Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial

import QtQuick 2.0
import StyleModule 1.0

/*
    This component controls the visibility of the game views.
    It also adds a MouseArea (plus visual feedback) to abort the game
    from anywhere in these views.
*/

Item {
    id: root

    signal gameAborted()

    implicitWidth: Style.appSize
    implicitHeight: Style.appSize

    onVisibleChanged: {
        gameRunningView.visible = false
        gameOverView.visible = false
        gameStartView.visible = visible
    }

    MouseArea {
        id: stopArea

        anchors.fill: parent
        enabled: root.visible

        onPressAndHold: root.gameAborted()
    }

    GameStartView {
        id: gameStartView

        visible: false

        onGameStarted: {
            visible = false
            gameRunningView.visible = true
        }
    }

    GameRunningView {
        id: gameRunningView

        visible: false

        onGameOver: {
            visible = false
            gameOverView.visible = true
        }
        onGameAborted: {
            root.gameAborted()
        }
    }

    GameOverView {
        id: gameOverView

        visible: false
    }

    Image {
        anchors.fill: parent
        source: "mask_circle_highlight.svg"
        visible: stopArea.pressed
    }
}