Files
flame/lib/spritesheet.dart
2019-07-11 17:57:03 -03:00

53 lines
1.3 KiB
Dart

import 'sprite.dart';
import 'animation.dart';
class SpriteSheet {
String imageName;
int textureWidth;
int textureHeight;
int columns;
int rows;
List<List<Sprite>> _sprites;
SpriteSheet({ this.imageName, this.textureWidth, this.textureHeight, this.columns, this.rows }) {
_sprites = List.generate(rows, (y) => List.generate(columns, (x) =>
Sprite(
imageName,
x: (x * textureWidth).toDouble(),
y: (y * textureHeight).toDouble(),
width: textureWidth.toDouble(),
height: textureHeight.toDouble()
))
);
}
Sprite getSprite(int row, int column) {
final Sprite s = _sprites[row][column];
assert(s != null, 'No sprite found for row $row and column $column');
return s;
}
/// Creates an animation from this SpriteSheet
///
/// An [from] and a [to] parameter can be specified to create an animation from a subset of the columns on the row
Animation createAnimation(int row, { double stepTime, loop = true, int from = 0, int to }) {
final spriteRow = _sprites[row];
assert(spriteRow != null, 'There is no row for $row index');
to ??= spriteRow.length;
final spriteList = spriteRow.sublist(from, to);
return Animation.spriteList(
spriteList,
stepTime: stepTime,
loop: loop,
);
}
}