diff options
| author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-07-20 20:47:32 -0700 |
|---|---|---|
| committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2023-07-20 20:47:32 -0700 |
| commit | 72c6c7de12e9833f52bf2d0718d70f044f8ab57e (patch) | |
| tree | 152f5f31d59011bb8c617bfbcfc44cc8f47ecad5 /client/lib/components/Sprite.ts | |
| parent | 0fd9fb097552686f2257c1aa689d797e80057bd1 (diff) | |
| download | jumpstorm-72c6c7de12e9833f52bf2d0718d70f044f8ab57e.tar.gz jumpstorm-72c6c7de12e9833f52bf2d0718d70f044f8ab57e.zip | |
a bit of refactoring; importing engine into bun for server
Diffstat (limited to 'client/lib/components/Sprite.ts')
| -rw-r--r-- | client/lib/components/Sprite.ts | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/client/lib/components/Sprite.ts b/client/lib/components/Sprite.ts deleted file mode 100644 index 90e1389..0000000 --- a/client/lib/components/Sprite.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { Component, ComponentNames } from "."; -import type { Dimension2D, DrawArgs, Coord2D } from "../interfaces"; - -export class Sprite extends Component { - private sheet: HTMLImageElement; - - private spriteImgPos: Coord2D; - private spriteImgDimensions: Dimension2D; - - private msPerFrame: number; - private msSinceLastFrame: number; - private currentFrame: number; - private numFrames: number; - - constructor( - sheet: HTMLImageElement, - spriteImgPos: Coord2D, - spriteImgDimensions: Dimension2D, - msPerFrame: number, - numFrames: number - ) { - super(ComponentNames.Sprite); - - this.sheet = sheet; - this.spriteImgPos = spriteImgPos; - this.spriteImgDimensions = spriteImgDimensions; - this.msPerFrame = msPerFrame; - this.numFrames = numFrames; - - this.msSinceLastFrame = 0; - this.currentFrame = 0; - } - - public update(dt: number) { - this.msSinceLastFrame += dt; - if (this.msSinceLastFrame >= this.msPerFrame) { - this.currentFrame = (this.currentFrame + 1) % this.numFrames; - this.msSinceLastFrame = 0; - } - } - - public draw(ctx: CanvasRenderingContext2D, drawArgs: DrawArgs) { - const { center, rotation, tint, opacity } = drawArgs; - - ctx.save(); - ctx.translate(center.x, center.y); - if (rotation != 0) { - ctx.rotate(rotation * (Math.PI / 180)); - } - ctx.translate(-center.x, -center.y); - - if (opacity) { - ctx.globalAlpha = opacity; - } - - ctx.drawImage( - this.sheet, - ...this.getSpriteArgs(), - ...this.getDrawArgs(drawArgs) - ); - - if (tint) { - ctx.globalAlpha = 0.5; - ctx.globalCompositeOperation = "source-atop"; - ctx.fillStyle = tint; - ctx.fillRect(...this.getDrawArgs(drawArgs)); - } - - ctx.restore(); - } - - private getSpriteArgs(): [sx: number, sy: number, sw: number, sh: number] { - return [ - this.spriteImgPos.x + this.currentFrame * this.spriteImgDimensions.width, - this.spriteImgPos.y, - this.spriteImgDimensions.width, - this.spriteImgDimensions.height, - ]; - } - - private getDrawArgs({ - center, - dimension, - }: DrawArgs): [dx: number, dy: number, dw: number, dh: number] { - return [ - center.x - dimension.width / 2, - center.y - dimension.height / 2, - dimension.width, - dimension.height, - ]; - } -} |
