From a840990bdcabf45fb0d377478ba0ab27222434ae Mon Sep 17 00:00:00 2001 From: niliara-edu Date: Mon, 23 Dec 2024 18:32:29 +0100 Subject: initial commit --- src/entities/boshy.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/entities/boshy.js (limited to 'src/entities/boshy.js') diff --git a/src/entities/boshy.js b/src/entities/boshy.js new file mode 100644 index 0000000..ea6068d --- /dev/null +++ b/src/entities/boshy.js @@ -0,0 +1,65 @@ +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) + } +} -- cgit v1.2.3