ngx-chess-board
Version:
Chess game component
57 lines (43 loc) • 1.57 kB
text/typescript
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 = [];
}
}