50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
import { GameObject } from '../engine/GameObject.js';
|
|
import { Vector2D } from '../engine/Vector2D.js';
|
|
|
|
export class WitchProjectile extends GameObject {
|
|
constructor(
|
|
x,
|
|
y,
|
|
direction,
|
|
{ container, viewport, speed = 220, size = 12, color = [0.7, 0.2, 1, 1] } = {},
|
|
) {
|
|
super(x, y);
|
|
this.velocity = direction.mulS(speed);
|
|
this.container = container;
|
|
this.viewport = viewport;
|
|
this.size = size;
|
|
this.color = color;
|
|
this.width = size;
|
|
this.height = size;
|
|
this._time = 0;
|
|
}
|
|
|
|
update(dt) {
|
|
super.update(dt);
|
|
this._time += dt;
|
|
|
|
const { width, height } = this.viewport;
|
|
if (
|
|
this.pos.x < -this.size ||
|
|
this.pos.x > width + this.size ||
|
|
this.pos.y < -this.size ||
|
|
this.pos.y > height + this.size
|
|
) {
|
|
this.remove(this.container);
|
|
}
|
|
}
|
|
|
|
draw(renderer) {
|
|
const pulse = 1 + 0.15 * Math.sin(this._time * 12);
|
|
const s = this.size * pulse;
|
|
renderer.drawTexture(
|
|
renderer.whiteTexture,
|
|
this.pos.x - s / 2,
|
|
this.pos.y - s / 2,
|
|
s,
|
|
s,
|
|
this.color,
|
|
);
|
|
}
|
|
}
|