File indexing completed on 2024-05-05 15:53:14

0001 /* GCompris - mining.js
0002  *
0003  * SPDX-FileCopyrightText: 2014 Bruno Coudoin
0004  *
0005  * Authors:
0006  *   Peter Albrecht <pa-dev@gmx.de> (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/mining/resource/"
0016 
0017 var numberOfLevel = 3
0018 var items
0019 
0020 function start(items_) {
0021     items = items_
0022     items.currentLevel = Core.getInitialLevel(numberOfLevel)
0023     initLevel()
0024 }
0025 
0026 function stop() {
0027 }
0028 
0029 function getItem(source) {
0030     return {
0031         source: source ?
0032                     url + source + ".svg" :
0033                     "",
0034         rotation: Math.floor(Math.random() * 180) - 90,
0035         widthFactor: source === "sparkle" ? 0.4 : 0.2 + Math.random() * 0.4,
0036         isTarget: source === "sparkle"
0037     }
0038 }
0039 
0040 function createLevel() {
0041     var miningItems = new Array()
0042     for(var i = 0; i < 16; i++) {
0043         var index = (Math.floor(Math.random() * 16) + 1)
0044         if(index < 5)
0045             miningItems[i] = getItem("stone" + (Math.floor(Math.random() * 4) + 1))
0046         else
0047             miningItems[i] = getItem("")
0048     }
0049     // Place the sparkle
0050     // The Grid is 4*4 but we skip the last line free for the bar
0051     // The borders are harder to get so we allow them only on higher
0052     // levels.
0053     if(items.currentLevel < 2) {
0054         var choices = [5, 6, 9, 10]
0055         miningItems[choices[(Math.floor(Math.random() * 4))]] = getItem("sparkle")
0056     } else {
0057         miningItems[(Math.floor(Math.random() * 12))] = getItem("sparkle")
0058     }
0059     items.mineModel = miningItems
0060 }
0061 
0062 function initLevel() {
0063     items.collectedNuggets = 0
0064 
0065     createLevel()
0066 }
0067 
0068 function nextLevel() {
0069     items.currentLevel = Core.getNextLevel(items.currentLevel, numberOfLevel);
0070     initLevel();
0071 }
0072 
0073 function previousLevel() {
0074     items.currentLevel = Core.getPreviousLevel(items.currentLevel, numberOfLevel);
0075     initLevel();
0076 }