File indexing completed on 2024-04-28 15:07:49
0001 /* GCompris - erase.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 0012 .pragma library 0013 .import QtQuick 2.12 as Quick 0014 .import GCompris 1.0 as GCompris //for ApplicationInfo 0015 .import "qrc:/gcompris/src/core/core.js" as Core 0016 0017 var url = "qrc:/gcompris/src/activities/erase/resource/" 0018 0019 //array of array, each with filename, horizontalAlignment and verticalAlignment 0020 var backgroundImages = [ 0021 ["alpaca.webp", "left", "top"], 0022 ["bee.webp", "left", "center"], 0023 ["butterfly.webp", "left", "center"], 0024 ["calf.webp", "center", "center"], 0025 ["camels.webp", "right", "center"], 0026 ["caterpillar.webp", "center", "center"], 0027 ["chamaeleon.webp", "left", "center"], 0028 ["cheetah.webp", "right", "top"], 0029 ["crab.webp", "center", "center"], 0030 ["dolphin.webp", "center", "top"], 0031 ["flying_fox.webp", "center", "bottom"], 0032 ["gibbon.webp", "center", "center"], 0033 ["giraffe.webp", "right", "center"], 0034 ["goat.webp", "right", "top"], 0035 ["gorilla.webp", "center", "center"], 0036 ["gosling.webp", "center", "top"], 0037 ["heron.webp", "center", "center"], 0038 ["horse.webp", "center", "top"], 0039 ["kingfisher.webp", "center", "top"], 0040 ["kitten.webp", "center", "center"], 0041 ["long_nosed_monkey.webp", "center", "top"], 0042 ["macaque.webp", "center", "center"], 0043 ["meerkats.webp", "center", "top"], 0044 ["northern_harrier.webp", "center", "center"], 0045 ["nubian_ibex.webp", "center", "top"], 0046 ["penguin.webp", "center", "top"], 0047 ["pika.webp", "center", "top"], 0048 ["red_panda.webp", "center", "center"], 0049 ["rhinoceros.webp", "center", "center"], 0050 ["spoonbills.webp", "left", "top"], 0051 ["squirrel.webp", "center", "top"], 0052 ["swans.webp", "right", "top"], 0053 ["toucan.webp", "left", "top"] 0054 ] 0055 0056 var blockImages = [ 0057 url + "transparent_square.svg", 0058 url + "transparent_square_yellow.svg", 0059 url + "transparent_square_green.svg" 0060 ] 0061 0062 var currentImage 0063 var main 0064 var items 0065 var type 0066 0067 // The counter of created blocks object 0068 var createdBlocks 0069 var killedBlocks 0070 0071 var numberOfLevel = 6 0072 var imgIndex 0073 0074 function start(main_, items_, type_) { 0075 main = main_ 0076 items = items_ 0077 type = type_ 0078 items.currentLevel = Core.getInitialLevel(numberOfLevel) 0079 items_.currentSubLevel = 0 0080 currentImage = 0 0081 imgIndex = 0 0082 initLevel() 0083 } 0084 0085 function stop() { 0086 } 0087 0088 function initLevel() { 0089 items.blocks.clear() 0090 imgIndex++ 0091 currentImage++ 0092 if(currentImage >= backgroundImages.length) { 0093 currentImage = 0 0094 } 0095 items.background.source = url + backgroundImages[currentImage][0] 0096 items.background.alignBackground() 0097 createdBlocks = 0 0098 killedBlocks = 0 0099 var nbx = Math.min((items.currentLevel % 2 * 3) + 5, main.width / (10 * GCompris.ApplicationInfo.ratio)); 0100 var nby = Math.min((items.currentLevel % 2 * 3) + 5, main.height / (10 * GCompris.ApplicationInfo.ratio)); 0101 var data 0102 0103 for(var x = 0; x < nbx; ++x) { 0104 for(var y = 0; y < nby; ++y) { 0105 data = { 0106 'nx': nbx, 'ny': nby, 'a': x, 'b': y, 0107 'op': 1.0, 'MAIN': main, 'BAR': items.bar, 0108 'img': blockImages[imgIndex % blockImages.length] 0109 } 0110 items.blocks.append(data) 0111 createdBlocks++ 0112 } 0113 } 0114 } 0115 0116 function nextLevel() { 0117 items.score.stopWinAnimation(); 0118 items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel); 0119 items.currentSubLevel = 0; 0120 initLevel(); 0121 } 0122 0123 function nextSubLevel() { 0124 if( items.currentSubLevel >= items.nbSubLevel) { 0125 items.bonus.good("flower") 0126 return; 0127 } 0128 initLevel(); 0129 } 0130 0131 function previousLevel() { 0132 items.score.stopWinAnimation(); 0133 items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel); 0134 items.currentSubLevel = 0; 0135 initLevel(); 0136 } 0137 0138 function blockKilled() { 0139 if(++killedBlocks === createdBlocks) { 0140 items.currentSubLevel += 1 0141 items.audioEffects.play("qrc:/gcompris/src/core/resource/sounds/completetask.wav") 0142 items.score.playWinAnimation() 0143 if(items.mode === 2) { 0144 items.okButton.levelFinished = true 0145 } 0146 } 0147 } 0148 0149 function getFirstImage() { 0150 backgroundImages = Core.shuffle(backgroundImages) 0151 return backgroundImages[0][0] 0152 }