feat: migrate JavaScript files to TypeScript, enhancing type safety and maintainability across the codebase
This commit is contained in:
parent
3db2bb9160
commit
c582f2004e
107 changed files with 5876 additions and 3588 deletions
68
src/core/TileMap.ts
Normal file
68
src/core/TileMap.ts
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/**
|
||||
* Class representing a grid-based tile map for the game level.
|
||||
*/
|
||||
export class TileMap {
|
||||
cols: number;
|
||||
rows: number;
|
||||
tileSize: number;
|
||||
tiles: number[];
|
||||
|
||||
/**
|
||||
* @param cols - Number of columns
|
||||
* @param rows - Number of rows
|
||||
* @param tileSize - Size of each tile in pixels
|
||||
*/
|
||||
constructor(cols: number, rows: number, tileSize: number) {
|
||||
this.cols = cols;
|
||||
this.rows = rows;
|
||||
this.tileSize = tileSize;
|
||||
this.tiles = new Array(cols * rows).fill(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of a specific tile.
|
||||
* @param col - Tile column
|
||||
* @param row - Tile row
|
||||
* @param value - Tile type value
|
||||
*/
|
||||
setTile(col: number, row: number, value: number): void {
|
||||
if (this.isValid(col, row)) {
|
||||
this.tiles[row * this.cols + col] = value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the type value of a tile. Treats out-of-bounds as solid.
|
||||
* @param col - Tile column
|
||||
* @param row - Tile row
|
||||
* @returns The tile type value
|
||||
*/
|
||||
getTile(col: number, row: number): number {
|
||||
if (this.isValid(col, row)) {
|
||||
return this.tiles[row * this.cols + col];
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a tile coordinate is within the map boundaries.
|
||||
* @param col - Tile column
|
||||
* @param row - Tile row
|
||||
* @returns True if coordinates are valid
|
||||
*/
|
||||
isValid(col: number, row: number): boolean {
|
||||
return col >= 0 && col < this.cols && row >= 0 && row < this.rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a world position (x, y) collides with a solid tile.
|
||||
* @param x - World X coordinate
|
||||
* @param y - World Y coordinate
|
||||
* @returns True if the position is solid
|
||||
*/
|
||||
isSolid(x: number, y: number): boolean {
|
||||
const col = Math.floor(x / this.tileSize);
|
||||
const row = Math.floor(y / this.tileSize);
|
||||
return this.getTile(col, row) !== 0;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue