12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { Ball } from "./Ball.js";
- export class Slot {
- constructor(id) {
- this.id = id;
- this.balls = [];
-
- }
- addBall(ball) {
- this.balls.push(ball);
- }
- removeBall() {
- return this.balls.pop();
- }
- draw(ctx, scaledCanvas) {
- ctx.beginPath();
- ctx.moveTo(0,0);
- ctx.lineTo(Slot.width, 0);
- ctx.lineTo(Slot.width, Slot.height);
- ctx.arcTo(Slot.width, Slot.height + Slot.width / 2, Slot.width / 2, Slot.height + Slot.width / 2, Slot.width / 2);
- ctx.arcTo(0, Slot.height + Slot.width / 2, 0, Slot.height, Slot.width / 2);
- ctx.closePath();
- ctx.fill();
- // ctx.stroke();
- for(let i = 0; i < this.balls.length; i++) {
- ctx.save();
- ctx.translate(Slot.width / 2, Slot.height - i * (2 * (Ball.radius + Ball.radiusPadding)) - Slot.width / 4);
- this.balls[i].draw(ctx, scaledCanvas);
- ctx.restore();
- }
- }
- update(delta) {
- }
- canAddBall(ballToAdd) {
- if(this.balls.length == 0) { return true; } //it's empty
- if(this.balls.length == 4) { return false; } //it's full
- if(this.balls[this.balls.length -1].colorId != ballToAdd.colorId) { return false; } //color doesn't match
- return true;
- }
- colorsAllMatch() {
- if(this.balls.length == 0) {
- return true;
- }
- if(this.balls.length == 4) {
- let ballColorId = this.balls[0].colorId;
- for(let i = 0; i < this.balls.length; i++) {
- let ball = this.balls[i];
- if(ball.colorId != ballColorId) {
- return false;
- }
- }
- return true;
- }
- return false;
- }
- }
- Slot.width = 40;
- Slot.widthPadding = 10;
- Slot.height = 160;
- Slot.heightPadding = 80;
|