UNPKG

@reis/seki

Version:

Seki – A modern javascript based Go board renderer and player, that is simple to use, extensible, compact and intuitive.

61 lines (48 loc) 1.18 kB
import BoardLayer from './board-layer.js' import StoneFactory from '../stone-factory.js' import {boardLayerTypes} from '../../constants/board.js' /** * Stones layer */ export default class StonesLayer extends BoardLayer { //Type type = boardLayerTypes.STONES /** * Add a single stone */ add(x, y, stone) { super.add(x, y, stone) const shadow = StoneFactory.createShadow(stone) this.board.add(boardLayerTypes.SHADOW, x, y, shadow) } /** * Remove a single stone */ remove(x, y) { super.remove(x, y) this.board.remove(boardLayerTypes.SHADOW, x, y) } /** * Set all */ setAll(grid) { //Erase shadows layer this.board.eraseLayer(boardLayerTypes.SHADOW) //Parent method super.setAll(grid) //Create copy of grid with stone shadows const shadows = grid .map(stone => StoneFactory.createShadow(stone)) //Set on shadow grid this.board.setAll(boardLayerTypes.SHADOW, shadows) } /** * Remove all (erase layer and clear grid) */ removeAll() { //Erase shadows layer this.board.eraseLayer(boardLayerTypes.SHADOW) //Parent method super.removeAll() } }