ngx-chess-board
Version:
Chess game component
114 lines (112 loc) • 4.78 kB
HTML
<div
id="board"
[]="engineFacade.heightAndWidth"
[]="engineFacade.heightAndWidth"
(pointerdown)="!modal.opened && onMouseDown($event)"
(pointerup)="!modal.opened && onMouseUp($event)"
>
<div id="drag">
<div
[]="engineFacade.dragDisabled"
(cdkDragEnded)="dragEnded($event)"
(cdkDragMoved)="dragMoved($event)"
(cdkDragStarted)="dragStart($event)"
class="single-piece" [innerHTML]="engineFacade.pieceIconManager.isDefaultIcons() ? piece.constant.icon : ''"
[]="engineFacade.pieceIconManager.isDefaultIcons() ? '' : getCustomPieceIcons(piece)"
[]="'translate3d(' + piece.point.col * pieceSize + 'px, ' + piece.point.row * pieceSize + 'px,0px)'"
[]="pieceSize + 'px'"
[]="pieceSize * 0.8 + 'px'"
[]="pieceSize + 'px'"
[]="pieceSize + 'px'"
cdkDrag
*ngFor="let piece of engineFacade.board.pieces; let i = index"
>
</div>
<div
class="board-row"
*ngFor="let row of engineFacade.board.board; let i = index"
>
<div
class="board-col"
[]="showActivePiece && engineFacade.board.isXYInActiveMove(i,j)"
[]=" engineFacade.board.isKingChecked(engineFacade.board.getPieceByPoint(i,j))"
[]="engineFacade.board.isXYInPointSelection(i, j)"
[]="showPossibleCaptures && engineFacade.board.isXYInPossibleCaptures(i, j)"
[]="engineFacade.board.isXYInPossibleMoves(i, j) && showLegalMoves"
[]="getTileBackgroundColor(i, j)"
*ngFor="let col of row; let j = index"
>
<span
class="yCoord"
[]="(i % 2 === 0) ? lightTileColor : darkTileColor"
[]="pieceSize / 4"
*ngIf="showCoords && j === 7"
>
{{engineFacade.coords.yCoords[i]}}
</span>
<span
class="xCoord"
[]="(j % 2 === 0) ? lightTileColor : darkTileColor"
[]="pieceSize / 4"
*ngIf="showCoords && i === 7"
>
{{engineFacade.coords.xCoords[j]}}
</span>
<div
*ngIf="engineFacade.board.getPieceByPoint(i, j) as piece"
style="height:100%; width:100%"
>
<div
[]="'piece'"
[]="pieceSize + 'px'"
>
</div>
</div>
</div>
</div>
</div>
<svg
[]="engineFacade.heightAndWidth"
[]="engineFacade.heightAndWidth"
style="position:absolute; top:0; pointer-events: none"
>
<defs *ngFor="let color of ['red', 'green', 'blue', 'orange']">
<marker
[]="color + 'Arrow'"
markerHeight="13"
markerWidth="13"
orient="auto"
refX="9"
refY="6"
>
<path
[]="color"
d="M2,2 L2,11 L10,6 L2,2"
></path>
</marker>
</defs>
<line
class="arrow"
[]="'url(#' + arrow.end.color + 'Arrow)'"
[]="arrow.end.color"
[]="arrow.start.x"
[]="arrow.end.x"
[]="arrow.start.y"
[]="arrow.end.y"
*ngFor="let arrow of engineFacade.drawProvider.arrows$ | async"
></line>
<circle
[]="circle.drawPoint.x"
[]="circle.drawPoint.y"
[]="engineFacade.heightAndWidth / 18"
[]="circle.drawPoint.color"
*ngFor="let circle of engineFacade.drawProvider.circles$ | async"
fill-opacity="0.0"
stroke-width="2"
></circle>
</svg>
<app-piece-promotion-modal
[]="engineFacade.pieceIconManager.pieceIconInput"
[]="engineFacade.board.getCurrentPlayerColor() ? 'white' : 'black'"></app-piece-promotion-modal>
</div>