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