1.1 --- a/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Thu Jul 25 21:19:14 2013 +0200
1.2 +++ b/chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java Fri Jul 26 09:28:49 2013 +0200
1.3 @@ -30,13 +30,14 @@
1.4 import net.java.html.json.Property;
1.5
1.6 @Model(className="Board", properties={
1.7 - @Property(name = "rows", type = Row.class, array = true)
1.8 + @Property(name = "rows", type = Row.class, array = true),
1.9 + @Property(name = "turn", type = BoardModel.ColorType.class)
1.10 })
1.11 public class BoardModel {
1.12 @Function static void selected(Board b, Square data) {
1.13 Square previoslySelected = findSelectedSquare(b);
1.14 if (previoslySelected == null) {
1.15 - if (data.getPiece() != null) {
1.16 + if (data.getPiece() != null && data.getPieceColor() == b.getTurn()) {
1.17 data.setSelected(true);
1.18 }
1.19 } else {
1.20 @@ -48,11 +49,20 @@
1.21 }
1.22 data.setPieceColor(previoslySelected.getPieceColor());
1.23 data.setPiece(previoslySelected.getPiece());
1.24 + b.setTurn(b.getTurn() == ColorType.WHITE ? ColorType.BLACK : ColorType.WHITE);
1.25 previoslySelected.setPiece(null);
1.26 previoslySelected.setPieceColor(null);
1.27 }
1.28 }
1.29
1.30 + @ComputedProperty static boolean whiteTurn(ColorType turn) {
1.31 + return turn == ColorType.WHITE;
1.32 + }
1.33 +
1.34 + @ComputedProperty static boolean blackTurn(ColorType turn) {
1.35 + return turn == ColorType.BLACK;
1.36 + }
1.37 +
1.38 static Square findSquare(Board b, char column, int row) {
1.39 for (Row r : b.getRows()) {
1.40 for (Square square : r.getColumns()) {
1.41 @@ -146,6 +156,7 @@
1.42
1.43 static Board createBoard() {
1.44 Board b = new Board();
1.45 + b.setTurn(ColorType.WHITE);
1.46 for (int i = 8; i > 0; i--) {
1.47 Row r = new Row();
1.48 b.getRows().add(r);