From 98fcb325820f357258b2263cb580826cd668fe1f Mon Sep 17 00:00:00 2001 From: Erik Onarheim Date: Fri, 5 Jul 2024 12:16:36 -0500 Subject: [PATCH] fix: Increase strictness on TileMap subtree --- CHANGELOG.md | 1 + karma.conf.js | 3 ++- src/engine/TileMap/IsometricMap.ts | 12 ++++++------ src/engine/TileMap/TileMap.ts | 18 +++++++++--------- src/engine/TileMap/tsconfig.json | 6 ++++++ 5 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 src/engine/TileMap/tsconfig.json diff --git a/CHANGELOG.md b/CHANGELOG.md index bc0cd9d0b..8dda6a05d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,7 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Changed +- Applied increased TS strictness for the TileMap API subtree diff --git a/karma.conf.js b/karma.conf.js index 716ecf677..37562d1b2 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -70,7 +70,8 @@ module.exports = (config) => { // Excalibur logs / console logs suppressed when captureConsole = false; captureConsole: false, jasmine: { - random: true, + random: true, + seed: 98733,// 53435 // 98733 timeoutInterval: 70000 // needs to be bigger than no-activity } }, diff --git a/src/engine/TileMap/IsometricMap.ts b/src/engine/TileMap/IsometricMap.ts index 199a0a062..d0c88dae0 100644 --- a/src/engine/TileMap/IsometricMap.ts +++ b/src/engine/TileMap/IsometricMap.ts @@ -312,7 +312,7 @@ export class IsometricMap extends Entity { public pointer: PointerComponent; - private _composite: CompositeCollider; + private _composite!: CompositeCollider; constructor(options: IsometricMapOptions) { super( @@ -378,10 +378,10 @@ export class IsometricMap extends Entity { }; private _setupPointerToTile() { - this.events.on('pointerup', this._forwardPointerEventToTile('pointerup')); - this.events.on('pointerdown', this._forwardPointerEventToTile('pointerdown')); - this.events.on('pointermove', this._forwardPointerEventToTile('pointermove')); - this.events.on('pointercancel', this._forwardPointerEventToTile('pointercancel')); + this.events.on('pointerup', this._forwardPointerEventToTile('pointerup') as any); + this.events.on('pointerdown', this._forwardPointerEventToTile('pointerdown') as any); + this.events.on('pointermove', this._forwardPointerEventToTile('pointermove') as any); + this.events.on('pointercancel', this._forwardPointerEventToTile('pointercancel') as any); } public update(): void { @@ -403,7 +403,7 @@ export class IsometricMap extends Entity { this._originalOffsets.set(collider, originalOffset); return originalOffset; } else { - return this._originalOffsets.get(collider); + return this._originalOffsets.get(collider) ?? Vector.Zero; } } public updateColliders() { diff --git a/src/engine/TileMap/TileMap.ts b/src/engine/TileMap/TileMap.ts index aca92972d..592ecbb65 100644 --- a/src/engine/TileMap/TileMap.ts +++ b/src/engine/TileMap/TileMap.ts @@ -97,7 +97,7 @@ export const TileMapEvents = { export class TileMap extends Entity { public events = new EventEmitter(); private _token = 0; - private _engine: Engine; + private _engine!: Engine; public logger: Logger = Logger.getInstance(); public readonly tiles: Tile[] = []; @@ -162,7 +162,7 @@ export class TileMap extends Entity { } } - private _oldRotation: number; + private _oldRotation: number = 0; public get rotation(): number { return this.transform?.rotation ?? 0; } @@ -237,7 +237,7 @@ export class TileMap extends Entity { public off(eventName: string, handler: Handler): void; public off(eventName: string): void; public off | string>(eventName: TEventName, handler?: Handler): void { - this.events.off(eventName, handler); + this.events.off(eventName, handler as any); } /** @@ -336,7 +336,7 @@ export class TileMap extends Entity { this._originalOffsets.set(collider, originalOffset); return originalOffset; } else { - return this._originalOffsets.get(collider); + return this._originalOffsets.get(collider) ?? Vector.Zero; } } @@ -348,7 +348,7 @@ export class TileMap extends Entity { this._composite.clearColliders(); const colliders: BoundingBox[] = []; this._composite = this.collider.useCompositeCollider([]); - let current: BoundingBox; + let current: BoundingBox | null = null; /** * Returns wether or not the 2 boxes share an edge and are the same height @@ -535,7 +535,7 @@ export class TileMap extends Entity { const tiles: Tile[] = []; for (let x = tileStartX; x <= tileEndX; x++) { for (let y = tileStartY; y <= tileEndY; y++) { - tiles.push(this.getTile(x, y)); + tiles.push(this.getTile(x, y)!); } } return tiles; @@ -684,9 +684,9 @@ export interface TileOptions { * use transparency to create layers this way. */ export class Tile { - private _bounds: BoundingBox; - private _geometry: BoundingBox; - private _pos: Vector; + private _bounds!: BoundingBox; + private _geometry!: BoundingBox; + private _pos!: Vector; private _posDirty = false; public events = new EventEmitter(); diff --git a/src/engine/TileMap/tsconfig.json b/src/engine/TileMap/tsconfig.json new file mode 100644 index 000000000..20d5e2e03 --- /dev/null +++ b/src/engine/TileMap/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "strict": true + } +}