"use strict"; import Vector from './Vector'; class Star { constructor(inCanvas, inPosition, inSize) { this.canvas = inCanvas; this.position = inPosition; this.points = 5; this.size = inSize; this.innerRingSize = this.size * 0.6; this.colour = "white"; this.recalculatePoints(); } /** * The step around a circle (in radians) between each point (both inner and * outer) on the star. * Used by recalculatePoints(). * @return {number} The step around a circle between each point on the star. */ get pointStep() { return (Math.PI * 2) / (this.points * 2); } recalculatePoints() { this.points = []; for (let n = 0, i = 0; n < Math.PI * 2; n += this.pointStep, i++) { let currentSize = i % 2 == 0 ? this.size : this.innerRingSize; this.points.push(new Vector( currentSize * Math.cos(Math.PI * 2 * (n / this.points * 2) + this.rotation - Math.PI / 2), currentSize * Math.sin(Math.PI * 2 * (n / this.points * 2) + this.rotation - Math.PI / 2) )); } } update(dt) { } render(context) { context.save(); context.translate(this.position.x, this.position.y); // TODO: Debug this context.beginPath(); context.moveTo(this.points[0].x, this.points[0].y); for (let point of this.points) { context.lineTo(point.x, point.y); } context.closePath(); context.fillStyle = this.colour; context.fill(); context.restore(); } } export default Star;