#include"Animation.h"

#include<assert.h>

GLuint AnimStateCurrFrame( AnimState* animState, GLuint* animTex )
{
	return animTex[ animState->currentAnim[ animState->curFrameIndex ].frameNum ];
}

unsigned int AnimStateCurModColor( AnimState* animState )
{
	return animState->currentAnim[ animState->curFrameIndex ].modColor;
}

bool AnimStateUpdate( AnimState* animState, bool shouldLoop )
{
	--animState->curFrameDurationLeft;
	if( animState->curFrameDurationLeft <= 0 ) {
		++animState->curFrameIndex;
		if( animState->currentAnim[ animState->curFrameIndex ].frameNum < 0 ) {
			if( shouldLoop ) {
				animState->curFrameIndex = 0;
			} else {
				return true;
			}
		}

		animState->curFrameDurationLeft = animState->currentAnim[ animState->curFrameIndex ].frameDuration;
	}

	return false;
}

void AnimStateSetAnim( AnimState* animState, AnimFrame* frames )
{
	assert( frames && frames[0].frameNum >= 0 );
	animState->currentAnim = frames;
	animState->curFrameIndex = 0;
	animState->curFrameDurationLeft = frames[ 0 ].frameDuration;
}