summaryrefslogtreecommitdiff
path: root/qml/pages/Goban.qml
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2014-08-25 22:24:47 +0200
committerSébastien Dailly <sebastien@chimrod.com>2014-08-25 22:24:47 +0200
commitcecbf060661a3cf47e876f8dec0207e0f082c3d4 (patch)
treeb925908f4dd96a3cd6d861f0c3e0d406d05ff6cc /qml/pages/Goban.qml
parent5a8c5c5bbdafc08a3e42e12ca81789c8a96126e4 (diff)
Added icons :
- restart level Added transitions
Diffstat (limited to 'qml/pages/Goban.qml')
-rw-r--r--qml/pages/Goban.qml80
1 files changed, 60 insertions, 20 deletions
diff --git a/qml/pages/Goban.qml b/qml/pages/Goban.qml
index 64475ec..baffa39 100644
--- a/qml/pages/Goban.qml
+++ b/qml/pages/Goban.qml
@@ -25,6 +25,47 @@ Item {
*/
property bool currentPlayer: true;
+ property variant tree;
+
+ /*
+ * Start the game.
+ *
+ * Initialize the board with the stones, and set player color.
+ */
+ function start() {
+
+ currentPlayer = true;
+
+ for (var i = 0; i < goban.rows * goban.columns; i++) {
+ repeater.itemAt(i).clear();
+ }
+
+ var initial
+
+ i = 0;
+
+ while (tree[i].AW === undefined && tree[i].AB === undefined) {
+ i++;
+ }
+
+ initial = tree[i]
+
+ var aw = initial.AW;
+ if (aw !== undefined) {
+ aw.forEach(function (pos) {
+ goban.getItemAt(pos[0], pos[1]).setColor(currentPlayer);
+ });
+ }
+
+ var ab = initial.AB;
+ if (ab !== undefined) {
+ ab.forEach(function (pos) {
+ goban.getItemAt(pos[0], pos[1]).setColor(!currentPlayer);
+
+ });
+ }
+ }
+
function setGoban(ret) {
limitTop = ret.side.TOP;
@@ -35,7 +76,6 @@ Item {
goban.columns = ret.size[0]
goban.rows = ret.size[1]
- currentPlayer = true;
var maxWidth = width / ret.size[0]
var maxHeight = height / ret.size[1]
@@ -49,22 +89,8 @@ Item {
/*
* Put the initials stones
*/
- var initial = ret.tree[0]
-
- var aw = initial.AW;
- if (aw !== undefined) {
- aw.forEach(function (pos) {
- goban.getItemAt(pos[0], pos[1]).setColor(currentPlayer);
- });
- }
-
- var ab = initial.AB;
- if (ab !== undefined) {
- ab.forEach(function (pos) {
- goban.getItemAt(pos[0], pos[1]).setColor(!currentPlayer);
-
- });
- }
+ tree = ret.tree;
+ start();
}
/**
@@ -113,7 +139,7 @@ Item {
// return;
// }
- point.setColor(currentPlayer);
+ point.put(currentPlayer);
if (neighbors.length !== 0) {
@@ -235,16 +261,30 @@ Item {
Item {
+ function put(isWhite) {
+ piece.type = isWhite ? "white" : "black";
+ piece.state = "shown";
+ }
+
function setColor(isWhite) {
- piece.type = isWhite ? "white" : "black"
+ piece.init(isWhite ? "white" : "black");
}
function remove() {
+ piece.state = "remove"
+ }
+
+ function clear() {
piece.type = "";
+ piece.state = "";
}
function getType() {
- return piece.type;
+ if (piece.state == "remove") {
+ return "";
+ } else {
+ return piece.type;
+ }
}
width: caseSize; height: caseSize