Snake/front-end/Scene.qml

108 lines
2.5 KiB
QML
Raw Normal View History

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
}