class MapTile { constructor(x, y, isSolid, hasCoin) { this.x = x; this.y = y; this.solid = isSolid; this.coin = hasCoin; } lookAtNeighbours(neighbours) { this.borders = {}; if(neighbours.left && neighbours.left.solid) { this.borders.left = true; } if(neighbours.top && neighbours.top.solid) { this.borders.top = true; } if(neighbours.right && neighbours.right.solid) { this.borders.right = true; } if(neighbours.bottom && neighbours.bottom.solid) { this.borders.bottom = true; } } draw(ctx, conf) { if (this.solid) { this.drawSolid(ctx, conf); } if(this.coin) { ctx.save(); ctx.translate((this.x + 0.5) * conf.tileSize, (this.y + 0.5) * conf.tileSize); ctx.fillStyle = "#fff"; ctx.beginPath(); ctx.arc(0, 0, 0.15 * conf.tileSize, 0, 2 * Math.PI); ctx.fill(); ctx.restore(); } } drawSolid(ctx, conf) { ctx.save(); ctx.translate((this.x + 0.5) * conf.tileSize, (this.y + 0.5) * conf.tileSize); ctx.strokeStyle = "#00f"; ctx.lineWidth = conf.tileSize * .5; ctx.beginPath(); if (this.borders.left) { ctx.moveTo(0.25 * conf.tileSize, 0); ctx.lineTo(-0.5 * conf.tileSize, 0); } if (this.borders.top) { ctx.moveTo(0, 0.25 * conf.tileSize); ctx.lineTo(0, -0.5 * conf.tileSize); } if (this.borders.right) { ctx.moveTo(-0.25 * conf.tileSize, 0); ctx.lineTo(0.5 * conf.tileSize, 0); } if (this.borders.bottom) { ctx.moveTo(0, -0.25 * conf.tileSize); ctx.lineTo(0, 0.5 * conf.tileSize); } ctx.stroke(); ctx.restore(); } }