Skip to content

Commit 9fd7b5f

Browse files
committed
feat: implemented enemy horizontal moving
1 parent 66a5330 commit 9fd7b5f

File tree

4 files changed

+54
-17
lines changed

4 files changed

+54
-17
lines changed

src/main.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const config: Phaser.Types.Core.GameConfig = {
1212
width: 800,
1313
height: 600,
1414
parent: "game-container",
15+
pixelArt: true,
1516

1617
scene: {
1718
preload: preload,
@@ -38,7 +39,7 @@ let playerState: PlayerStateMachine;
3839
let bulletState: BulletStateMachine;
3940
let enemyState: EnemyStateMachine;
4041

41-
const game = new Phaser.Game(config);
42+
export const game = new Phaser.Game(config);
4243

4344
function preload(this: Phaser.Scene) {
4445

src/states/enemies.ts

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,50 @@
1-
import { ENEMY_RELOAD_TIME_MS } from "../util/constants";
1+
import { ENEMY_RELOAD_TIME_MS, ENEMY_SHIFT_MOVES, ENEMY_SHIFT_OFFSET_X, ENEMY_SHIFT_TIME_MS } from "../util/constants";
22
import { StateMachine } from "./state-machine";
33

44
export class EnemyStateMachine implements StateMachine {
55
constructor(
66
private scene: Phaser.Scene,
77
public enemies: Phaser.Physics.Arcade.Group,
8-
private reloadTime: number = 0
8+
9+
private reloadTime: number = 0,
10+
private shiftTime: number = ENEMY_SHIFT_TIME_MS,
11+
private left: boolean = false,
12+
private moves: number = ENEMY_SHIFT_MOVES,
913
) {}
1014

1115
update(time: number, delta: number): void {
1216

1317
this.refreshEnemies(delta);
18+
this.shiftEnemies(delta)
19+
20+
}
21+
22+
private shiftEnemies(delta: number) {
23+
24+
this.shiftTime -= delta;
25+
if (this.shiftTime <= 0) {
26+
this.switchSidesIfRequired();
27+
this.move();
28+
}
29+
30+
}
31+
32+
private switchSidesIfRequired() {
1433

34+
if (this.moves === 0) {
35+
this.left = !this.left;
36+
this.moves = ENEMY_SHIFT_MOVES;
37+
}
38+
39+
}
40+
41+
private move() {
42+
43+
const offset = this.left ? -ENEMY_SHIFT_OFFSET_X : ENEMY_SHIFT_OFFSET_X;
44+
this.enemies.incX(offset);
45+
this.moves--;
46+
this.shiftTime = ENEMY_SHIFT_TIME_MS;
47+
1548
}
1649

1750
private refreshEnemies(delta: number) {
@@ -29,7 +62,7 @@ export class EnemyStateMachine implements StateMachine {
2962

3063
private createEnemies() {
3164

32-
this.enemies.create(100, 300, "enemy");
65+
this.enemies.create(600, 300, "enemy");
3366
this.enemies.create(700, 300, "enemy");
3467

3568
}
@@ -39,11 +72,11 @@ export class EnemyStateMachine implements StateMachine {
3972
enemy: HandleBulletHitArgumentType
4073
) {
4174

42-
bullet.destroy();
43-
4475
const enemySprite = enemy as Phaser.Physics.Arcade.Sprite;
45-
// TODO: play destruction animation
76+
77+
bullet.destroy();
4678
enemySprite.destroy();
79+
4780
}
4881

4982
}

src/states/player.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class PlayerStateMachine implements StateMachine {
2929
private state: PlayerState = PlayerState.Idle
3030
) {}
3131

32-
update(time: number, delta: number): void {
32+
update(_time: number, _delta: number): void {
3333

3434
const next = states[this.state].onUpdate(this.scene, this.player, this.cursors);
3535
if (next !== this.state) {
@@ -45,38 +45,38 @@ export class PlayerStateMachine implements StateMachine {
4545
const states: Record<PlayerState, StateHandlers> = {
4646

4747
"idle": {
48-
onEnter(scene, player) {
48+
onEnter(_scene, player) {
4949
player.anims.stop();
5050
player.setVelocityX(0);
51-
}, onUpdate(scene, player, cursors) {
51+
}, onUpdate(_scene, _player, cursors) {
5252
if (cursors.left.isDown) return PlayerState.MoveLeft;
5353
if (cursors.right.isDown) return PlayerState.MoveRight;
5454
return PlayerState.Idle;
55-
}, onExit(scene) {
55+
}, onExit(_scene) {
5656

5757
}
5858
},
5959

6060
"move-left": {
61-
onEnter(scene, player) {
61+
onEnter(_scene, player) {
6262
player.anims.play("move-left");
6363
player.setVelocityX(-PLAYER_SPEED);
64-
}, onUpdate(scene, player, cursors) {
64+
}, onUpdate(_scene, _player, cursors) {
6565
if (!cursors.left.isDown) return PlayerState.Idle;
6666
return PlayerState.MoveLeft;
67-
}, onExit(scene) {
67+
}, onExit(_scene) {
6868

6969
}
7070
},
7171

7272
"move-right": {
73-
onEnter(scene, player) {
73+
onEnter(_scene, player) {
7474
player.anims.play("move-right");
7575
player.setVelocityX(PLAYER_SPEED);
76-
}, onUpdate(scene, player, cursors) {
76+
}, onUpdate(_scene, _player, cursors) {
7777
if (!cursors.right.isDown) return PlayerState.Idle;
7878
return PlayerState.MoveRight;
79-
}, onExit(scene) {
79+
}, onExit(_scene) {
8080

8181
}
8282
}

src/util/constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,6 @@ export const BULLET_SPEED = -500;
66
export const BULLET_DELAY_MS = 250;
77

88
export const ENEMY_RELOAD_TIME_MS = 500;
9+
export const ENEMY_SHIFT_TIME_MS = 800;
10+
export const ENEMY_SHIFT_OFFSET_X = 10;
11+
export const ENEMY_SHIFT_MOVES = 7;

0 commit comments

Comments
 (0)