File indexing completed on 2024-04-28 15:07:49
0001 /* GCompris - family.js 0002 * 0003 * SPDX-FileCopyrightText: 2016 Rajdeep Kaur <rajdeep.kaur@kde.org> 0004 * 0005 * Authors: 0006 * 0007 * Rajdeep Kaur <rajdeep.kaur@kde.org> 0008 * Rudra Nil Basu <rudra.nil.basu.1996@gmail.com> 0009 * 0010 * SPDX-License-Identifier: GPL-3.0-or-later 0011 */ 0012 .pragma library 0013 .import QtQuick 2.12 as Quick 0014 .import GCompris 1.0 as GCompris 0015 0016 .import "qrc:/gcompris/src/core/core.js" as Core 0017 0018 var items; 0019 var barAtStart; 0020 var url = "qrc:/gcompris/src/activities/family/resource/" 0021 0022 var numberOfLevel 0023 var shuffledLevelIndex = [] 0024 var levelToLoad 0025 var answerButtonRatio = 0; 0026 0027 function start(items_) { 0028 items = items_ 0029 numberOfLevel = items.dataset.levelElements.length 0030 items.currentLevel = Core.getInitialLevel(numberOfLevel) 0031 barAtStart = GCompris.ApplicationSettings.isBarHidden; 0032 GCompris.ApplicationSettings.isBarHidden = true; 0033 0034 shuffle() 0035 0036 initLevel() 0037 } 0038 0039 function stop() { 0040 items.loadDatasetDelay.stop(); 0041 GCompris.ApplicationSettings.isBarHidden = barAtStart; 0042 } 0043 0044 function initLevel() { 0045 0046 items.selectedPairs.reset() 0047 levelToLoad = getCurrentLevelIndex() 0048 var levelTree = items.dataset.levelElements[levelToLoad] 0049 items.dataset.numberOfGenerations = levelTree.numberOfGenerations 0050 // Need to delay in order of the number of generation change to be taken in account 0051 items.loadDatasetDelay.start() 0052 } 0053 0054 function loadDatasets() { 0055 if (!items) { 0056 return 0057 } 0058 0059 var levelTree = items.dataset.levelElements[levelToLoad] 0060 0061 answerButtonRatio = 1 / (levelTree.options.length + 4); 0062 0063 items.nodeRepeater.model.clear(); 0064 items.answersChoice.model.clear(); 0065 items.edgeRepeater.model.clear(); 0066 items.ringRepeator.model.clear(); 0067 0068 for(var i = 0 ; i < levelTree.nodePositions.length ; i++) { 0069 items.nodeRepeater.model.append({ 0070 "xPosition": levelTree.nodePositions[i][0], 0071 "yPosition": levelTree.nodePositions[i][1], 0072 "nodeValue": levelTree.nodeValue[i], 0073 "currentState": items.mode == "family" ? levelTree.currentState[i] : "deactive", 0074 "nodeWeight": levelTree.nodeWeights[i] 0075 }); 0076 } 0077 0078 for(var i = 0 ; i <levelTree.options.length ; i++) { 0079 items.answersChoice.model.append({ 0080 "optionn": levelTree.options[i], 0081 "answer": levelTree.answer[0] 0082 }); 0083 } 0084 0085 for(var i = 0 ; i < levelTree.edgeList.length ; i++) { 0086 items.edgeRepeater.model.append({ 0087 "_x1": levelTree.edgeList[i][0], 0088 "_y1": levelTree.edgeList[i][1], 0089 "_x2": levelTree.edgeList[i][2], 0090 "_y2": levelTree.edgeList[i][3], 0091 "edgeState": levelTree.edgeState[i] 0092 }); 0093 } 0094 0095 for(var i = 0 ; i < levelTree.edgeState.length ; i++) { 0096 if(levelTree.edgeState[i] === "married") { 0097 var xcor = (levelTree.edgeList[i][0]+levelTree.edgeList[i][2]-0.04)/2; 0098 var ycor = levelTree.edgeList[i][3] - 0.02 0099 items.ringRepeator.model.append({ 0100 "ringx": xcor, 0101 "ringy": ycor 0102 }); 0103 } 0104 } 0105 0106 items.questionTopic = levelTree.answer[0] 0107 items.questionMarkPosition.x = levelTree.captions[1][0] 0108 items.questionMarkPosition.y = levelTree.captions[1][1] 0109 items.meLabelPosition.x = levelTree.captions[0][0] 0110 items.meLabelPosition.y = levelTree.captions[0][1] 0111 } 0112 0113 function shuffle() { 0114 for (var i = 0;i < numberOfLevel;i++) { 0115 shuffledLevelIndex[i] = i 0116 } 0117 0118 Core.shuffle(shuffledLevelIndex); 0119 } 0120 0121 function getCurrentLevelIndex() { 0122 if (!items) { 0123 return 0124 } 0125 0126 return shuffledLevelIndex[items.currentLevel] 0127 } 0128 0129 function nextLevel() { 0130 items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel); 0131 initLevel(); 0132 } 0133 0134 function previousLevel() { 0135 items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel); 0136 initLevel(); 0137 }