I just don't quite know how to keep track of time in a program. (whether in an allegro program or in a regular C++ program). The only thing I can think of is using my FPS constant with the allegro timer, making the animation state change every 15 frames or so. Would that be how you would go about tackling that problem?
Use an ALLEGRO_TIMER, and set the the number of seconds between ticks using your FPS variable. You get the number of seconds per tick by taking the reciprocal of your FPS. Then for each timer event you receive, you call Animation::AdvanceFrameTime(seconds_per_tick).
Here is a working Allegro 4 based example of animation :
My post complete with animation example
If you download the zip file from that post you can view the source code I used for it and run the example I provided. The important functions from Animation.cpp are AnimationBase::AdvanceFrameTime, and AnimationBase::SetFrameTime, which I posted on the page I linked to. If you have any questions, feel free to ask. If I have time in the next few days, I may make a short version that works with A5.
Also that map<string , Animation*> in the animationState class, what is that?
It's an array. Similar to std::vector and array
No, it's not an array. At best, it is like a sorted linked list. I gave William Labbett a short explanation of how to use the std::map class here :
std::map explanation, with link to SGI STL documentation