Juicy Squash - Match-3 Game
import Felgo 3.0
import QtQuick 2.0
import "scenes"
GameWindow {
id: gameWindow
screenWidth: 640
screenHeight: 960
FontLoader {
id: gameFont
source: "../assets/fonts/akaDylan Plain.ttf"
}
GoogleAnalytics {
id: gAnalytics
}
Rectangle {
id: loadScreen
width: gameWindow.width
height: gameWindow.height
color: "white"
z: 1
opacity: 0
enabled: opacity == 1 ? true : false
visible: opacity > 0 ? true : false
signal fullyVisible()
Text {
font.family: gameFont.name
font.pixelSize: gameWindow.width / 640 * 24
color: "red"
text: "Loading ..."
anchors.centerIn: parent
}
Behavior on opacity {
PropertyAnimation {
duration: 300
onRunningChanged: {
if(!running && opacity == 1)
loadScreen.fullyVisible()
}
}
}
}
SplashScreenScene {
id: splashScene
onSplashScreenFinished: gameWindow.state = "game"
}
Loader {
id: gameSceneLoader
onLoaded: loadScreen.opacity = 0
}
Loader {
id: gameNetworkSceneLoader
onLoaded: loadScreen.opacity = 0
}
state: "splash"
states: [
State {
name: "splash"
PropertyChanges {target: splashScene; opacity: 1}
PropertyChanges {target: gameWindow; activeScene: splashScene}
},
State {
name: "gameNetwork"
StateChangeScript {
script: {
showGameNetworkScene()
gAnalytics.logScreen("GameNetwork")
}
}
},
State {
name: "game"
StateChangeScript {
script: {
showGameScene()
gAnalytics.logScreen("Game")
}
}
}
]
function showGameScene() {
if(gameSceneLoader.item === null) {
gameSceneLoader.loaded.connect(showGameScene)
loadGameScene()
return
}
gameWindow.activeScene = gameSceneLoader.item
gameSceneLoader.item.opacity = 1
if(gameNetworkSceneLoader.item !== null)
gameNetworkSceneLoader.item.opacity = 0
}
function showGameNetworkScene() {
if(gameNetworkSceneLoader.item === null) {
gameNetworkSceneLoader.loaded.connect(showGameNetworkScene)
loadGameNetworkScene()
return
}
gameWindow.activeScene = gameNetworkSceneLoader.item
gameNetworkSceneLoader.item.opacity = 1
if(gameSceneLoader.item !== null)
gameSceneLoader.item.opacity = 0
}
function loadGameScene() {
loadScreen.opacity = 1
loadScreen.fullyVisible.connect(fetchAndInitializeGameScene)
}
function loadGameNetworkScene() {
loadScreen.opacity = 1
loadScreen.fullyVisible.connect(fetchAndInitializeGameNetworkScene)
}
function fetchAndInitializeGameScene() {
gameSceneLoader.source = "scenes/GameScene.qml"
gameSceneLoader.item.highscoreClicked.connect(onHighscoreClicked)
gameSceneLoader.item.reportScore.connect(onReportScore)
loadScreen.fullyVisible.disconnect(fetchAndInitializeGameScene)
}
function fetchAndInitializeGameNetworkScene() {
gameNetworkSceneLoader.source = "scenes/GameNetworkScene.qml"
gameNetworkSceneLoader.item.backButtonPressed.connect(onBackButtonPressed)
loadScreen.fullyVisible.disconnect(fetchAndInitializeGameNetworkScene)
}
function onReportScore(score) {
if(gameNetworkSceneLoader.item === null) {
gameNetworkSceneLoader.loaded.connect(function() { onReportScore(score)} )
loadGameNetworkScene()
return
}
gameNetworkSceneLoader.item.gameNetwork.reportScore(score)
}
function onHighscoreClicked() {
gameWindow.state = "gameNetwork"
}
function onBackButtonPressed() {