Example #1
0
// Draw single sprite frame.
// Drawing accounts for: centering, slowdown, advancing Sprite Frame.
void df::Object::draw(){

	// If sprite not defined, don’t continue further.
	if (p_sprite == NULL)
		return;
	
	int index = getSpriteIndex();

	// Ask graphics manager to draw current frame.
	df::GraphicsManager::getInstance().drawFrame(pos, p_sprite->getFrame(index), sprite_center, p_sprite->getColor());
	// If slowdown is 0, then animation is frozen.
	if (getSpriteSlowdown() == 0)
		return;

	// Increment counter.
	int count = getSpriteSlowdownCount();
	count++;

	// Advance sprite index, if appropriate.
	if (count >= getSpriteSlowdown()){
		count = 0;          // Reset counter.
		index++;     // Advance frame.

		// If at last frame, loop to beginning.
		if (index >= p_sprite->getFrameCount())
			index = 0;

		setSpriteIndex(index);         // Set index for next draw().
	}

	setSpriteSlowdownCount(count); // Set counter for next draw().
}
Example #2
0
void Object::draw()
{
	if (isActive())
	{
		auto& gfxMgr = GraphicsManager::getInstance();
		int index = getSpriteIndex();
		int count = getSpriteSlowdownCount();
		gfxMgr.drawFrame(pos, p_sprite->getFrame(index), isCentered(), getTransparency(), p_sprite->getColor());

		if (sprite_slowdown == 0)
		{
			return;
		}
		else
		{
			count++;
			if (count >= sprite_slowdown)
			{
				count = 0;
				++index %= (p_sprite->getFrameCount());
			}
		}

		setSpriteSlowdownCount(count);
		setSpriteIndex(index);
	}

}