class Wormhole extends Item{ //Class for the wormhole objects appearing on the game board //Inherits following properties from Item: /* id: string pos: Vector radius: number color: Serialized.Color settings: Settings.Item time: TimeProcess */ power: number constructor(settings: Settings.Wormhole){ super(settings) this.power = settings.power this.fadeTime = settings.fadeTime this.radius = p.random(settings.minRadius, settings.maxRadius) } serialized(): Serialized.Wormhole{ let item = super.serialized() as Serialized.Wormhole return item } destroy(): void{ let index = game.wormholes.indexOf(this) game.wormholes.splice(index, 1) } attractBall(ball: Ball): void{ let distance = ball.dist(this.centerX, this.centerY) let force = (this.power * ball.radius * this.currentRadius) / p.pow(distance, 2) let forceVector = Vector.sub(this.pos, ball.pos).setMag(force) as Vector ball.applyForce(forceVector) } show(): void{ let alpha = 0 p.push() p.noFill() p.strokeWeight(2) for (let r = this.currentRadius; r > 0; --r){ let color = p.color(this.color.fill) color.setAlpha(p.constrain(alpha, 0, 1) * 255) p.stroke(color) p.ellipse(this.centerX, this.centerY, r * 2, r * 2) alpha += 1 / this.currentRadius; } p.pop() } }