chess/src/main/java/org/apidesign/html/demo/chess/BoardModel.java
branchchess
changeset 30 a46846115b83
parent 29 9fb64f6528b5
child 34 1ebd52ae8ccb
     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);