Warning, file /education/gcompris/src/activities/scalesboard/scalesboard.js was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* GCompris - scalesboard.js
0002  *
0003  * SPDX-FileCopyrightText: 2014 Bruno Coudoin
0004  *
0005  * Authors:
0006  *   miguel DE IZARRA <miguel2i@free.fr> (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/scalesboard/resource/"
0016 
0017 var numberOfLevel
0018 var items
0019 var currentTargets = []
0020 var initCompleted = false
0021 
0022 function start(items_) {
0023     items = items_
0024     numberOfLevel = items.levels.length
0025     items.currentLevel = Core.getInitialLevel(numberOfLevel)
0026     initLevel()
0027 }
0028 
0029 function stop() {
0030 }
0031 
0032 function initLevel() {
0033     items.errorRectangle.resetState()
0034     currentTargets = Core.shuffle(items.levels[items.currentLevel].targets)
0035     items.score.currentSubLevel = 0
0036     items.score.numberOfSubLevels = currentTargets.length
0037     items.rightDrop = items.levels[items.currentLevel].rightDrop
0038     items.question.text = items.levels[items.currentLevel].question != undefined ? items.levels[items.currentLevel].question : ""
0039     displayLevel()
0040 }
0041 
0042 function displayLevel()
0043 {
0044 
0045     initCompleted = false
0046     items.numpad.answer = ""
0047     items.masseAreaLeft.init()
0048     items.masseAreaRight.init()
0049     items.masseAreaCenter.init()
0050     var data = items.levels[items.currentLevel]
0051     for(var i=0; i < data.masses.length; i++)
0052         items.masseAreaCenter.addMasse("masse" + (i % 5 + 1) + ".svg",
0053                                        data.masses[i][0],
0054                                        data.masses[i][1],
0055                                        i,
0056                                        /* dragEnabled */ true)
0057 
0058     items.giftWeight = currentTargets[items.score.currentSubLevel][0]
0059     items.masseAreaRight.addMasse("gift.svg",
0060                                   currentTargets[items.score.currentSubLevel][0],
0061                                   data.question ? "" : currentTargets[items.score.currentSubLevel][1],
0062                                   0,
0063                                   /* dragEnabled */ false)
0064 
0065     initCompleted = true
0066     items.buttonsBlocked = false
0067 }
0068 
0069 function checkAnswer() {
0070     items.buttonsBlocked = true
0071     if((initCompleted && items.scaleHeight == 0 && !items.question.visible)
0072             || (items.question.userEntry == items.question.answer)) {
0073         items.score.currentSubLevel++;
0074         items.score.playWinAnimation();
0075         items.audioEffects.play("qrc:/gcompris/src/core/resource/sounds/completetask.wav");
0076     }
0077     else {
0078         items.errorRectangle.startAnimation();
0079         items.audioEffects.play("qrc:/gcompris/src/core/resource/sounds/crash.wav");
0080     }
0081 }
0082 
0083 function nextSubLevel() {
0084     if(items.score.currentSubLevel >= items.score.numberOfSubLevels) {
0085         items.bonus.good("flower")
0086     } else {
0087         displayLevel()
0088     }
0089 }
0090 
0091 function nextLevel() {
0092     items.score.stopWinAnimation();
0093     items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel);
0094     initLevel();
0095 }
0096 
0097 function previousLevel() {
0098     items.score.stopWinAnimation();
0099     items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel);
0100     initLevel();
0101 }