diff --git a/lib/index.d.ts b/lib/index.d.ts index 17c1ae5..ca60682 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -600,9 +600,13 @@ export class Sound { stop(): void; } -interface NumericalEntity {pos: Coordinates, w: number, h: number} +interface NumericalEntityBase {pos: Coordinates} +interface NumericalSprite {w: number, h: number} +interface NumericalTileSprite {tileW: number, tileH: number} -interface NumericalEntityWithHitbox extends NumericalEntity {hitBox: NumericalEntity} +type NumericalEntity = NumericalSprite | NumericalTileSprite + +type NumericalEntityWithHitbox = {hitBox: NumericalEntity} & NumericalEntity export namespace deadInTracks { /** diff --git a/lib/utilities/entity.js b/lib/utilities/entity.js index 67c2aaa..414a7e6 100644 --- a/lib/utilities/entity.js +++ b/lib/utilities/entity.js @@ -31,7 +31,15 @@ function bounds(entity) { } function center(entity) { - const { pos, w, h } = entity; + let pos, w, h; + + // Object.prototype.hasOwnProperty.call is needed because of eslint + if (Object.prototype.hasOwnProperty.call(entity, "tileW") && Object.prototype.hasOwnProperty.call(entity, "tileH")) { + ({pos, w, h} = {pos: entity.pos, w: entity.tileW, h: entity.tileH}); + } else { + ({pos, w, h} = entity); + } + return { x: pos.x + w / 2, y: pos.y + h / 2