From 0010f2de57cfa97106432ea1849c1bb75d3d99a1 Mon Sep 17 00:00:00 2001 From: Maksymilian Jopek Date: Tue, 31 May 2022 18:11:09 +0200 Subject: All enemies movement --- src/enemies/Red2.ts | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 src/enemies/Red2.ts (limited to 'src/enemies/Red2.ts') diff --git a/src/enemies/Red2.ts b/src/enemies/Red2.ts new file mode 100644 index 0000000..6cfa672 --- /dev/null +++ b/src/enemies/Red2.ts @@ -0,0 +1,114 @@ +import { Rectangle } from "../Drawable"; +import { IMGS } from "../Images"; +import Enemy from "./Enemy"; + +export default class Red2 extends Enemy { + sprite = IMGS.redDown; + width = IMGS.redDown.width; + height = IMGS.redDown.height; + vel = 2; + phase = 0; + i = 0; + squares: Rectangle[] = [new Rectangle(this, 2, 2, this.width - 2, this.height - 2)] + + constructor(x: number, y: number, public left: boolean) { + super(x, y) + } + + move() { + let dx = 0, dy = 0; + + switch (this.phase) { + case 0: + dy = this.vel; + if (this.y > 163) this.phase++; + break; + case 1: + this.sprite = IMGS.redDownToRight + this.phase++ + this.i = 0; + break; + case 2: + dx = this.vel + dy = this.vel + if (this.i++ === 9) this.phase++; + break; + case 3: + this.sprite = IMGS.redRight + this.phase++ + this.i = 0; + break; + case 4: + dx = this.vel + if (this.x > (this.left ? 285 : 285 + 80)) this.phase++; + break; + case 5: + this.sprite = IMGS.redRightToUp + this.phase++ + this.i = 0; + break; + case 6: + dx = this.vel + dy = -this.vel + if (this.i++ === 13) this.phase++; + break; + case 7: + this.sprite = IMGS.redUp + this.phase++; + break; + case 8: + dy = -this.vel + if (this.y < 98) this.phase++ + break; + case 9: + this.sprite = IMGS.redUpToLeft + this.phase++ + this.i = 0; + break; + case 10: + dx = -this.vel + dy = -this.vel + if (this.i++ === 7) this.phase++; + break; + case 11: + this.sprite = IMGS.redLeft + this.phase++ + this.i = 0; + break; + case 12: + dx = -this.vel + if (this.x < (this.left ? 210 : 210 + 80)) this.phase++ + break; + case 13: + this.sprite = IMGS.redLeftToDown + this.phase++ + this.i = 0 + break; + case 14: + dx = -this.vel + dy = this.vel + if (this.i++ === 7) this.phase++; + break; + case 15: + this.sprite = IMGS.redDown + this.phase++ + this.i = 0 + break; + case 16: + dy = this.vel + console.log(this.x); + + break; + default: + break; + } + + this.x += dx; + this.y += dy; + this.width = this.sprite.width + this.height = this.sprite.height + this.squares = [new Rectangle(this, 2, 2, this.width - 2, this.height - 2)] + return this.isOutsideMap() && this.phase > 12 + } +} + -- cgit v1.3.1