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

0001 /* GCompris - leftright.js
0002  *
0003  * SPDX-FileCopyrightText: 2014 Bruno Coudoin
0004  *
0005  * Authors:
0006  *   Pascal Georges <pascal.georges1@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 .import QtQuick 2.12 as Quick
0012 .import "qrc:/gcompris/src/core/core.js" as Core
0013 
0014 var currentHands = []
0015 var levels = [
0016     { "images": [
0017         "main_droite_dessus_0.webp",
0018         "main_droite_paume_0.webp" ,
0019         "main_gauche_dessus_0.webp",
0020         "main_gauche_paume_0.webp" ],
0021       "rotations": [-90]
0022     },
0023     { "images": [
0024         "main_droite_dessus_0.webp",
0025         "main_droite_paume_0.webp",
0026         "main_gauche_dessus_0.webp",
0027         "main_gauche_paume_0.webp" ],
0028       "rotations": [0, 180]
0029     },
0030     { "images": [
0031         "main_droite_dessus_0.webp",
0032         "main_droite_paume_0.webp",
0033         "main_gauche_dessus_0.webp",
0034         "main_gauche_paume_0.webp" ],
0035         "rotations": [90]
0036      },
0037     { "images": [
0038         "poing_droit_dessus_0.webp",
0039         "poing_droit_paume_0.webp",
0040         "poing_gauche_dessus_0.webp",
0041         "poing_gauche_paume_0.webp" ],
0042         "rotations": [-90]
0043     },
0044     { "images": [
0045         "poing_droit_dessus_0.webp",
0046         "poing_droit_paume_0.webp",
0047         "poing_gauche_dessus_0.webp",
0048         "poing_gauche_paume_0.webp" ],
0049         "rotations": [0, 180]
0050     },
0051     { "images": [
0052         "poing_droit_dessus_0.webp",
0053         "poing_droit_paume_0.webp",
0054         "poing_gauche_dessus_0.webp",
0055         "poing_gauche_paume_0.webp" ],
0056         "rotations": [90]
0057     },
0058 ]
0059 
0060 
0061 var items
0062 
0063 function start(items_) {
0064     items = items_
0065     items.currentLevel = Core.getInitialLevel(levels.length)
0066     initLevel()
0067 }
0068 
0069 function stop() {
0070 
0071 }
0072 
0073 function initLevel() {
0074     items.score.currentSubLevel = 0
0075     currentHands = new Array()
0076     var level = levels[items.currentLevel]
0077     var counter = 0
0078     for (var i = 0 ; i < level.images.length ; i++) {
0079         for (var r = 0 ; r < level.rotations.length ; r++) {
0080             currentHands[counter++] = {
0081                 'image': level.images[i],
0082                 'rotation': level.rotations[r] }
0083         }
0084     }
0085 
0086     items.score.numberOfSubLevels = level.images.length * level.rotations.length
0087 
0088     currentHands = Core.shuffle(currentHands)
0089     displayHand()
0090 }
0091 
0092 function nextLevel() {
0093     items.score.stopWinAnimation()
0094     items.currentLevel = Core.getNextLevel(items.currentLevel, levels.length);
0095     initLevel();
0096 }
0097 
0098 function previousLevel() {
0099     items.score.stopWinAnimation()
0100     items.currentLevel = Core.getPreviousLevel(items.currentLevel, levels.length);
0101     initLevel();
0102 }
0103 
0104 function displayHand() {
0105     items.leftButton.isCorrectAnswer = isLeft()
0106     items.rightButton.isCorrectAnswer = isRight()
0107     items.imageAnimOff.start()
0108     items.buttonsBlocked = false
0109 }
0110 
0111 function getCurrentHandImage() {
0112     return "qrc:/gcompris/src/activities/leftright/resource/" +
0113             currentHands[items.score.currentSubLevel].image
0114 }
0115 
0116 function getCurrentHandRotation() {
0117     return currentHands[items.score.currentSubLevel].rotation
0118 }
0119 
0120 function displayNextHand() {
0121     if(items.score.currentSubLevel >= items.score.numberOfSubLevels) {
0122         items.bonus.good("flower")
0123         return
0124     }
0125     displayHand()
0126 }
0127 
0128 function isLeft() {
0129     return (currentHands[items.score.currentSubLevel].image.indexOf("gauche") !== -1) ? true : false
0130 }
0131 
0132 
0133 function isRight() {
0134     return (currentHands[items.score.currentSubLevel].image.indexOf("droit") !== -1) ? true : false
0135 }
0136 
0137 
0138 function goodAnswerPressed() {
0139     items.score.currentSubLevel++;
0140     items.score.playWinAnimation();
0141 }
0142 
0143 function leftClickPressed() {
0144     items.leftButton.pressed()
0145 }
0146 
0147 function rightClickPressed() {
0148     items.rightButton.pressed()
0149 }