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 }