labyrinth-game-logic
Version:
A libary that implements the boardgame labyrinth and exposes the functionality to create and interact with games
41 lines (33 loc) • 1 kB
text/typescript
/**
* @author Timo Lehnertz
*/
import { Vec2 } from "./Vec2";
/**
* Immutable BoardPosition class representing a location on the board
* (0|0) is in the top left corner (Northwest)
*/
export class BoardPosition extends Vec2 {
public isInBounds(width: number, height: number): boolean {
return this.x >= 0 && this.y >= 0 && this.x < width && this.y < height;
}
public isEdge(width: number, height: number): boolean {
return (
this.x === 0 ||
this.y === 0 ||
this.x === width - 1 ||
this.y === height - 1
);
}
public add(b: Vec2): BoardPosition {
return new BoardPosition(this.x + b.x, this.y + b.y);
}
public static create(instance: BoardPosition): BoardPosition {
return new BoardPosition(instance.x, instance.y);
}
public setX(x: number): BoardPosition {
return new BoardPosition(x, this.y);
}
public setY(y: number): BoardPosition {
return new BoardPosition(this.x, y);
}
}