File indexing completed on 2024-04-28 15:07:44

0001 /*
0002  gcompris - ballcatch.js
0003 
0004  Copyright (C)
0005  2003, 2014: Bruno Coudoin: initial version
0006  2014: Johnny Jazeix: Qt port
0007 
0008  SPDX-License-Identifier: GPL-3.0-or-later
0009 */
0010 
0011 .pragma library
0012 .import GCompris 1.0 as GCompris //for ApplicationInfo
0013 .import "qrc:/gcompris/src/core/core.js" as Core
0014 
0015 var levelProperties = [
0016             {
0017                 "timerInc": 900,
0018                 "backgroundImage": 1
0019             },
0020             {
0021                 "timerInc": 350,
0022                 "backgroundImage": 1
0023             },
0024             {
0025                 "timerInc": 300,
0026                 "backgroundImage": 2
0027             },
0028             {
0029                 "timerInc": 200,
0030                 "backgroundImage": 2
0031             },
0032             {
0033                 "timerInc": 150,
0034                 "backgroundImage": 3
0035             },
0036             {
0037                 "timerInc": 100,
0038                 "backgroundImage": 3
0039             },
0040             {
0041                 "timerInc": 60,
0042                 "backgroundImage": 4
0043             },
0044             {
0045                 "timerInc": 30,
0046                 "backgroundImage": 4
0047             },
0048             {
0049                 "timerInc": 15,
0050                 "backgroundImage": 4
0051             },
0052         ]
0053 
0054 var gameWon = false
0055 
0056 // When the timer is finished we set this variable to true to disabled key press
0057 var gameFinished = false
0058 
0059 // Store the time diff between left and right key
0060 var timerDiff = 0
0061 // The child has to press both key between this laps of time
0062 var timerinc = 900
0063 
0064 
0065 var items
0066 
0067 function start(items_) {
0068     items = items_
0069     items.currentLevel = Core.getInitialLevel(levelProperties.length)
0070 
0071     initLevel()
0072 
0073 }
0074 
0075 function stop() {
0076     items.deltaPressedTimer.stop();
0077 }
0078 
0079 function leftShiftPressed() {
0080     if(!items.deltaPressedTimer.running && !items.rightPressed) {
0081         items.leftHand.animate(timerinc)
0082         items.deltaPressedTimer.start()
0083     }
0084 
0085     if(items.rightPressed) {
0086         items.leftHand.animate(timerinc)
0087         items.background.playSound("smudge")
0088     }
0089 }
0090 
0091 function rightShiftPressed() {
0092     if(!items.deltaPressedTimer.running && !items.leftPressed) {
0093         items.deltaPressedTimer.start()
0094         items.rightHand.animate(timerinc)
0095     }
0096     if(items.leftPressed) {
0097         items.rightHand.animate(timerinc)
0098         items.background.playSound("smudge")
0099     }
0100 }
0101 
0102 function endTimer() {
0103     gameFinished = true
0104     gameWon = items.rightPressed && items.leftPressed
0105 }
0106 
0107 function initLevel() {
0108     timerinc = levelProperties[items.currentLevel].timerInc
0109 
0110     timerDiff = 0
0111     items.deltaPressedTimer.stop();
0112     items.deltaPressedTimer.interval = timerinc
0113 
0114     items.background.source = "qrc:/gcompris/src/activities/ballcatch/resource/beach" +
0115             levelProperties[items.currentLevel].backgroundImage + ".svg"
0116 
0117     items.ball.stop();
0118     items.ball.reinitBall();
0119 
0120     items.leftPressed = false
0121     items.rightPressed = false
0122 
0123     gameWon = false
0124     gameFinished = false
0125 
0126     items.leftHand.reinitPosition()
0127     items.rightHand.reinitPosition()
0128 }
0129 
0130 function nextLevel() {
0131     items.currentLevel = Core.getNextLevel(items.currentLevel, levelProperties.length);
0132     initLevel();
0133 }
0134 
0135 function previousLevel() {
0136     items.currentLevel = Core.getPreviousLevel(items.currentLevel, levelProperties.length);
0137     initLevel();
0138 }
0139 
0140 function restartLevel() {
0141     initLevel();
0142 }
0143 
0144 function processKey(event) {
0145     if(!gameFinished) {
0146         if(event.key === Qt.Key_Left) {
0147             // left
0148             if(!items.leftPressed) {
0149                 leftShiftPressed();
0150                 items.leftPressed = true
0151             }
0152         }
0153         else if(event.key === Qt.Key_Right) {
0154             // right
0155             if(!items.rightPressed) {
0156                 rightShiftPressed();
0157                 items.rightPressed = true
0158             }
0159         }
0160     }
0161     event.accepted = true;
0162 }