Warning, /games/knetwalk/src/qml/main.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2013 Ashwin Rajeev <ashwin_rajeev@hotmail.com>
0003
0004 SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006
0007 import QtQuick 2.3
0008 import "logic.js" as Logic
0009
0010 Item {
0011 id: main
0012 property int selected: 0
0013 property int rotateDuration: 300
0014 property bool reverseButtons: false
0015 property string state
0016 property alias rows: grid.rows
0017 property alias columns: grid.columns
0018
0019 signal clicked(int index)
0020 signal rotated(int index, int angle)
0021
0022 CanvasItem {
0023 id: background
0024 spriteKey: "background"
0025 anchors.fill: parent
0026 }
0027
0028 Grid {
0029 id: grid
0030 width: Logic.gridWidth()
0031 height: Logic.gridHeight()
0032 z: 1
0033 anchors.horizontalCenter: parent.horizontalCenter
0034 anchors.verticalCenter: parent.verticalCenter
0035 }
0036
0037 CanvasItem {
0038 spriteKey: "overlay"
0039 anchors.horizontalCenter: parent.horizontalCenter
0040 anchors.verticalCenter: parent.verticalCenter
0041 width: Logic.overlaySize()
0042 height: width
0043 }
0044
0045 Rectangle {
0046 id: highlight
0047 color: "white"
0048 x: grid.x + ((Logic.cells.length > selected)? Logic.cells[selected].x : 0)
0049 y: grid.y + ((Logic.cells.length > selected)? Logic.cells[selected].y : 0)
0050 width: grid.width / grid.columns
0051 height: width
0052 opacity: (main.state === "running")? 0.2 : 0
0053 }
0054
0055 Rectangle {
0056 id: pauseMessage
0057 width: parent.width / 2
0058 height: parent.height / 4
0059 anchors.horizontalCenter: parent.horizontalCenter
0060 anchors.verticalCenter: parent.verticalCenter
0061 color: "black"; radius: 10; z: 1
0062 opacity: (main.state === "paused") ? 0.8 : 0
0063
0064 Text {
0065 color: "white"
0066 text: i18n("Paused")
0067 anchors.horizontalCenter: parent.horizontalCenter
0068 anchors.verticalCenter: parent.verticalCenter
0069 font.pixelSize: parent.width / 8
0070 }
0071 }
0072
0073 function addCell(cable, type) {
0074 Logic.addCell(cable, type);
0075 }
0076
0077 function setBoardSize(width, height) {
0078 Logic.reset(width, height);
0079 }
0080
0081 function rotateClockwise() {
0082 Logic.rotate("clockwise");
0083 }
0084
0085 function rotateCounterclockwise() {
0086 Logic.rotate("counterclockwise");
0087 }
0088
0089 function pause(paused) {
0090 state = (paused)? "paused" : "running";
0091 }
0092
0093 function kbGoUp() {
0094 if(state === "running") {
0095 selected += (selected < columns)? columns * (rows - 1) : -columns;
0096 }
0097 }
0098
0099 function kbGoDown() {
0100 if(state === "running") {
0101 selected += (selected < columns * (rows - 1))? columns : -columns * (rows - 1);
0102 }
0103 }
0104
0105 function kbGoLeft() {
0106 if(state === "running") {
0107 selected += (selected % columns == 0)? columns - 1 : - 1;
0108 }
0109 }
0110
0111 function kbGoRight() {
0112 if (state === "running") {
0113 selected += (selected % columns == columns - 1)? -columns + 1 : 1;
0114 }
0115 }
0116
0117 function toggleLock() {
0118 if(state === "running") {
0119 Logic.cells[selected].locked = !Logic.cells[selected].locked;
0120 }
0121 }
0122
0123 function lock(index) {
0124 Logic.cells[index].locked = true;
0125 }
0126
0127 function unlockAll() {
0128 Logic.unlockAll();
0129 }
0130
0131 function setSprite(index, cable, type) {
0132 Logic.setSprite(index, cable, type);
0133 }
0134
0135 function gameOver(msg) {
0136 state = msg;
0137 }
0138 }