-
Notifications
You must be signed in to change notification settings - Fork 7
/
game.utils.ts
50 lines (46 loc) · 1.36 KB
/
game.utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import { Coordinates, Direction } from './game.model';
export class GameUtils {
public static arePointsEqual(
point1?: Coordinates | null,
point2?: Coordinates | null,
): boolean {
return (
!!point1 && !!point2 && point1.x === point2.x && point1.y === point2.y
);
}
public static directionToCoordinates(direction: Direction): Coordinates {
switch (direction) {
case Direction.Up:
return { x: 0, y: -1 };
case Direction.Down:
return { x: 0, y: 1 };
case Direction.Left:
return { x: -1, y: 0 };
case Direction.Right:
return { x: 1, y: 0 };
}
}
public static areDirectionsOpposite(
direction1: Direction,
direction2: Direction,
): boolean {
return (
(direction1 === Direction.Up && direction2 === Direction.Down) ||
(direction1 === Direction.Down && direction2 === Direction.Up) ||
(direction1 === Direction.Left && direction2 === Direction.Right) ||
(direction1 === Direction.Right && direction2 === Direction.Left)
);
}
public static rotationFromDirection(direction: Direction): `${number}deg` {
switch (direction) {
case Direction.Up:
return `${0}deg`;
case Direction.Right:
return `${90}deg`;
case Direction.Down:
return `${180}deg`;
case Direction.Left:
return `${270}deg`;
}
}
}