aboutsummaryrefslogtreecommitdiff
path: root/client/lib/components/Sprite.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-07-20 20:47:32 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-07-20 20:47:32 -0700
commit72c6c7de12e9833f52bf2d0718d70f044f8ab57e (patch)
tree152f5f31d59011bb8c617bfbcfc44cc8f47ecad5 /client/lib/components/Sprite.ts
parent0fd9fb097552686f2257c1aa689d797e80057bd1 (diff)
downloadjumpstorm-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.ts92
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,
- ];
- }
-}