import { BOSHY } from "../assets.js" import { Vector } from "../engine/vector.js" import { Engine } from "../engine.js" import { BoshyBullet } from "./boshybullet.js" import { Entity } from "./entity.js" export class Boshy extends Entity { reloadTime = 6 lastShot = 0 speed = 5 constructor() { super({ size: new Vector(30, 30), position: new Vector(325, 400), sprite: BOSHY.NORMAL, }) Engine.playSound(BOSHY.SOUNDS.INTRO) } update() { let keys = Engine.keys let viewport = Engine.screen.viewport /* get movement direction */ let move = new Vector() let speed = this.speed if (keys.right) move.x += 1 if (keys.left) move.x -= 1 if (keys.up) move.y -= 1 if (keys.down) move.y += 1 if (keys.shoot) this.shoot() /* apply movement */ move.normalize() move.multiply(speed) this.position.add(move) /* check limits */ if (this.position.x < 0) this.position.x = 0 if (this.position.y < 0) this.position.y = 0 if (this.position.x > viewport.x) this.position.x = viewport.x if (this.position.y > viewport.y) this.position.y = viewport.y } shoot() { /* check if it can shoot */ if (Engine.frame < this.lastShot + this.reloadTime) { return } this.lastShot = Engine.frame /*(reset reload)*/ let bullet_a_position = this.position.clone() let bullet_b_position = this.position.clone() bullet_a_position.x = bullet_a_position.x + 5 bullet_b_position.x = bullet_b_position.x - 5 new BoshyBullet(bullet_a_position) new BoshyBullet(bullet_b_position) Engine.playSound(BOSHY.SOUNDS.SHOOT) } }