File indexing completed on 2024-05-19 07:29:38
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 }