diff --git a/src/activities/activities.txt b/src/activities/activities.txt index ecdb52be8..1e22120a9 100644 --- a/src/activities/activities.txt +++ b/src/activities/activities.txt @@ -1,155 +1,156 @@ # The list of activities that will be loaded at GCompris start. # Keep it sorted advanced_colors algebra_by algebra_div algebra_minus algebra_plus algorithm align4 align4-2players alphabet-sequence babymatch babyshapes +baby_tangram baby_wordprocessor balancebox ballcatch bargame bargame_2players binary_bulb braille_alphabets braille_fun calendar canal_lock categorization checkers checkers_2players chess chess_2players chess_partyend chronos clickanddraw clickgame click_on_letter click_on_letter_up clockgame color_mix color_mix_light colors crane details digital_electricity drawletters drawnumbers enumerate erase erase_2clic erase_clic explore_farm_animals explore_monuments explore_world_animals explore_world_music family family_find_relative fifteen find_the_day followline football geo-country geography gletters gnumch-equality gnumch-factors gnumch-inequality gnumch-multiples gnumch-primes graph-coloring guesscount guessnumber hangman hanoi hanoi_real hexagon imagename instruments intro_gravity land_safe lang leftright letter-in-word lightsoff louis-braille magic-hat-minus magic-hat-plus maze mazeinvisible mazerelative melody memory memory-case-association memory-case-association-tux memory-enumerate memory-math-add memory-math-add-minus memory-math-add-minus-mult-div memory-math-add-minus-mult-div-tux memory-math-add-minus-tux memory-math-add-tux memory-math-div memory-math-div-tux memory-math-minus memory-math-minus-tux memory-math-mult memory-math-mult-div memory-math-mult-div-tux memory-math-mult-tux memory-sound memory-sound-tux memory-tux memory-wordnumber mining missing-letter money money_back money_back_cents money_cents mosaic nine_men_morris nine_men_morris_2players note_names number_sequence numbers-odd-even paintings penalty piano_composition photo_hunter planegame play_piano play_rhythm programmingMaze railroad readingh readingv redraw redraw_symmetrical renewable_energy reversecount roman_numerals scalesboard scalesboard_weight scalesboard_weight_avoirdupois share simplepaint smallnumbers smallnumbers2 solar_system submarine sudoku superbrain tangram target tic_tac_toe tic_tac_toe_2players traffic watercycle wordsgame diff --git a/src/activities/baby_tangram/ActivityInfo.qml b/src/activities/baby_tangram/ActivityInfo.qml new file mode 100644 index 000000000..f772a5a2c --- /dev/null +++ b/src/activities/baby_tangram/ActivityInfo.qml @@ -0,0 +1,40 @@ +/* GCompris - ActivityInfo.qml + * + * Copyright (C) 2019 Johnny Jazeix + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import GCompris 1.0 + +ActivityInfo { + name: "baby_tangram/BabyTangram.qml" + difficulty: 1 + icon: "baby_tangram/baby_tangram.svg" + author: "Johnny Jazeix <jazeix@gmail.com>" + demo: true + //: Activity title + title: qsTr("Reassemble the shapes") + //: Help title + description: qsTr("The objective is to form a given shape") + // intro: "Click on each object to obtain the same figure. You can change their orientation by clicking on the arrows." + //: Help goal + goal: "" + //: Help prerequisite + prerequisite: qsTr("Mouse-manipulation") + //: Help manual + manual: qsTr("Select the object to form. Move a piece by dragging it. The symmetrical button appears on items that supports it. Click on the rotation button or drag around it to show the rotation you want. More complicated levels can be found in tangram activity.") + credit: "" + section: "puzzle" + createdInVersion: 9800 +} diff --git a/src/activities/baby_tangram/BabyTangram.qml b/src/activities/baby_tangram/BabyTangram.qml new file mode 100644 index 000000000..51cd1e89c --- /dev/null +++ b/src/activities/baby_tangram/BabyTangram.qml @@ -0,0 +1,33 @@ +/* GCompris - BabyTangram.qml + * + * Copyright (C) 2019 Johnny Jazeix + * + * Authors: + * Yves Combe / Philippe Banwarth (GTK+ version) + * Johnny Jazeix / Bruno Coudoin (Qt Quick port) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import QtQuick 2.6 +import GCompris 1.0 + +import "dataset.js" as Dataset +import "../tangram" +import "." + +Tangram { + id: activity + dataset: Dataset + resourceUrl: "qrc:/gcompris/src/activities/baby_tangram/resource/" +} diff --git a/src/activities/baby_tangram/CMakeLists.txt b/src/activities/baby_tangram/CMakeLists.txt new file mode 100644 index 000000000..0d148997e --- /dev/null +++ b/src/activities/baby_tangram/CMakeLists.txt @@ -0,0 +1 @@ +GCOMPRIS_ADD_RCC(activities/baby_tangram *.qml *.svg dataset.js resource/*/*) diff --git a/src/activities/baby_tangram/baby_tangram.svg b/src/activities/baby_tangram/baby_tangram.svg new file mode 100644 index 000000000..53b344764 --- /dev/null +++ b/src/activities/baby_tangram/baby_tangram.svg @@ -0,0 +1,863 @@ + + + + + + + + + + image/svg+xml + + + 2017 + + + Timothée Giet and Ilya Bizyaev + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/activities/baby_tangram/dataset.js b/src/activities/baby_tangram/dataset.js new file mode 100644 index 000000000..2f3bdf4d1 --- /dev/null +++ b/src/activities/baby_tangram/dataset.js @@ -0,0 +1,717 @@ +.pragma library + +/* dataset format + - for each level we have: + - bg: an optional background image + - colorMask: the color of the shadowed target items + - a list of pieces that each holds: + - img: piece file name + - flippable: is the piece flippable + - flipping: target flipping state + - x: target x position + - y: target y position + - width: item width + - height: item height + - rotation: item target rotation + - moduloRotation: modulo rotation + - initX: initial x position + - initY: innitial y position + - initRotation: initial rotation + - initFlipping: initial flipping +*/ + +var dataset = [ + { + 'bg': '', + 'name': 'train1', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'train/loco.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.238, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84868, + 'initY': 0.14357, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.237, + 'x': 0.16136986301369866, + 'y': 0.5003377010125074 + }, + { + 'img': 'train/coal.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.144, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.40198, + 'initY': 0.10248, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.221, + 'x': 0.38829064919595, + 'y': 0.5456027397260274 + }, + { + 'img': 'train/wood.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.141, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.58434, + 'initY': 0.23488, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.235, + 'x': 0.6111453245979751, + 'y': 0.5469714115544966 + }, + { + 'img': 'train/passenger.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.213, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.15311, + 'initY': 0.15368, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.238, + 'x': 0.8362608695652176, + 'y': 0.5122281119714115 + }, + ] + }, + { + 'bg': '', + 'name': 'train2', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'train/loco.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.238, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84868, + 'initY': 0.14357, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.237, + 'x': 0.16136986301369866, + 'y': 0.5003377010125074 + }, + { + 'img': 'train/coal.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.144, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.40198, + 'initY': 0.10248, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.221, + 'x': 0.6116378796902918, + 'y': 0.5491762954139369 + }, + { + 'img': 'train/wood.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.141, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.58434, + 'initY': 0.23488, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.235, + 'x': 0.8368749255509234, + 'y': 0.5493537820131029 + }, + { + 'img': 'train/passenger.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.213, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.15311, + 'initY': 0.15368, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.238, + 'x': 0.3913531864204886, + 'y': 0.5140148898153662 + }, + ] + }, + { + 'bg': '', + 'name': 'train3', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'train/loco.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.238, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84868, + 'initY': 0.14357, + 'moduloRotation': 360, + 'rotation': 45, + 'width': 0.237, + 'x': 0.19114949374627757, + 'y': 0.22279154258487197 + }, + { + 'img': 'train/coal.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.144, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.40198, + 'initY': 0.10248, + 'moduloRotation': 360, + 'rotation': 45, + 'width': 0.221, + 'x': 0.6336748064324003, + 'y': 0.7272584871947588 + }, + { + 'img': 'train/wood.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.141, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.58434, + 'initY': 0.23488, + 'moduloRotation': 360, + 'rotation': 45, + 'width': 0.235, + 'x': 0.4801149493746279, + 'y': 0.5791334127456819 + }, + { + 'img': 'train/passenger.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.213, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84311, + 'initY': 0.42368, + 'moduloRotation': 360, + 'rotation': 45, + 'width': 0.238, + 'x': 0.34251459201905915, + 'y': 0.3925139964264443 + }, + ] + }, + { + 'bg': '', + 'name': 'train4', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'train/loco.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.238, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84868, + 'initY': 0.14357, + 'moduloRotation': 360, + 'rotation': 315, + 'width': 0.237, + 'x': 0.20365693865396073, + 'y': 0.4241018463371054 + }, + { + 'img': 'train/coal.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.144, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.40198, + 'initY': 0.10248, + 'moduloRotation': 360, + 'rotation': 90, + 'width': 0.221, + 'x': 0.7575580702799286, + 'y': 0.6540005955926147 + }, + { + 'img': 'train/wood.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.141, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.58434, + 'initY': 0.23488, + 'moduloRotation': 360, + 'rotation': 45, + 'width': 0.235, + 'x': 0.6689178082191782, + 'y': 0.4540589636688504 + }, + { + 'img': 'train/passenger.svg', + 'flippable': 0, + 'flipping': false, + 'height': 0.213, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84311, + 'initY': 0.42368, + 'moduloRotation': 360, + 'rotation': 0, + 'width': 0.238, + 'x': 0.4550815961882075, + 'y': 0.3317635497319833 + }, + ] + }, + { + 'bg': '', + 'name': 'train5', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'train/loco.svg', + 'flippable': 1, + 'flipping': true, + 'height': 0.238, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.84868, + 'initY': 0.14357, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.237, + 'x': 0.8474925550923169, + 'y': 0.48902144133412745 + }, + { + 'img': 'train/coal.svg', + 'flippable': 1, + 'flipping': true, + 'height': 0.144, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.40198, + 'initY': 0.10248, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.221, + 'x': 0.619976176295414, + 'y': 0.5354776652769506 + }, + { + 'img': 'train/wood.svg', + 'flippable': 1, + 'flipping': true, + 'height': 0.141, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.58434, + 'initY': 0.2348, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.235, + 'x': 0.39375402025014905, + 'y': 0.5374419297200713 + }, + { + 'img': 'train/passenger.svg', + 'flippable': 1, + 'flipping': true, + 'height': 0.213, + 'initFlipping': 0, + 'initRotation': 0, + 'initX': 0.15311, + 'initY': 0.15368, + 'moduloRotation': 0, + 'rotation': 0, + 'width': 0.238, + 'x': 0.16741036331149514, + 'y': 0.5015074449076831 + }, + ] + }, + { + 'name': 'Level 1', + 'bg': 'truck/traffic_bg.svg', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'truck/engine.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.860, + 'y': 0.573, + 'width': 0.233, + 'height': 0.109, + 'rotation': 0, + 'moduloRotation': 0, + 'initX': 0.866, + 'initY': 0.754, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/cabin.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.847, + 'y': 0.435, + 'width': 0.207, + 'height': 0.178, + 'rotation': 0, + 'moduloRotation': 0, + 'initX': 0.153, + 'initY': 0.789, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/container.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.358, + 'y': 0.489, + 'width': 0.676, + 'height': 0.271, + 'rotation': 0, + 'moduloRotation': 0, + 'initX': 0.338, + 'initY': 0.135, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/back_road.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.181, + 'y': 0.633, + 'width': 0.198, + 'height': 0.092, + 'rotation': 0, + 'moduloRotation': 0, + 'initX': 0.799, + 'initY': 0.146, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/front_road.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.766, + 'y': 0.617, + 'width': 0.403, + 'height': 0.121, + 'rotation': 0, + 'moduloRotation': 0, + 'initX': 0.501, + 'initY': 0.760, + 'initRotation': 0, + 'initFlipping': 0 + } + ] + }, + { + 'name': 'Level 2', + 'bg': 'truck/traffic_bg.svg', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'truck/engine.svg', + 'flippable': 1, + 'flipping': 0, + 'x': 0.860, + 'y': 0.573, + 'width': 0.233, + 'height': 0.109, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.866, + 'initY': 0.754, + 'initRotation': 0, + 'initFlipping': 1 + }, + { + 'img': 'truck/cabin.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.847, + 'y': 0.435, + 'width': 0.207, + 'height': 0.178, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.153, + 'initY': 0.789, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/container.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.358, + 'y': 0.489, + 'width': 0.676, + 'height': 0.271, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.338, + 'initY': 0.135, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/back_road.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.181, + 'y': 0.633, + 'width': 0.198, + 'height': 0.092, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.799, + 'initY': 0.146, + 'initRotation': 270, + 'initFlipping': 0 + }, + { + 'img': 'truck/front_road.svg', + 'flippable': 1, + 'flipping': 0, + 'x': 0.766, + 'y': 0.617, + 'width': 0.403, + 'height': 0.121, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.501, + 'initY': 0.760, + 'initRotation': 90, + 'initFlipping': 1 + } + ] + }, + { + 'name': 'Level 3', + 'bg': 'truck/traffic_bg.svg', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'truck/engine.svg', + 'flippable': 1, + 'flipping': 0, + 'x': 0.860, + 'y': 0.573, + 'width': 0.233, + 'height': 0.109, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.866, + 'initY': 0.754, + 'initRotation': 0, + 'initFlipping': 1 + }, + { + 'img': 'truck/cabin.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.847, + 'y': 0.435, + 'width': 0.207, + 'height': 0.178, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.153, + 'initY': 0.789, + 'initRotation': 45, + 'initFlipping': 0 + }, + { + 'img': 'truck/container.svg', + 'flippable': 1, + 'flipping': 0, + 'x': 0.358, + 'y': 0.489, + 'width': 0.676, + 'height': 0.271, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.338, + 'initY': 0.135, + 'initRotation': 0, + 'initFlipping': 1 + }, + { + 'img': 'truck/back_road.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.181, + 'y': 0.633, + 'width': 0.198, + 'height': 0.092, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.799, + 'initY': 0.146, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'truck/front_road.svg', + 'flippable': 1, + 'flipping': 0, + 'x': 0.766, + 'y': 0.617, + 'width': 0.403, + 'height': 0.121, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.501, + 'initY': 0.760, + 'initRotation': 270, + 'initFlipping': 0 + } + ] + }, + { + 'name': 'Level 4', + 'bg': 'car1/car.svg', + 'colorMask': '#999', + 'pieces': [ + { + 'img': 'car1/windshield.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.492, + 'y': 0.309, + 'width': 0.563, + 'height': 0.227, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.301, + 'initY': 0.133, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'car1/tire_right.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.226, + 'y': 0.720, + 'width': 0.126, + 'height': 0.147, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.863, + 'initY': 0.123, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'car1/tire_right.svg', + 'flippable': 0, + 'flipping': 1, + 'x': 0.782, + 'y': 0.720, + 'width': 0.126, + 'height': 0.147, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.663, + 'initY': 0.123, + 'initRotation': 0, + 'initFlipping': 1 + }, + { + 'img': 'car1/bumper.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.502, + 'y': 0.656, + 'width': 0.710, + 'height': 0.184, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.405, + 'initY': 0.892, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'car1/grille.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.505, + 'y': 0.600, + 'width': 0.365, + 'height': 0.051, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.382, + 'initY': 0.825, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'car1/headlights.svg', + 'flippable': 0, + 'flipping': 0, + 'x': 0.782, + 'y': 0.506, + 'width': 0.134, + 'height': 0.125, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.90, + 'initY': 0.85, + 'initRotation': 0, + 'initFlipping': 0 + }, + { + 'img': 'car1/headlights.svg', + 'flippable': 0, + 'flipping': 1, + 'x': 0.222, + 'y': 0.506, + 'width': 0.134, + 'height': 0.125, + 'rotation': 0, + 'moduloRotation': 360, + 'initX': 0.90, + 'initY': 0.30, + 'initRotation': 0, + 'initFlipping': 1 + } + ] + } + ] diff --git a/src/activities/tangram/resource/README b/src/activities/baby_tangram/resource/README similarity index 84% copy from src/activities/tangram/resource/README copy to src/activities/baby_tangram/resource/README index 3f0ea84cb..04d080ef7 100644 --- a/src/activities/tangram/resource/README +++ b/src/activities/baby_tangram/resource/README @@ -1,26 +1,21 @@ Copyright: 2000, 2008 Bruno Coudoin and others License: Public domain Files: car1/bumper.svg car1/car.svg car1/grille.svg car1/headlights.svg car1/tire_right.svg car1/windshield.svg tangram/background.svg tangram/flip.svg -tangram/p0.svg -tangram/p1.svg -tangram/p2.svg -tangram/p3.svg -tangram/p4.svg train/coal.svg train/loco.svg train/passenger.svg train/wood.svg truck/back_road.svg truck/cabin.svg truck/container.svg truck/engine.svg truck/front_road.svg truck/traffic_bg.svg diff --git a/src/activities/tangram/resource/car1/bumper.svg b/src/activities/baby_tangram/resource/car1/bumper.svg similarity index 100% rename from src/activities/tangram/resource/car1/bumper.svg rename to src/activities/baby_tangram/resource/car1/bumper.svg diff --git a/src/activities/tangram/resource/car1/car.svg b/src/activities/baby_tangram/resource/car1/car.svg similarity index 100% rename from src/activities/tangram/resource/car1/car.svg rename to src/activities/baby_tangram/resource/car1/car.svg diff --git a/src/activities/tangram/resource/car1/grille.svg b/src/activities/baby_tangram/resource/car1/grille.svg similarity index 100% rename from src/activities/tangram/resource/car1/grille.svg rename to src/activities/baby_tangram/resource/car1/grille.svg diff --git a/src/activities/tangram/resource/car1/headlights.svg b/src/activities/baby_tangram/resource/car1/headlights.svg similarity index 100% rename from src/activities/tangram/resource/car1/headlights.svg rename to src/activities/baby_tangram/resource/car1/headlights.svg diff --git a/src/activities/tangram/resource/car1/tire_right.svg b/src/activities/baby_tangram/resource/car1/tire_right.svg similarity index 100% rename from src/activities/tangram/resource/car1/tire_right.svg rename to src/activities/baby_tangram/resource/car1/tire_right.svg diff --git a/src/activities/tangram/resource/car1/windshield.svg b/src/activities/baby_tangram/resource/car1/windshield.svg similarity index 100% rename from src/activities/tangram/resource/car1/windshield.svg rename to src/activities/baby_tangram/resource/car1/windshield.svg diff --git a/src/activities/tangram/resource/m-car1/bumper.svg b/src/activities/baby_tangram/resource/m-car1/bumper.svg similarity index 100% rename from src/activities/tangram/resource/m-car1/bumper.svg rename to src/activities/baby_tangram/resource/m-car1/bumper.svg diff --git a/src/activities/tangram/resource/m-car1/grille.svg b/src/activities/baby_tangram/resource/m-car1/grille.svg similarity index 100% rename from src/activities/tangram/resource/m-car1/grille.svg rename to src/activities/baby_tangram/resource/m-car1/grille.svg diff --git a/src/activities/tangram/resource/m-car1/headlights.svg b/src/activities/baby_tangram/resource/m-car1/headlights.svg similarity index 100% rename from src/activities/tangram/resource/m-car1/headlights.svg rename to src/activities/baby_tangram/resource/m-car1/headlights.svg diff --git a/src/activities/tangram/resource/m-car1/tire_right.svg b/src/activities/baby_tangram/resource/m-car1/tire_right.svg similarity index 100% rename from src/activities/tangram/resource/m-car1/tire_right.svg rename to src/activities/baby_tangram/resource/m-car1/tire_right.svg diff --git a/src/activities/tangram/resource/m-car1/windshield.svg b/src/activities/baby_tangram/resource/m-car1/windshield.svg similarity index 100% rename from src/activities/tangram/resource/m-car1/windshield.svg rename to src/activities/baby_tangram/resource/m-car1/windshield.svg diff --git a/src/activities/tangram/resource/m-train/coal.svg b/src/activities/baby_tangram/resource/m-train/coal.svg similarity index 100% rename from src/activities/tangram/resource/m-train/coal.svg rename to src/activities/baby_tangram/resource/m-train/coal.svg diff --git a/src/activities/tangram/resource/m-train/loco.svg b/src/activities/baby_tangram/resource/m-train/loco.svg similarity index 100% rename from src/activities/tangram/resource/m-train/loco.svg rename to src/activities/baby_tangram/resource/m-train/loco.svg diff --git a/src/activities/tangram/resource/m-train/passenger.svg b/src/activities/baby_tangram/resource/m-train/passenger.svg similarity index 100% rename from src/activities/tangram/resource/m-train/passenger.svg rename to src/activities/baby_tangram/resource/m-train/passenger.svg diff --git a/src/activities/tangram/resource/m-train/wood.svg b/src/activities/baby_tangram/resource/m-train/wood.svg similarity index 100% rename from src/activities/tangram/resource/m-train/wood.svg rename to src/activities/baby_tangram/resource/m-train/wood.svg diff --git a/src/activities/tangram/resource/m-truck/back_road.svg b/src/activities/baby_tangram/resource/m-truck/back_road.svg similarity index 100% rename from src/activities/tangram/resource/m-truck/back_road.svg rename to src/activities/baby_tangram/resource/m-truck/back_road.svg diff --git a/src/activities/tangram/resource/m-truck/cabin.svg b/src/activities/baby_tangram/resource/m-truck/cabin.svg similarity index 100% rename from src/activities/tangram/resource/m-truck/cabin.svg rename to src/activities/baby_tangram/resource/m-truck/cabin.svg diff --git a/src/activities/tangram/resource/m-truck/container.svg b/src/activities/baby_tangram/resource/m-truck/container.svg similarity index 100% rename from src/activities/tangram/resource/m-truck/container.svg rename to src/activities/baby_tangram/resource/m-truck/container.svg diff --git a/src/activities/tangram/resource/m-truck/engine.svg b/src/activities/baby_tangram/resource/m-truck/engine.svg similarity index 100% rename from src/activities/tangram/resource/m-truck/engine.svg rename to src/activities/baby_tangram/resource/m-truck/engine.svg diff --git a/src/activities/tangram/resource/m-truck/front_road.svg b/src/activities/baby_tangram/resource/m-truck/front_road.svg similarity index 100% rename from src/activities/tangram/resource/m-truck/front_road.svg rename to src/activities/baby_tangram/resource/m-truck/front_road.svg diff --git a/src/activities/baby_tangram/resource/tangram/background.svg b/src/activities/baby_tangram/resource/tangram/background.svg new file mode 100644 index 000000000..41b476e53 --- /dev/null +++ b/src/activities/baby_tangram/resource/tangram/background.svg @@ -0,0 +1,69 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/activities/baby_tangram/resource/tangram/flip.svg b/src/activities/baby_tangram/resource/tangram/flip.svg new file mode 100644 index 000000000..50bccdc2e --- /dev/null +++ b/src/activities/baby_tangram/resource/tangram/flip.svg @@ -0,0 +1,86 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/activities/tangram/resource/train/README b/src/activities/baby_tangram/resource/train/README similarity index 100% rename from src/activities/tangram/resource/train/README rename to src/activities/baby_tangram/resource/train/README diff --git a/src/activities/tangram/resource/train/coal.svg b/src/activities/baby_tangram/resource/train/coal.svg similarity index 100% rename from src/activities/tangram/resource/train/coal.svg rename to src/activities/baby_tangram/resource/train/coal.svg diff --git a/src/activities/tangram/resource/train/loco.svg b/src/activities/baby_tangram/resource/train/loco.svg similarity index 100% rename from src/activities/tangram/resource/train/loco.svg rename to src/activities/baby_tangram/resource/train/loco.svg diff --git a/src/activities/tangram/resource/train/passenger.svg b/src/activities/baby_tangram/resource/train/passenger.svg similarity index 100% rename from src/activities/tangram/resource/train/passenger.svg rename to src/activities/baby_tangram/resource/train/passenger.svg diff --git a/src/activities/tangram/resource/train/wood.svg b/src/activities/baby_tangram/resource/train/wood.svg similarity index 100% rename from src/activities/tangram/resource/train/wood.svg rename to src/activities/baby_tangram/resource/train/wood.svg diff --git a/src/activities/tangram/resource/truck/back_road.svg b/src/activities/baby_tangram/resource/truck/back_road.svg similarity index 100% rename from src/activities/tangram/resource/truck/back_road.svg rename to src/activities/baby_tangram/resource/truck/back_road.svg diff --git a/src/activities/tangram/resource/truck/cabin.svg b/src/activities/baby_tangram/resource/truck/cabin.svg similarity index 100% rename from src/activities/tangram/resource/truck/cabin.svg rename to src/activities/baby_tangram/resource/truck/cabin.svg diff --git a/src/activities/tangram/resource/truck/container.svg b/src/activities/baby_tangram/resource/truck/container.svg similarity index 100% rename from src/activities/tangram/resource/truck/container.svg rename to src/activities/baby_tangram/resource/truck/container.svg diff --git a/src/activities/tangram/resource/truck/engine.svg b/src/activities/baby_tangram/resource/truck/engine.svg similarity index 100% rename from src/activities/tangram/resource/truck/engine.svg rename to src/activities/baby_tangram/resource/truck/engine.svg diff --git a/src/activities/tangram/resource/truck/front_road.svg b/src/activities/baby_tangram/resource/truck/front_road.svg similarity index 100% rename from src/activities/tangram/resource/truck/front_road.svg rename to src/activities/baby_tangram/resource/truck/front_road.svg diff --git a/src/activities/tangram/resource/truck/traffic_bg.svg b/src/activities/baby_tangram/resource/truck/traffic_bg.svg similarity index 100% rename from src/activities/tangram/resource/truck/traffic_bg.svg rename to src/activities/baby_tangram/resource/truck/traffic_bg.svg diff --git a/src/activities/tangram/ActivityInfo.qml b/src/activities/tangram/ActivityInfo.qml index 7d44d7b89..e016cb6c9 100644 --- a/src/activities/tangram/ActivityInfo.qml +++ b/src/activities/tangram/ActivityInfo.qml @@ -1,47 +1,47 @@ /* GCompris - ActivityInfo.qml * * Copyright (C) 2016 Bruno Coudoin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import GCompris 1.0 ActivityInfo { name: "tangram/Tangram.qml" difficulty: 3 icon: "tangram/tangram.svg" author: "Bruno Coudoin <bruno.coudoin@gcompris.net>" demo: false //: Activity title title: qsTr("The tangram puzzle game") //: Help title description: qsTr("The objective is to form a given shape") // intro: "Click on each object to obtain the same figure. You can change their orientation by clicking on the arrows." //: Help goal goal: qsTr("From Wikipedia, the free encyclopedia. Tangram (Chinese: literally 'seven boards of cunning') is a Chinese puzzle. While the tangram is often said to be ancient, its existence has only been verified as far back as 1800. It consists of 7 pieces, called tans, which fit together to form a square; Using the square side as 1 unit, the 7 pieces contains: 5 right isosceles triangles, including: - 2 small size ones (legs of 1) - 1 medium size (legs of square root of 2) - 2 large size (legs of 2) 1 square (side of 1) and 1 parallelogram (sides of 1 and square root of 2) ") //: Help prerequisite prerequisite: qsTr("Mouse-manipulation") //: Help manual - manual: qsTr("Select the tangram to form. Move a piece by dragging it. The symmetrical button appears on items that supports it. Click on the rotation button or drag around it to show the rotation you want. At first levels, simpler objects are used to introduce the tangram concept.") + manual: qsTr("Select the tangram to form. Move a piece by dragging it. The symmetrical button appears on items that supports it. Click on the rotation button or drag around it to show the rotation you want. Check baby tangram activity for an introduction to tangram.") credit: "" section: "puzzle" createdInVersion: 6000 } diff --git a/src/activities/tangram/Tangram.qml b/src/activities/tangram/Tangram.qml index 5db23154b..68abca3b5 100644 --- a/src/activities/tangram/Tangram.qml +++ b/src/activities/tangram/Tangram.qml @@ -1,366 +1,369 @@ /* GCompris - tangram.qml * * Copyright (C) 2015 Bruno Coudoin * * Authors: * Yves Combe / Philippe Banwarth (GTK+ version) * Bruno Coudoin (Qt Quick port) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import QtQuick 2.6 import GCompris 1.0 import "../../core" import "tangram.js" as Activity import "dataset.js" as Dataset import "." ActivityBase { id: activity onStart: focus = true onStop: {} + property var dataset: Dataset + property string resourceUrl: "qrc:/gcompris/src/activities/tangram/resource/" + Keys.onPressed: Activity.processPressedKey(event) pageComponent: Item { id: background anchors.fill: parent property bool horizontalLayout: background.width >= background.height property int playX: (activity.width - playWidth) / 2 property int playY: (activity.height - playHeight) / 2 property int playWidth: horizontalLayout ? activity.height : activity.width property int playHeight: playWidth property double playRatio: playWidth / 1000 signal start signal stop /* In order to accept any screen ratio the play area is always a 1000x1000 * square and is centered in a big background image that is 2000x2000 */ Image { id: bg - source: Activity.url + "tangram/background.svg" + source: activity.resourceUrl + "tangram/background.svg" sourceSize.width: 2000 * ApplicationInfo.ratio sourceSize.height: 2000 * ApplicationInfo.ratio width: 2000 * background.playRatio height: width anchors.centerIn: parent } Rectangle { width: background.playWidth height: background.playHeight anchors.centerIn: parent border.width: 2 border.color: "black" color: "transparent" visible: items.editionMode /* debug to see the play area */ } Component.onCompleted: { activity.start.connect(start) activity.stop.connect(stop) } // Add here the QML items you need to access in javascript QtObject { id: items property Item main: activity.main property alias background: background property alias bar: bar property alias bonus: bonus property alias modelListModel: modelList.model property alias userList: userList property alias userListModel: userList.model property Item selectedItem - property var currentTans: Dataset.dataset[bar.level - 1] - property int numberOfLevel: Dataset.dataset.length + property var currentTans: dataset.dataset[bar.level - 1] + property int numberOfLevel: dataset.dataset.length property bool editionMode: false } onStart: { Activity.start(items) } onStop: { Activity.stop() } Image { id: bgData - source: items.currentTans.bg ? Activity.url + items.currentTans.bg : '' + source: items.currentTans.bg ? activity.resourceUrl + items.currentTans.bg : '' sourceSize.width: 1000 * background.playRatio sourceSize.height: 1000 * background.playRatio width: 1000 * background.playRatio height: width anchors.centerIn: parent } RotateMouseArea {} DropArea { id: dropableArea anchors.left: background.left anchors.bottom: background.bottom width: background.width height: background.height } Repeater { id: modelList model: items.currentTans.pieces Item { anchors.fill: background Image { id: tansModel x: background.playX + background.playWidth * modelData.x - width / 2 y: background.playY + background.playHeight * modelData.y - height / 2 - source: Activity.url + "m-" + modelData.img + source: activity.resourceUrl + "m-" + modelData.img sourceSize.width: modelData.width * background.playWidth sourceSize.height: modelData.height * background.playWidth z: index rotation: modelData.rotation mirror: modelData.flipping ? true : false visible: true } } } Repeater { id: userList model: items.currentTans.pieces Item { id: tansItem x: background.playX + background.playWidth * xRatio - tans.width / 2 y: background.playY + background.playHeight * yRatio - tans.height / 2 width: tans.width height: tans.height z: 100 + index property real xRatio: !items.editionMode ? modelData.initX : modelData.x property real yRatio: !items.editionMode ? modelData.initY : modelData.y property bool selected: false property int animDuration: 48 property bool flippable: modelData.flippable property bool rotable: modelData.moduloRotation != 0 property alias tans: tans rotation: !items.editionMode ? modelData.initRotation : modelData.rotation property alias mirror: tans.mirror function restoreZindex() { z = 100 + index } onSelectedChanged: { if(!selected) restoreZindex() } function positionToTans() { return [ (x + width / 2 - background.playX) / background.playWidth, (y + height / 2 - background.playY) / background.playHeight ] } // After a drag the [x, y] positions are addressed directly breaking our // binding. Call me to reset the binding. function restoreBindings() { x = Qt.binding(function() { return background.playX + background.playWidth * xRatio - width / 2}) y = Qt.binding(function() { return background.playY + background.playHeight * yRatio - height / 2 }) } Image { id: tans mirror: !items.editionMode ? modelData.initFlipping : modelData.flipping - source: Activity.url + modelData.img + source: activity.resourceUrl + modelData.img sourceSize.width: modelData.width * background.playWidth sourceSize.height: modelData.height * background.playWidth } // Manage to return a base rotation as it was provided in the model function rotationToTans() { // moduloRotation == 0 to disable rotation, assume 360 in this case var mod = modelData.moduloRotation ? modelData.moduloRotation : 360 if(modelData.flipable || modelData.flipping || !mirror) return rotation >= 0 ? rotation % mod : (360 + rotation) % mod else // It flipping but model is not flipping sensitive we have to rotate accordingly return rotation >= 0 ? (rotation - (mod - 90)) % mod : (360 + rotation - (mod - 90)) % mod } // Return all the positions as we got it from a tans definition function asTans() { return { 'img': modelData.img, 'flipping': mirror, 'x': positionToTans()[0], 'y': positionToTans()[1], 'rotation': rotationToTans() } } function flipMe() { if(flippable) mirror = !mirror background.checkWin() } Drag.active: dragArea.drag.active Drag.hotSpot.x : width / 2 Drag.hotSpot.y : height / 2 MouseArea { id: dragArea anchors.fill: parent drag.target: parent onPressed: { tansItem.z = 200 if(items.selectedItem && items.selectedItem != tansItem) items.selectedItem.selected = false items.selectedItem = tansItem tansItem.selected = true background.checkWin() } onDoubleClicked: { flipMe() } onReleased: { parent.Drag.drop() var posTans = positionToTans() var closest = Activity.getClosest(posTans) if(closest && !items.editionMode) { tansItem.xRatio = closest[0] tansItem.yRatio = closest[1] } else { tansItem.xRatio = posTans[0] tansItem.yRatio = posTans[1] } tansItem.restoreBindings() background.checkWin() } } Image { id: rotateButton source: "qrc:/gcompris/src/core/resource/bar_reload.svg" x: - width y: parent.height / 2 - height / 2 visible: tansItem.selected && tansItem.rotable sourceSize.width: 40 * ApplicationInfo.ratio z: tansItem.z + 1 RotateMouseArea {} } Image { id: flip source: "qrc:/gcompris/src/activities/tangram/resource/tangram/flip.svg" x: parent.width / 2 - width / 2 y: parent.height - height / 2 visible: tansItem.selected && tansItem.flippable sourceSize.width: 40 * ApplicationInfo.ratio z: tansItem.z + 1 MouseArea { anchors.fill: parent onClicked: tansItem.flipMe() } } Behavior on x { PropertyAnimation { duration: animDuration easing.type: Easing.InOutQuad } } Behavior on y { PropertyAnimation { duration: animDuration easing.type: Easing.InOutQuad } } } // Return the tans model of all the user tans function asTans() { var tans = [] for(var i = 0; i < userList.count; i++) { tans.push(userList.itemAt(i).asTans()) } return tans } } // We use a timer here because we have to check only once the potential // animation are over Timer { id: checkWinTimer interval: 200 property bool alreadyStarted: false onTriggered: { if(Activity.check() && !alreadyStarted) { alreadyStarted = true if(!items.editionMode) bonus.good('flower') } } } function checkWin() { checkWinTimer.start() } GCText { anchors.top: parent.top anchors.left: parent.left text: items.currentTans.name visible: items.editionMode } DialogHelp { id: dialogHelp onClose: home() } File { id: file } Bar { id: bar content: BarEnumContent { value: help | home | level | (items.editionMode ? repeat : 0) } onHelpClicked: { displayDialog(dialogHelp) } onPreviousLevelClicked: Activity.previousLevel() onNextLevelClicked: Activity.nextLevel() onHomeClicked: activity.home() onRepeatClicked: file.write(Activity.toDataset(), "/tmp/" + items.currentTans.name) } Bonus { id: bonus interval: 1600 Component.onCompleted: win.connect(nextLevel) function nextLevel() { checkWinTimer.alreadyStarted = false Activity.nextLevel() } } } } diff --git a/src/activities/tangram/dataset.js b/src/activities/tangram/dataset.js index 117a520d1..8a9eafa74 100644 --- a/src/activities/tangram/dataset.js +++ b/src/activities/tangram/dataset.js @@ -1,5537 +1,4844 @@ .pragma library /* dataset format - for each level we have: - bg: an optional background image - colorMask: the color of the shadowed target items - a list of pieces that each holds: - img: piece file name - flippable: is the piece flippable - flipping: target flipping state - x: target x position - y: target y position - width: item width - height: item height - rotation: item target rotation - moduloRotation: modulo rotation - initX: initial x position - initY: innitial y position - initRotation: initial rotation - initFlipping: initial flipping */ /* Warning: there are more levels in toBeAligned.js there are a lot of levels the needs to be manually aligned in editor mode and added to this file */ var dataset = [ - { - 'bg': '', - 'name': 'train1', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'train/loco.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.238, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84868, - 'initY': 0.14357, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.237, - 'x': 0.16136986301369866, - 'y': 0.5003377010125074 - }, - { - 'img': 'train/coal.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.144, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.40198, - 'initY': 0.10248, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.221, - 'x': 0.38829064919595, - 'y': 0.5456027397260274 - }, - { - 'img': 'train/wood.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.141, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.58434, - 'initY': 0.23488, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.235, - 'x': 0.6111453245979751, - 'y': 0.5469714115544966 - }, - { - 'img': 'train/passenger.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.213, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.15311, - 'initY': 0.15368, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.238, - 'x': 0.8362608695652176, - 'y': 0.5122281119714115 - }, - ] - }, - { - 'bg': '', - 'name': 'train2', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'train/loco.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.238, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84868, - 'initY': 0.14357, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.237, - 'x': 0.16136986301369866, - 'y': 0.5003377010125074 - }, - { - 'img': 'train/coal.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.144, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.40198, - 'initY': 0.10248, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.221, - 'x': 0.6116378796902918, - 'y': 0.5491762954139369 - }, - { - 'img': 'train/wood.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.141, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.58434, - 'initY': 0.23488, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.235, - 'x': 0.8368749255509234, - 'y': 0.5493537820131029 - }, - { - 'img': 'train/passenger.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.213, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.15311, - 'initY': 0.15368, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.238, - 'x': 0.3913531864204886, - 'y': 0.5140148898153662 - }, - ] - }, - { - 'bg': '', - 'name': 'train3', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'train/loco.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.238, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84868, - 'initY': 0.14357, - 'moduloRotation': 360, - 'rotation': 45, - 'width': 0.237, - 'x': 0.19114949374627757, - 'y': 0.22279154258487197 - }, - { - 'img': 'train/coal.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.144, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.40198, - 'initY': 0.10248, - 'moduloRotation': 360, - 'rotation': 45, - 'width': 0.221, - 'x': 0.6336748064324003, - 'y': 0.7272584871947588 - }, - { - 'img': 'train/wood.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.141, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.58434, - 'initY': 0.23488, - 'moduloRotation': 360, - 'rotation': 45, - 'width': 0.235, - 'x': 0.4801149493746279, - 'y': 0.5791334127456819 - }, - { - 'img': 'train/passenger.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.213, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84311, - 'initY': 0.42368, - 'moduloRotation': 360, - 'rotation': 45, - 'width': 0.238, - 'x': 0.34251459201905915, - 'y': 0.3925139964264443 - }, - ] - }, - { - 'bg': '', - 'name': 'train4', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'train/loco.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.238, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84868, - 'initY': 0.14357, - 'moduloRotation': 360, - 'rotation': 315, - 'width': 0.237, - 'x': 0.20365693865396073, - 'y': 0.4241018463371054 - }, - { - 'img': 'train/coal.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.144, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.40198, - 'initY': 0.10248, - 'moduloRotation': 360, - 'rotation': 90, - 'width': 0.221, - 'x': 0.7575580702799286, - 'y': 0.6540005955926147 - }, - { - 'img': 'train/wood.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.141, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.58434, - 'initY': 0.23488, - 'moduloRotation': 360, - 'rotation': 45, - 'width': 0.235, - 'x': 0.6689178082191782, - 'y': 0.4540589636688504 - }, - { - 'img': 'train/passenger.svg', - 'flippable': 0, - 'flipping': false, - 'height': 0.213, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84311, - 'initY': 0.42368, - 'moduloRotation': 360, - 'rotation': 0, - 'width': 0.238, - 'x': 0.4550815961882075, - 'y': 0.3317635497319833 - }, - ] - }, - { - 'bg': '', - 'name': 'train5', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'train/loco.svg', - 'flippable': 1, - 'flipping': true, - 'height': 0.238, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.84868, - 'initY': 0.14357, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.237, - 'x': 0.8474925550923169, - 'y': 0.48902144133412745 - }, - { - 'img': 'train/coal.svg', - 'flippable': 1, - 'flipping': true, - 'height': 0.144, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.40198, - 'initY': 0.10248, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.221, - 'x': 0.619976176295414, - 'y': 0.5354776652769506 - }, - { - 'img': 'train/wood.svg', - 'flippable': 1, - 'flipping': true, - 'height': 0.141, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.58434, - 'initY': 0.2348, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.235, - 'x': 0.39375402025014905, - 'y': 0.5374419297200713 - }, - { - 'img': 'train/passenger.svg', - 'flippable': 1, - 'flipping': true, - 'height': 0.213, - 'initFlipping': 0, - 'initRotation': 0, - 'initX': 0.15311, - 'initY': 0.15368, - 'moduloRotation': 0, - 'rotation': 0, - 'width': 0.238, - 'x': 0.16741036331149514, - 'y': 0.5015074449076831 - }, - ] - }, - { - 'name': 'Level 1', - 'bg': 'truck/traffic_bg.svg', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'truck/engine.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.860, - 'y': 0.573, - 'width': 0.233, - 'height': 0.109, - 'rotation': 0, - 'moduloRotation': 0, - 'initX': 0.866, - 'initY': 0.754, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/cabin.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.847, - 'y': 0.435, - 'width': 0.207, - 'height': 0.178, - 'rotation': 0, - 'moduloRotation': 0, - 'initX': 0.153, - 'initY': 0.789, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/container.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.358, - 'y': 0.489, - 'width': 0.676, - 'height': 0.271, - 'rotation': 0, - 'moduloRotation': 0, - 'initX': 0.338, - 'initY': 0.135, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/back_road.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.181, - 'y': 0.633, - 'width': 0.198, - 'height': 0.092, - 'rotation': 0, - 'moduloRotation': 0, - 'initX': 0.799, - 'initY': 0.146, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/front_road.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.766, - 'y': 0.617, - 'width': 0.403, - 'height': 0.121, - 'rotation': 0, - 'moduloRotation': 0, - 'initX': 0.501, - 'initY': 0.760, - 'initRotation': 0, - 'initFlipping': 0 - } - ] - }, - { - 'name': 'Level 2', - 'bg': 'truck/traffic_bg.svg', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'truck/engine.svg', - 'flippable': 1, - 'flipping': 0, - 'x': 0.860, - 'y': 0.573, - 'width': 0.233, - 'height': 0.109, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.866, - 'initY': 0.754, - 'initRotation': 0, - 'initFlipping': 1 - }, - { - 'img': 'truck/cabin.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.847, - 'y': 0.435, - 'width': 0.207, - 'height': 0.178, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.153, - 'initY': 0.789, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/container.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.358, - 'y': 0.489, - 'width': 0.676, - 'height': 0.271, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.338, - 'initY': 0.135, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/back_road.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.181, - 'y': 0.633, - 'width': 0.198, - 'height': 0.092, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.799, - 'initY': 0.146, - 'initRotation': 270, - 'initFlipping': 0 - }, - { - 'img': 'truck/front_road.svg', - 'flippable': 1, - 'flipping': 0, - 'x': 0.766, - 'y': 0.617, - 'width': 0.403, - 'height': 0.121, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.501, - 'initY': 0.760, - 'initRotation': 90, - 'initFlipping': 1 - } - ] - }, - { - 'name': 'Level 3', - 'bg': 'truck/traffic_bg.svg', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'truck/engine.svg', - 'flippable': 1, - 'flipping': 0, - 'x': 0.860, - 'y': 0.573, - 'width': 0.233, - 'height': 0.109, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.866, - 'initY': 0.754, - 'initRotation': 0, - 'initFlipping': 1 - }, - { - 'img': 'truck/cabin.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.847, - 'y': 0.435, - 'width': 0.207, - 'height': 0.178, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.153, - 'initY': 0.789, - 'initRotation': 45, - 'initFlipping': 0 - }, - { - 'img': 'truck/container.svg', - 'flippable': 1, - 'flipping': 0, - 'x': 0.358, - 'y': 0.489, - 'width': 0.676, - 'height': 0.271, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.338, - 'initY': 0.135, - 'initRotation': 0, - 'initFlipping': 1 - }, - { - 'img': 'truck/back_road.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.181, - 'y': 0.633, - 'width': 0.198, - 'height': 0.092, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.799, - 'initY': 0.146, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'truck/front_road.svg', - 'flippable': 1, - 'flipping': 0, - 'x': 0.766, - 'y': 0.617, - 'width': 0.403, - 'height': 0.121, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.501, - 'initY': 0.760, - 'initRotation': 270, - 'initFlipping': 0 - } - ] - }, - { - 'name': 'Level 4', - 'bg': 'car1/car.svg', - 'colorMask': '#999', - 'pieces': [ - { - 'img': 'car1/windshield.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.492, - 'y': 0.309, - 'width': 0.563, - 'height': 0.227, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.301, - 'initY': 0.133, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'car1/tire_right.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.226, - 'y': 0.720, - 'width': 0.126, - 'height': 0.147, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.863, - 'initY': 0.123, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'car1/tire_right.svg', - 'flippable': 0, - 'flipping': 1, - 'x': 0.782, - 'y': 0.720, - 'width': 0.126, - 'height': 0.147, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.663, - 'initY': 0.123, - 'initRotation': 0, - 'initFlipping': 1 - }, - { - 'img': 'car1/bumper.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.502, - 'y': 0.656, - 'width': 0.710, - 'height': 0.184, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.405, - 'initY': 0.892, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'car1/grille.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.505, - 'y': 0.600, - 'width': 0.365, - 'height': 0.051, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.382, - 'initY': 0.825, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'car1/headlights.svg', - 'flippable': 0, - 'flipping': 0, - 'x': 0.782, - 'y': 0.506, - 'width': 0.134, - 'height': 0.125, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.90, - 'initY': 0.85, - 'initRotation': 0, - 'initFlipping': 0 - }, - { - 'img': 'car1/headlights.svg', - 'flippable': 0, - 'flipping': 1, - 'x': 0.222, - 'y': 0.506, - 'width': 0.134, - 'height': 0.125, - 'rotation': 0, - 'moduloRotation': 360, - 'initX': 0.90, - 'initY': 0.30, - 'initRotation': 0, - 'initFlipping': 1 - } - ] - }, { 'bg': '', 'name': 'Level 5 Real Tangram', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.22, 'initY': 0.12, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.501, 'y': 0.349 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.216, 'initY': 0.8, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.715, 'y': 0.349 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.45, 'initY': 0.11, 'moduloRotation': 360, 'rotation': 90, 'width': 0.304, 'x': 0.6649999999999999, 'y': 0.6066176295413936 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.7, 'initY': 0.11, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5145955926146515, 'y': 0.5308088147706969 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 1, 'initRotation': -90, 'initX': 0.94, 'initY': 0.17, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.7515955926146516, 'y': 0.5094044073853484 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.6, 'initY': 0.85, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.18189398451459207, 'y': 0.40211435378201305 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.8, 'initY': 0.85, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.4021441334127456, 'y': 0.49324002382370435 }, ] }, { 'bg': '', 'name': 'Imported level 0', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 270, 'width': 0.429, 'x': 0.42724419297200705, 'y': 0.32462656343061347 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.15611554496724236, 'y': 0.7651739130434781 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 270, 'width': 0.304, 'x': 0.7600893388921978, 'y': 0.689886837403216 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.45834961286480047, 'y': 0.614650982727814 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.2307069684335914, 'y': 0.4632888624181061 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.3449309112567005, 'y': 0.5766063132817155 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.5708940134670106, 'y': 0.6522900536033351 }, ] }, { 'bg': '', 'name': 'Imported level 6', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.4596351325618991, 'y': 0.8658572572960096 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.6113977554666894, 'y': 0.8658572572960096 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.5352187191355399, 'y': 0.5652531562154344 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.536409904364843, 'y': 0.3820744988513571 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.5898954388666723, 'y': 0.2222133451033778 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 90, 'width': 0.215, 'x': 0.4827649630732577, 'y': 0.2745076943759041 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.48308363379562685, 'y': 0.16872766774440565 }, ] }, { 'bg': '', 'name': 'Imported level 8', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.5023814654981706, 'y': 0.8294092119458861 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.5044453080915509, 'y': 0.24822376218837738 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.5580901065259934, 'y': 0.4091168372330469 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5038929788139199, 'y': 0.6465217524887263 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.3443070895941462, 'y': 0.1959292700587084 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.5053594285714285, 'y': 0.5166836417084999 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.34410621968859023, 'y': 0.3554304328256615 }, ] }, { 'bg': '', 'name': 'Imported level 9', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.38185774993618643, 'y': 0.49611427193057084 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.8324945144218497, 'y': 0.49611427193057084 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.6068782644431209, 'y': 0.497305457159874 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.8264392276014633, 'y': 0.34552855824044926 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.15451412151791039, 'y': 0.49675131796137156 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.721980888624181, 'y': 0.2324369129583935 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.9487881809750702, 'y': 0.2324369129583935 }, ] }, { 'bg': '', 'name': 'Imported level 10', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.7177664225304178, 'y': 0.27648363456138847 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.2771954897472985, 'y': 0.7580107131796135 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.6425140732578916, 'y': 0.5773520909555007 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5179394382710797, 'y': 0.5193719275078705 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.4650494963839018, 'y': 0.35951077375989116 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.6050201477069685, 'y': 0.6904580122521908 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.4490578874329959, 'y': 0.1929193179613716 }, ] }, { 'bg': '', 'name': 'Imported level 11', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.343738391049094, 'y': 0.5413064867693356 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.47293088198757754, 'y': 0.7540161192886923 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.7088762542329619, 'y': 0.5729427676337956 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.34395914592019045, 'y': 0.3584161114609036 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.6111663492725262, 'y': 0.48809787415978895 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 90, 'width': 0.215, 'x': 0.7179782972007147, 'y': 0.30080569922572953 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.8913969315919342, 'y': 0.701881033948779 }, ] }, { 'bg': '', 'name': 'Imported level 12', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 157.5, 'width': 0.429, 'x': 0.48378610108057524, 'y': 0.5281706585552625 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 337.5, 'width': 0.429, 'x': 0.6813192857142856, 'y': 0.44696344975750885 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 337.5, 'width': 0.304, 'x': 0.412606268186846, 'y': 0.1967451961201396 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 67.5, 'width': 0.152, 'x': 0.3444424485663234, 'y': 0.38844723423806676 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.7404922390028078, 'y': 0.2614944703479963 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 22.5, 'width': 0.215, 'x': 0.7627900962307498, 'y': 0.569599191270314 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 337.5, 'width': 0.215, 'x': 0.40648443886667235, 'y': 0.6178664400578577 }, ] }, { 'bg': '', 'name': 'Imported level 13', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.2638586309027482, 'y': 0.6620276109078531 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.7175584431209051, 'y': 0.6625947943503786 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.5402684068748407, 'y': 0.5333664093422956 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5934897143707991, 'y': 0.2656298300859355 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.8691330121671061, 'y': 0.7381158602909895 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.4908645017442356, 'y': 0.6394517670382031 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.18407762971156308, 'y': 0.5332945214838765 }, ] }, { 'bg': '', 'name': 'Imported level 14', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.4457249624776654, 'y': 0.3811788395303327 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.7475202487875435, 'y': 0.6829741258402109 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.46828760954649884, 'y': 0.6164643159193397 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.596934535097422, 'y': 0.5317645532204544 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.7260177893303837, 'y': 0.4038724842167957 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.5594263335318641, 'y': 0.64485619850251 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.7789078740747042, 'y': 0.2973376010380328 }, ] }, { 'bg': '', 'name': 'Imported level 15', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.3699737826086957, 'y': 0.3832792040330129 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.671769068918574, 'y': 0.6838833051135882 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 225, 'width': 0.304, 'x': 0.2832376501318812, 'y': 0.5544194613290223 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5199639036841659, 'y': 0.532106549051306 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.5955616234152982, 'y': 0.38150670220369254 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.3316203964945121, 'y': 0.6455583281715307 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.19150319067472138, 'y': 0.5072279001956946 }, ] }, { 'bg': '', 'name': 'Imported level 16', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.2883534285714286, 'y': 0.18657742857142856 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.7144513553135369, 'y': 0.18657742857142856 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 225, 'width': 0.304, 'x': 0.6615862948183441, 'y': 0.5612425913383816 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5011571107802262, 'y': 0.4000471022717604 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.34090533293627173, 'y': 0.3467173444227006 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.5547518238747553, 'y': 0.50742457925636 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.5018052899685187, 'y': 0.5605088904109589 }, ] }, { 'bg': '', 'name': 'Imported level 17', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.36401785646217993, 'y': 0.4041249455458182 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.6664087353867099, 'y': 0.7059202318556965 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.5998989254658383, 'y': 0.4254964073853485 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5151991627669532, 'y': 0.5547390684080661 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.3867115011486428, 'y': 0.6838223226410278 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.6282908080490088, 'y': 0.5166352742278567 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.22625468335744067, 'y': 0.6839815865736408 }, ] }, { 'bg': '', 'name': 'Imported level 18', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.3689950665362035, 'y': 0.5227800890836382 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.5067583110695142, 'y': 0.7050162167957115 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 315, 'width': 0.304, 'x': 0.44099048966221394, 'y': 0.22960923985365442 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.4943167602314302, 'y': 0.3910979075129754 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.6541779139794095, 'y': 0.33642118778184305 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.25532196179698813, 'y': 0.3340623148983238 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 90, 'width': 0.215, 'x': 0.4971569993193226, 'y': 0.8557539934484812 }, ] }, { 'bg': '', 'name': 'Imported level 19', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.5092028486343912, 'y': 0.5608064499276779 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.32756231353696913, 'y': 0.5485370310559007 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 45, 'width': 0.304, 'x': 0.4552808425933804, 'y': 0.292942163022207 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5628892530417767, 'y': 0.7206607294307836 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.6694137118182593, 'y': 0.5074142660597296 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.6692648722879264, 'y': 0.7737099352505743 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.6159281773164298, 'y': 0.4006023181315411 }, ] }, { 'bg': '', 'name': 'Imported level 20', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.7089075290564113, 'y': 0.35880960946141416 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.494965105334808, 'y': 0.35885121543435716 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 90, 'width': 0.304, 'x': 0.6602167415128053, 'y': 0.6172947886497064 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5090070260359059, 'y': 0.5411014763039222 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.7450616349868119, 'y': 0.518989433931762 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.3953197881391984, 'y': 0.5035934175955075 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.17413425670041696, 'y': 0.4116645374797924 }, ] }, { 'bg': '', 'name': 'Imported level 21', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.2931057209223177, 'y': 0.5933563100484984 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.7197992402790777, 'y': 0.5933563100484984 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.5058568165574747, 'y': 0.7756208469326983 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5064524091721263, 'y': 0.3790953584616694 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.5599380865310986, 'y': 0.5383609195949971 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 90, 'width': 0.215, 'x': 0.4534032033523357, 'y': 0.4854709777078194 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.45312613860290984, 'y': 0.5918465969539692 }, ] }, { 'bg': '', 'name': 'Imported level 22', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.8013717475538161, 'y': 0.4862541065259934 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.13619710958904108, 'y': 0.48684969914064496 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.46521087288351914, 'y': 0.7456118002212202 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.4687844285714286, 'y': 0.5624331428571429 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.30773208959414605, 'y': 0.6159188202161151 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.574564455202927, 'y': 0.6160780841487281 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.6815356670637285, 'y': 0.6157595562835021 }, ] }, { 'bg': '', 'name': 'Imported level 23', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.29609742074363987, 'y': 0.49720990632179013 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.7503075980600699, 'y': 0.49720990632179013 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.507419305113588, 'y': 0.6484053457840553 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5235003057091806, 'y': 0.4661774651720127 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.9014889043648434, 'y': 0.4215980534331661 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.18301990861907608, 'y': 0.4590919789840891 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.10800350548796049, 'y': 0.38410412788224285 }, ] }, { 'bg': '', 'name': 'Imported level 24', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.4735713910490937, 'y': 0.5605857965625799 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.688705, 'y': 0.3472805714285715 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 225, 'width': 0.304, 'x': 0.3126783160044244, 'y': 0.40088390674721347 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.4735713910490937, 'y': 0.3481532287926487 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.2055478402110099, 'y': 0.40163890615162084 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.7938894340168466, 'y': 0.5072595259933633 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.0993316277546158, 'y': 0.4545288480387986 }, ] }, { 'bg': '', 'name': 'Imported level 25', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.31210792495533063, 'y': 0.4947798753509741 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.7429705926146515, 'y': 0.4953754679656257 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.5320062748234494, 'y': 0.6764486767633795 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.5278371265208884, 'y': 0.4962479824725602 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.15105558597804822, 'y': 0.44216685535607925 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.849941804475453, 'y': 0.44200759142346635 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.956913016336255, 'y': 0.44232611928869225 }, ] }, { 'bg': '', 'name': 'Imported level 26', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.870166751808049, 'y': 0.5098080346294563 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.5507629721773163, 'y': 0.6165021817408322 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.2843669352505742, 'y': 0.454972050965711 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.3374161410703649, 'y': 0.6161836538756061 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.7106241259252957, 'y': 0.5626981193737769 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.39106108236195014, 'y': 0.5098080346294566 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.23104066468135803, 'y': 0.5619432628265124 }, ] }, { 'bg': '', 'name': 'Imported level 27', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.8417641737428743, 'y': 0.4076161376669786 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 270, 'width': 0.429, 'x': 0.2041477997107121, 'y': 0.4016602115204628 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.575686807538501, 'y': 0.45796444516293716 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.4165805103377862, 'y': 0.4040425819790691 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.6828172833319153, 'y': 0.4599106297966477 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.5229559867267933, 'y': 0.5649356570237386 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 90, 'width': 0.215, 'x': 0.3635311616608525, 'y': 0.5092270159959159 }, ] }, { 'bg': '', 'name': 'Imported level 28', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.6627741289032587, 'y': 0.6464996858674382 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.5127414654981706, 'y': 0.49527583723304697 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 270, 'width': 0.304, 'x': 0.3615460260359058, 'y': 0.42028784327405777 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.3615603020505404, 'y': 0.6470810024674549 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.4371580217816727, 'y': 0.79827644192972 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.47524753994724755, 'y': 0.30718206483451027 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.32405210048498245, 'y': 0.5339893571853995 }, ] }, { 'bg': '', 'name': 'Imported level 29', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.8606828474432059, 'y': 0.4573111362205395 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.7100545914234663, 'y': 0.607939392240279 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.7856664443120907, 'y': 0.7585392390878924 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.2576735914234664, 'y': 0.3073210151450693 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.5588732851186932, 'y': 0.5335185817238152 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.445186047221986, 'y': 0.4204128032842679 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.37076537956266487, 'y': 0.3454248093252786 }, ] }, { 'bg': '', 'name': 'Imported level 30', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.4035540489236792, 'y': 0.5776136265634306 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.5547210792138176, 'y': 0.5770464431209054 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.6303330749595848, 'y': 0.4258510036586403 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.40294432315153583, 'y': 0.4264323202586574 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.4785420428826684, 'y': 0.27523688079639236 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.28925699954054296, 'y': 0.4639405218242151 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.5172271536628946, 'y': 0.765140215519442 }, ] }, { 'bg': '', 'name': 'Imported level 31', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.37139204773249396, 'y': 0.3805859649451203 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.37139204773249396, 'y': 0.5317529952352591 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.5981710737683996, 'y': 0.5323485878499107 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.522573354037267, 'y': 0.3805716889304859 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.6737687934995319, 'y': 0.4561694086616183 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.48506515247170934, 'y': 0.494259069684336 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.7118724448225985, 'y': 0.3430636302220709 }, ] }, { 'bg': '', 'name': 'Imported level 32', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.24633358776482608, 'y': 0.2252940417765677 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.460275868629286, 'y': 0.22584802841827617 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 135, 'width': 0.304, 'x': 0.6199777584446524, 'y': 0.2794929697098613 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.3846781488981537, 'y': 0.40754430264613295 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.38408255628350213, 'y': 0.6343374618395303 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.4215907578490598, 'y': 0.5206359479281886 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.3459789049604357, 'y': 0.7480389757508721 }, ] }, { 'bg': '', 'name': 'Imported level 33', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.707001553816047, 'y': 0.492399627244108 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 270, 'width': 0.429, 'x': 0.2235373232366204, 'y': 0.4048757792053093 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 180, 'width': 0.304, 'x': 0.48019411860801503, 'y': 0.3417997803964945 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.4045963988768825, 'y': 0.4929809438441249 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.5557918383391476, 'y': 0.41797881672764403 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.3676839327831192, 'y': 0.38048489117672085 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.6694792190929976, 'y': 0.30427744567344506 }, ] }, { 'bg': '', 'name': 'Imported level 34', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.504379130604952, 'y': 0.4494455162937122 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.504060602739726, 'y': 0.663706467880541 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.5185716287756318, 'y': 0.11598558280439036 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5237238987492555, 'y': 0.26719525542414696 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 90, 'width': 0.322, 'x': 0.5578646651067812, 'y': 0.822972029013869 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.5580239290393942, 'y': 0.5567352560197396 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 270, 'width': 0.215, 'x': 0.4510528600357355, 'y': 0.876457706372841 }, ] }, { 'bg': '', 'name': 'Imported level 35', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.4689311082276865, 'y': 0.550903053943674 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 270, 'width': 0.429, 'x': 0.4701638994299329, 'y': 0.7642498850506254 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 45, 'width': 0.304, 'x': 0.5225760495192718, 'y': 0.3912011641283076 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.4841483509742195, 'y': 0.11076320650046798 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.4085506312430869, 'y': 0.26195864596273294 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.5984313243427211, 'y': 0.2994668475282907 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.5228477377690802, 'y': 0.2994668475282907 }, ] }, { 'bg': '', 'name': 'Imported level 36', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.5801178967072239, 'y': 0.2575823995575598 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.5801178967072239, 'y': 0.5587820932527866 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.5062928216625543, 'y': 0.8617402984769846 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5806993561643836, 'y': 0.7099633995575599 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.5045060438185995, 'y': 0.4087637058623329 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.46760756802518494, 'y': 0.7474716011231176 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.6188030074874501, 'y': 0.8236506374542669 }, ] }, { 'bg': '', 'name': 'Imported level 39', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 270, 'width': 0.429, 'x': 0.3989706585552626, 'y': 0.6143359515868289 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 90, 'width': 0.429, 'x': 0.39892905258231937, 'y': 0.8282783753084318 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 315, 'width': 0.304, 'x': 0.34651690249298045, 'y': 0.4546340617714626 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.40674169182336434, 'y': 0.21961151697438946 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.4908511851442184, 'y': 0.3475035859780482 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.33158562401089087, 'y': 0.3476628499106612 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 0, 'width': 0.215, 'x': 0.41025328988343385, 'y': 0.0918787119033438 }, ] }, { 'bg': '', 'name': 'Imported level 41', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.31727268339998316, 'y': 0.5903339898749256 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.6196352960095293, 'y': 0.5915251751042289 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 270, 'width': 0.304, 'x': 0.6196352960095293, 'y': 0.36471788275333955 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.4678583970901046, 'y': 0.28971575563685875 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.3166629576278398, 'y': 0.36471788275333955 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.2785591634476306, 'y': 0.2516119614566492 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 315, 'width': 0.215, 'x': 0.5815456349868118, 'y': 0.2516119614566492 }, ] }, { 'bg': '', 'name': 'Imported level 42', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.3995143365098274, 'y': 0.4468099189994045 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.6989556615332255, 'y': 0.44439913936867176 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.6239394012592531, 'y': 0.2937992925210585 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.24892876567684843, 'y': 0.5967998972177316 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.24833317306219685, 'y': 0.3711979232536373 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.2858412317706117, 'y': 0.48508607686453575 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.6638156972687824, 'y': 0.636094876627244 }, ] }, { 'bg': '', 'name': 'Imported level 45', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.2840290624521398, 'y': 0.29693865753424653 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.5852003469752403, 'y': 0.29693865753424653 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 270, 'width': 0.304, 'x': 0.5852003469752403, 'y': 0.5231503572704841 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.43461477614226157, 'y': 0.2969527906917383 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.28461052190929986, 'y': 0.5219591720411809 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.5477064214243171, 'y': 0.6368518711818261 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.24710232034374197, 'y': 0.6350650933378713 }, ] }, { 'bg': '', 'name': 'Imported level 46', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.19889755994214248, 'y': 0.3403220128477836 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 45, 'width': 0.429, 'x': 0.6537034727303668, 'y': 0.34091760546243516 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.4257049951501742, 'y': 0.339726420233132 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.19891183595677708, 'y': 0.6427270249298053 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.653689339572875, 'y': 0.5665337125840212 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.23582430205054034, 'y': 0.5296353796477495 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.6155855453926657, 'y': 0.6796396338807114 }, ] }, { 'bg': '', 'name': 'Imported level 47', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 315, 'width': 0.429, 'x': 0.3198028607164129, 'y': 0.5452058722879265 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.4709318037947758, 'y': 0.21236989772823966 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 270, 'width': 0.304, 'x': 0.6227893322555944, 'y': 0.6202221325618993 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.4710125761933123, 'y': 0.39402456598315316 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.5466102959244447, 'y': 0.5446244128307667 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.3579207880541139, 'y': 0.7333280538585892 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.5852954067046711, 'y': 0.7339236464732408 }, ] }, { 'bg': '', 'name': 'Imported level 49', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.7386076616183104, 'y': 0.44329757050965707 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 180, 'width': 0.429, 'x': 0.3125097348762019, 'y': 0.44329757050965707 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.5258564231260104, 'y': 0.41341968688845404 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.2375076077597209, 'y': 0.6261850585382456 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 135, 'width': 0.322, 'x': 0.8136097887347911, 'y': 0.54939615357781 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 225, 'width': 0.215, 'x': 0.20059499880881482, 'y': 0.5136890058708415 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 135, 'width': 0.215, 'x': 0.8511179903003486, 'y': 0.6636932601038034 }, ] }, { 'bg': '', 'name': 'Imported level 50', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.15798852667404065, 'y': 0.5899251818259166 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.7621464255934653, 'y': 0.5899251818259166 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 90, 'width': 0.304, 'x': 0.3085883735216539, 'y': 0.5166956993958991 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.6103695266740408, 'y': 0.4393112018208117 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': true, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.3829807748659918, 'y': 0.43990679443546327 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.49668228877733356, 'y': 0.4023985928699055 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.64847332085425, 'y': 0.5529984397175187 }, ] }, { 'bg': '', 'name': 'Imported level 52', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.23011831055900622, 'y': 0.5500260498596102 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.8719452960095293, 'y': 0.5524084203182166 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 45, 'width': 0.304, 'x': 0.7119248783289375, 'y': 0.39179226716583 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.3364937869480133, 'y': 0.4445230879775377 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.4975462687824384, 'y': 0.391633003233217 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.5504362106696163, 'y': 0.49904054377605733 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 90, 'width': 0.215, 'x': 0.818896090189739, 'y': 0.44571427320684087 }, ] }, { 'bg': '', 'name': 'Imported level 53', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.12875665200374367, 'y': 0.5200925202926914 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 0, 'width': 0.429, 'x': 0.7705837803114098, 'y': 0.520688112907343 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 0, 'width': 0.304, 'x': 0.44967014472900535, 'y': 0.3820107478941547 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 45, 'width': 0.152, 'x': 0.23572786386454517, 'y': 0.4133983731813154 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 0, 'width': 0.322, 'x': 0.6107226265634307, 'y': 0.3599128386794861 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.3421034831106951, 'y': 0.3597535747468732 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 180, 'width': 0.215, 'x': 0.6636125684506083, 'y': 0.4667246437505319 }, ] }, { 'bg': '', 'name': 'Imported level 54', 'colorMask': '#999', 'pieces': [ { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.217, 'initY': 0.112, 'moduloRotation': 360, 'rotation': 135, 'width': 0.429, 'x': 0.22622124155534765, 'y': 0.6502168881987578 }, { 'img': 'tangram/p0.svg', 'flippable': 0, 'flipping': false, 'height': 0.214, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.442, 'initY': 0.113, 'moduloRotation': 360, 'rotation': 225, 'width': 0.429, 'x': 0.8327613680762359, 'y': 0.6520036660427124 }, { 'img': 'tangram/p1.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 180, 'initX': 0.61, 'initY': 0.08, 'moduloRotation': 360, 'rotation': 90, 'width': 0.304, 'x': 0.3780122736322641, 'y': 0.4263874160639836 }, { 'img': 'tangram/p2.svg', 'flippable': 0, 'flipping': false, 'height': 0.152, 'initFlipping': 0, 'initRotation': 0, 'initX': 0.911, 'initY': 0.081, 'moduloRotation': 90, 'rotation': 0, 'width': 0.152, 'x': 0.5297890296945461, 'y': 0.35019410371819965 }, { 'img': 'tangram/p3.svg', 'flippable': 1, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.083, 'initY': 0.178, 'moduloRotation': 180, 'rotation': 45, 'width': 0.322, 'x': 0.680984469156811, 'y': 0.4257918234493321 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 135, 'initX': 0.741, 'initY': 0.118, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.4161017917978387, 'y': 0.3126860450097848 }, { 'img': 'tangram/p4.svg', 'flippable': 0, 'flipping': false, 'height': 0.108, 'initFlipping': 0, 'initRotation': 45, 'initX': 0.946, 'initY': 0.205, 'moduloRotation': 360, 'rotation': 45, 'width': 0.215, 'x': 0.7190882633370205, 'y': 0.3126860450097848 }, ] }, ] diff --git a/src/activities/tangram/resource/README b/src/activities/tangram/resource/README index 3f0ea84cb..3c809a704 100644 --- a/src/activities/tangram/resource/README +++ b/src/activities/tangram/resource/README @@ -1,26 +1,10 @@ Copyright: 2000, 2008 Bruno Coudoin and others License: Public domain Files: -car1/bumper.svg -car1/car.svg -car1/grille.svg -car1/headlights.svg -car1/tire_right.svg -car1/windshield.svg tangram/background.svg tangram/flip.svg tangram/p0.svg tangram/p1.svg tangram/p2.svg tangram/p3.svg tangram/p4.svg -train/coal.svg -train/loco.svg -train/passenger.svg -train/wood.svg -truck/back_road.svg -truck/cabin.svg -truck/container.svg -truck/engine.svg -truck/front_road.svg -truck/traffic_bg.svg diff --git a/src/activities/tangram/tangram.js b/src/activities/tangram/tangram.js index bde0f61a7..92def9e51 100644 --- a/src/activities/tangram/tangram.js +++ b/src/activities/tangram/tangram.js @@ -1,182 +1,179 @@ /* GCompris - tangram.js * * Copyright (C) 2016 Bruno Coudoin * * Authors: * Yves Combe / Philippe Banwarth (GTK+ version) * Bruno Coudoin (Qt Quick port) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ .pragma library .import QtQuick 2.6 as Quick -var url = "qrc:/gcompris/src/activities/tangram/resource/" - - var currentLevel = 0 var items function start(items_) { items = items_ currentLevel = 0 initLevel() } function stop() { } function initLevel() { items.bar.level = currentLevel + 1 } function nextLevel() { if(items.numberOfLevel <= ++currentLevel ) { currentLevel = 0 } initLevel(); } function previousLevel() { if(--currentLevel < 0) { currentLevel = items.numberOfLevel - 1 } initLevel(); } function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min); } // Determines the angle of a straight line drawn between point one and two. // The number returned, which is a float in radian, // tells us how much we have to rotate a horizontal line clockwise // for it to match the line between the two points. function getAngleOfLineBetweenTwoPoints(x1, y1, x2, y2) { var xDiff = x2 - x1; var yDiff = y2 - y1; return Math.atan2(yDiff, xDiff); } function getDistance(ix, iy, jx, jy) { return Math.sqrt(Math.pow((ix - jx), 2) + Math.pow((iy - jy), 2)) } function dumpTans(tans) { console.log("== tans ==") for(var i = 0; i < tans.length; i++) { console.log(tans[i].img, tans[i].x, tans[i].y, tans[i].rotation, tans[i].flipping) } } /* Returns the [x, y] coordinate of the closest point */ function getClosest(point) { var nbpiece = items.currentTans.pieces.length var closestItem var closestDist = 1 for(var i = 0; i < nbpiece; i++) { var p1 = items.currentTans.pieces[i] var dist = getDistance(p1.x, p1.y, point[0], point[1]) if(dist < closestDist) { closestDist = dist closestItem = p1 } } if(closestDist < 0.1) return [closestItem.x, closestItem.y] return } function check() { var nbpiece = items.currentTans.pieces.length var userTans = items.userList.asTans() for(var i = 0; i < nbpiece; i++) { var p1 = items.currentTans.pieces[i] var ok = false for(var j = 0; j < nbpiece; j++) { var p2 = userTans[j] // Check type distance and rotation are close enough if(p1.img === p2.img && p1.flipping == p2.flipping && getDistance(p1.x, p1.y, p2.x, p2.y) < 0.01 && p1.rotation === p2.rotation ) { ok = true break } } if(!ok) return false } return true } function toDataset() { var nbpiece = items.currentTans.pieces.length var userTans = items.userList.asTans() var tanss = ' {\n' + " 'bg': '',\n" + " 'name': '" + items.currentTans.name + "',\n" + " 'colorMask': '#999',\n" + " 'pieces': [\n" for(var i = 0; i < nbpiece; i++) { var p1 = items.currentTans.pieces[i] var p2 = userTans[i] tanss += ' {' + '\n' + " 'img': '" + p1.img + "',\n" + " 'flippable': " + p1.flippable + ',\n' + " 'flipping': " + p2.flipping + ',\n' + " 'height': " + p1.height + ',\n' + " 'initFlipping': " + p1.initFlipping + ',\n' + " 'initRotation': " + p1.initRotation + ',\n' + " 'initX': " + p1.initX + ',\n' + " 'initY': " + p1.initY + ',\n' + " 'moduloRotation': " + p1.moduloRotation + ',\n' + " 'rotation': " + p2.rotation + ',\n' + " 'width': " + p1.width + ',\n' + " 'x': " + p2.x + ',\n' + " 'y': " + p2.y + '\n' + " },\n"; } tanss += ' ]\n' + ' },\n' return(tanss) } /* In edition mode arrow keys allow the move by 1 pixels in any direction */ function processPressedKey(event) { if ( items.editionMode && items.selectedItem && items.selectedItem.selected) { /* Move the player */ switch (event.key) { case Qt.Key_Right: items.selectedItem.x += 1 event.accepted = true break case Qt.Key_Left: items.selectedItem.x -= 1 event.accepted = true break case Qt.Key_Up: items.selectedItem.y -= 1 event.accepted = true break case Qt.Key_Down: items.selectedItem.y += 1 event.accepted = true break } } }