summaryrefslogtreecommitdiff
path: root/src/entities/boshy.js
diff options
context:
space:
mode:
authorniliara-edu <nil.jimeno@estudiant.fjaverianas.com>2024-12-23 18:32:29 +0100
committerniliara-edu <nil.jimeno@estudiant.fjaverianas.com>2024-12-23 18:32:29 +0100
commita840990bdcabf45fb0d377478ba0ab27222434ae (patch)
tree030a6c3a6befce284733f5643d3972e3a1504bb2 /src/entities/boshy.js
initial commit
Diffstat (limited to 'src/entities/boshy.js')
-rw-r--r--src/entities/boshy.js65
1 files changed, 65 insertions, 0 deletions
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)
+ }
+}