Exemple #1
0
// Adds a range of frames, assuming they are aligned as rectangles in the texture.
// animation:      FrameAnimation to modify
// x:              Column index of the texture rectangle
// [yFirst,yLast]: Bounds for row indices (if yLast < yFirst, add frames in reverse order)
// duration:       Relative duration of current frame (1 by default)
void addFrames(thor::FrameAnimation& animation, int x, int yFirst, int yLast, float duration = 1.f)
{
	const int step = (yFirst < yLast) ? +1 : -1;
	yLast += step; // so yLast is excluded in the range

	for (int y = yFirst; y != yLast; y += step)
		animation.addFrame(duration, sf::IntRect(36*x, 39*y, 36, 39));
}
	void addFrames(thor::FrameAnimation& animation, int y, int xFirst, int xLast, int xSep, int ySep, float duration) {
		if (y == 0)
			y = 0;
		else if (y == 1)
			y = 94;
		else if (y == 2)
			y = 188;

		for (int x = xFirst; x != xLast; x += 1)
			animation.addFrame(duration, sf::IntRect(xSep * x, y, xSep, ySep));
	}
void Player::addFrame(thor::FrameAnimation& animation, int x, int y, float duration)
{
	animation.addFrame(duration, sf::IntRect(16 * x, 16 * y, 16, 16));
}
void Player::addFrameFlipped(thor::FrameAnimation& animation, int x, int y, float duration)
{
	animation.addFrame(duration, sf::IntRect(16 * (x + 1), 16 * y, -16, 16));
}