UNPKG

ngx-chess-board

Version:
57 lines (43 loc) 1.57 kB
import { BehaviorSubject } from 'rxjs'; import { Arrow } from './shapes/arrow'; import { Circle } from './shapes/circle'; export class DrawProvider { private arrowsSubject$ = new BehaviorSubject<Arrow[]>([]); private circlesSubject$ = new BehaviorSubject<Circle[]>([]); public arrows$ = this.arrowsSubject$.asObservable(); public circles$ = this.circlesSubject$.asObservable(); private get circles(): Circle[] { return this.circlesSubject$.value; } private set circles(circles: Circle[]) { this.circlesSubject$.next(circles); } private get arrows(): Arrow[] { return this.arrowsSubject$.value; } private set arrows(arrows: Arrow[]) { this.arrowsSubject$.next(arrows); } addCircle(circle: Circle) { this.circles = [...this.circles, circle]; } reomveCircle(removeCircle: Circle) { this.circles = this.circles.filter((circle) => !circle.isEqual(removeCircle)); } addArrow(arrow: Arrow) { this.arrows = [...this.arrows, arrow]; } removeArrow(removeArrow: Arrow) { this.arrows = this.arrows.filter((arrow) => !arrow.isEqual(removeArrow)); } containsCircle(checkCircle: Circle) { return this.circles.some((circle) => circle.isEqual(checkCircle)); } containsArrow(checkArrow: Arrow) { return this.arrows.some((arrow: Arrow) => arrow.isEqual(checkArrow)); } clear() { this.arrows = []; this.circles = []; } }