2018-11-14 23:15:36 +03:00
|
|
|
import QtQuick 2.9
|
|
|
|
|
|
|
|
Item {
|
|
|
|
id: scene;
|
2018-11-25 03:24:41 +03:00
|
|
|
property var model: (contr)? contr: null;
|
2018-11-14 23:15:36 +03:00
|
|
|
property var arrayObjects: []
|
2018-11-25 03:24:41 +03:00
|
|
|
signal showMenu();
|
2018-11-14 23:15:36 +03:00
|
|
|
function add (cppObjId) {
|
|
|
|
if (!model) {
|
|
|
|
console.log("create object fail")
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var temp = Qt.createComponent("GraphicItem.qml")
|
|
|
|
if (temp.status === Component.Ready) {
|
|
|
|
var obj = temp.createObject(parent) // parent - это обьект на который будет помещен соззданный элемент
|
|
|
|
obj.model = model.getGameObject(cppObjId);
|
|
|
|
if (!obj.model) {
|
|
|
|
console.log("object model not found");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
arrayObjects.push(obj)
|
|
|
|
}
|
|
|
|
}
|
2018-11-16 02:08:35 +03:00
|
|
|
|
2018-11-14 23:15:36 +03:00
|
|
|
function remove(id) {
|
|
|
|
if (typeof id !== "number" || id < 0) {
|
|
|
|
console.log("id not found");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var i = 0; i < arrayObjects.length; ++i) {
|
|
|
|
if (id === arrayObjects[i].guiId) {
|
2018-11-16 02:08:35 +03:00
|
|
|
arrayObjects.splice(i,1);
|
2018-11-14 23:15:36 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-25 03:24:41 +03:00
|
|
|
function setAuto (auto) {
|
|
|
|
if (auto && model) {
|
|
|
|
model.newGame();
|
|
|
|
|
|
|
|
}
|
|
|
|
autoTimer.running = auto && model;
|
|
|
|
}
|
|
|
|
|
|
|
|
Timer {
|
|
|
|
id :autoTimer;
|
|
|
|
repeat: true;
|
|
|
|
running: false;
|
|
|
|
interval: 1000
|
|
|
|
onTriggered: {
|
|
|
|
interval = Math.random() * 600
|
|
|
|
scene.model.buttonPress();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-11-14 23:15:36 +03:00
|
|
|
Connections {
|
|
|
|
target: model;
|
|
|
|
onGameObjectsChanged: {
|
|
|
|
if (!dif) {
|
|
|
|
console.log("dif not found");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
var tempDifRem = [];
|
|
|
|
tempDifRem = dif.getRemoveIds();
|
|
|
|
var tempDifAdd = [];
|
|
|
|
tempDifAdd = dif.getAddedIds();
|
|
|
|
|
|
|
|
for (var i = 0; i < tempDifAdd.length; ++i) {
|
|
|
|
add(tempDifAdd[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < tempDifRem.length; ++i) {
|
|
|
|
remove(tempDifRem[i]);
|
|
|
|
}
|
|
|
|
}
|
2018-11-25 03:24:41 +03:00
|
|
|
|
|
|
|
onFinished: {
|
|
|
|
var isVictory = victory;
|
|
|
|
var gameLvl = lvl;
|
|
|
|
var dist = distance;
|
|
|
|
|
|
|
|
if (isVictory ) {
|
|
|
|
model.nextLvl();
|
|
|
|
} else if (autoTimer.running) {
|
|
|
|
model.newGame();
|
|
|
|
} else {
|
|
|
|
showMenu();
|
|
|
|
}
|
|
|
|
}
|
2018-11-14 23:15:36 +03:00
|
|
|
}
|
2018-11-16 02:08:35 +03:00
|
|
|
|
|
|
|
MouseArea {
|
|
|
|
anchors.fill: parent;
|
|
|
|
|
|
|
|
onClicked: {
|
|
|
|
if (!model) {
|
|
|
|
console.log("model not found");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
model.buttonPress();
|
|
|
|
}
|
|
|
|
}
|
2018-11-14 23:15:36 +03:00
|
|
|
}
|