diff --git a/package-lock.json b/package-lock.json index cbcc19bdf9..32126ed830 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,35 @@ { "name": "stendhal", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "stendhal", + "version": "1.0.0", + "license": "AGPL-3.0-or-later", + "dependencies": { + "typescript": "^5.1.0" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + } + }, "dependencies": { "typescript": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.3.tgz", - "integrity": "sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==" + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==" } } } diff --git a/package.json b/package.json index cd34a72ff2..1dec9efce7 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,6 @@ "homepage": "https://arianne-project.org", "private": true, "dependencies": { - "typescript": "^4.5.3" + "typescript": "^5.2.0" } } diff --git a/srcjs/stendhal/data/ImageWithDimensions.ts b/srcjs/stendhal/data/ImageWithDimensions.ts new file mode 100644 index 0000000000..3305bf6de8 --- /dev/null +++ b/srcjs/stendhal/data/ImageWithDimensions.ts @@ -0,0 +1,15 @@ +/*************************************************************************** + * (C) Copyright 2023-2023 - Stendhal * + *************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation; either version 3 of the * + * License, or (at your option) any later version. * + * * + ***************************************************************************/ + +export interface ImageWithDimensions { + height: number; + width: number +} \ No newline at end of file diff --git a/srcjs/stendhal/entity/RPEntity.ts b/srcjs/stendhal/entity/RPEntity.ts index 2ae32db26f..e44aa91b0c 100644 --- a/srcjs/stendhal/entity/RPEntity.ts +++ b/srcjs/stendhal/entity/RPEntity.ts @@ -21,6 +21,7 @@ import { EmojiSprite } from "../sprite/EmojiSprite"; import { SpeechBubble } from "../sprite/SpeechBubble"; import { TextSprite } from "../sprite/TextSprite"; import { SoundManager } from "../ui/SoundManager"; +import { ImageWithDimensions } from "data/ImageWithDimensions"; declare var marauroa: any; declare var stendhal: any; @@ -535,7 +536,7 @@ export class RPEntity extends ActiveEntity { * @param {CanvasRenderingContext2D} ctx * @param {Image} image */ - drawSpriteImage(ctx: CanvasRenderingContext2D, image: CanvasImageSource) { + drawSpriteImage(ctx: CanvasRenderingContext2D, image: CanvasImageSource & ImageWithDimensions) { var localX = this["_x"] * 32; var localY = this["_y"] * 32; if (image.height) { // image.complete is true on missing image files diff --git a/srcjs/stendhal/sprite/ImageSprite.ts b/srcjs/stendhal/sprite/ImageSprite.ts index f0fa55250b..3e25d125f2 100644 --- a/srcjs/stendhal/sprite/ImageSprite.ts +++ b/srcjs/stendhal/sprite/ImageSprite.ts @@ -10,6 +10,7 @@ * * ***************************************************************************/ +import { ImageWithDimensions } from "data/ImageWithDimensions"; import { EmptySprite } from "./EmptySprite"; import { Sprite } from "./Sprite"; @@ -24,7 +25,7 @@ import { Sprite } from "./Sprite"; export class ImageSprite implements Sprite { /** The image to be drawn for this sprite. */ - private image: CanvasImageSource; + private image: CanvasImageSource & ImageWithDimensions; /** * The identifier reference. @@ -39,7 +40,7 @@ export class ImageSprite implements Sprite { * @param reference * The sprite reference, or null. */ - public constructor (image: CanvasImageSource | Sprite, reference?: object) { + public constructor (image: CanvasImageSource & ImageWithDimensions | Sprite, reference?: object) { if (image instanceof Sprite) { this.image = ImageSprite.createCompatibleImage(image); } else {