File indexing completed on 2024-04-28 15:08:05

0001 /* GCompris - target.js
0002  *
0003  * SPDX-FileCopyrightText: 2014 Bruno coudoin
0004  *
0005  * Authors:
0006  *   Bruno Coudoin <bruno.coudoin@gcompris.net> (GTK+ version)
0007  *   Bruno Coudoin <bruno.coudoin@gcompris.net> (Qt Quick port)
0008  *
0009  *   SPDX-License-Identifier: GPL-3.0-or-later
0010  */
0011 .pragma library
0012 .import QtQuick 2.12 as Quick
0013 .import "qrc:/gcompris/src/core/core.js" as Core
0014 
0015 var url = "qrc:/gcompris/src/activities/target/resource/"
0016 
0017 var levels
0018 var numberOfLevel
0019 var items
0020 
0021 function start(items_) {
0022     items = items_
0023     levels = items.levels
0024     numberOfLevel = levels.length
0025     items.score.currentSubLevel = 0
0026     items.numberOfSubLevel = 5
0027 
0028     items.currentLevel = Core.getInitialLevel(numberOfLevel);
0029 
0030     initLevel()
0031 }
0032 
0033 function stop() {
0034 }
0035 
0036 function initLevel() {
0037     items.errorRectangle.resetState()
0038     items.targetModel.clear()
0039     items.arrowFlying = false
0040     for(var i = levels[items.currentLevel].length - 1;  i >= 0 ; --i) {
0041         items.targetModel.append(levels[items.currentLevel][i])
0042     }
0043     // Reset the arrows first
0044     items.nbArrow = 0
0045     items.nbArrow = Math.min(items.currentLevel + 3, 6)
0046     items.targetItem.start()
0047     items.userEntry.text = ""
0048     items.inputLocked = false
0049 }
0050 
0051 function nextSubLevel() {
0052     if(items.score.currentSubLevel >= items.numberOfSubLevel) {
0053         items.bonus.good("flower");
0054     } else {
0055         initLevel();
0056     }
0057 }
0058 
0059 function nextLevel() {
0060     items.score.stopWinAnimation();
0061     items.score.currentSubLevel = 0;
0062     items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel);
0063     initLevel();
0064 }
0065 
0066 function previousLevel() {
0067     items.score.stopWinAnimation();
0068     items.score.currentSubLevel = 0;
0069     items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel);
0070     initLevel();
0071 }
0072 
0073 function checkAnswer() {
0074     items.inputLocked = true;
0075     if(items.targetItem.scoreTotal.toString() === items.userEntry.text) {
0076         items.score.currentSubLevel++
0077         items.score.playWinAnimation()
0078         items.audioEffects.play("qrc:/gcompris/src/core/resource/sounds/completetask.wav")
0079     }
0080     else {
0081         items.errorRectangle.startAnimation()
0082         items.audioEffects.play("qrc:/gcompris/src/core/resource/sounds/crash.wav")
0083     }
0084 }