excalibur
Version:
Excalibur.js is a simple JavaScript game engine with TypeScript bindings for making 2D games in HTML5 Canvas. Our mission is to make web game development as simple as possible.
168 lines (167 loc) • 4.78 kB
TypeScript
import { ImageSource } from './ImageSource';
import { SourceView, Sprite } from './Sprite';
import { GraphicOptions } from './Graphic';
import { TiledSprite, TiledSpriteOptions } from './TiledSprite';
/**
* Specify sprite sheet spacing options, useful if your sprites are not tightly packed
* and have space between them.
*/
export interface SpriteSheetSpacingDimensions {
/**
* The starting point to offset and start slicing the sprite sheet from the top left of the image.
* Default is (0, 0)
*/
originOffset?: {
x?: number;
y?: number;
};
/**
* The margin between sprites.
* Default is (0, 0)
*/
margin?: {
x?: number;
y?: number;
};
}
/**
* Sprite sheet options for slicing up images
*/
export interface SpriteSheetGridOptions {
/**
* Source image to use for each sprite
*/
image: ImageSource;
/**
* Grid definition for the sprite sheet
*/
grid: {
/**
* Number of rows in the sprite sheet
*/
rows: number;
/**
* Number of columns in the sprite sheet
*/
columns: number;
/**
* Width of each individual sprite
*/
spriteWidth: number;
/**
* Height of each individual sprite
*/
spriteHeight: number;
};
/**
* Optionally specify any spacing information between sprites
*/
spacing?: SpriteSheetSpacingDimensions;
}
export interface SpriteSheetSparseOptions {
/**
* Source image to use for each sprite
*/
image: ImageSource;
/**
* List of source view rectangles to create a sprite sheet from
*/
sourceViews: SourceView[];
}
export interface SpriteSheetOptions {
/**
* Source sprites for the sprite sheet
*/
sprites: Sprite[];
/**
* Optionally specify the number of rows in a sprite sheet (default 1 row)
*/
rows?: number;
/**
* Optionally specify the number of columns in a sprite sheet (default sprites.length)
*/
columns?: number;
}
export interface GetSpriteOptions extends GraphicOptions {
}
/**
* Represents a collection of sprites from a source image with some organization in a grid
*/
export declare class SpriteSheet {
readonly sprites: Sprite[];
readonly rows: number;
readonly columns: number;
/**
* Build a new sprite sheet from a list of sprites
*
* Use {@apilink SpriteSheet.fromImageSource} to create a SpriteSheet from an {@apilink ImageSource} organized in a grid
* @param options
*/
constructor(options: SpriteSheetOptions);
/**
* Find a sprite by their x/y integer coordinates in the SpriteSheet, for example `getSprite(0, 0)` is the {@apilink Sprite} in the top-left
* and `getSprite(1, 0)` is the sprite one to the right.
* @param x
* @param y
*/
getSprite(x: number, y: number, options?: GetSpriteOptions): Sprite;
/**
* Find a sprite by their x/y integer coordinates in the SpriteSheet and configures tiling to repeat by default,
* for example `getTiledSprite(0, 0)` is the {@apilink TiledSprite} in the top-left
* and `getTiledSprite(1, 0)` is the sprite one to the right.
*
* Example:
*
* ```typescript
* spriteSheet.getTiledSprite(1, 0, {
* width: game.screen.width,
* height: 200,
* wrapping: {
* x: ex.ImageWrapping.Repeat,
* y: ex.ImageWrapping.Clamp
* }
* });
* ```
* @param x
* @param y
* @param options
*/
getTiledSprite(x: number, y: number, options?: Partial<Omit<TiledSpriteOptions & GraphicOptions, 'image'>>): TiledSprite;
/**
* Create a sprite sheet from a sparse set of {@apilink SourceView} rectangles
* @param options
*/
static fromImageSourceWithSourceViews(options: SpriteSheetSparseOptions): SpriteSheet;
/**
* Create a SpriteSheet from an {@apilink ImageSource} organized in a grid
*
* Example:
* ```
* const spriteSheet = SpriteSheet.fromImageSource({
* image: imageSource,
* grid: {
* rows: 5,
* columns: 2,
* spriteWidth: 32, // pixels
* spriteHeight: 32 // pixels
* },
* // Optionally specify spacing
* spacing: {
* // pixels from the top left to start the sprite parsing
* originOffset: {
* x: 5,
* y: 5
* },
* // pixels between each sprite while parsing
* margin: {
* x: 1,
* y: 1
* }
* }
* })
* ```
* @param options
*/
static fromImageSource(options: SpriteSheetGridOptions): SpriteSheet;
clone(): SpriteSheet;
}