Meanwhile, I have added a way to connect thor::ActionMap with the existing thor::EventSystem. This makes it possible to connect actions to callbacks without bloating ActionMap's interface. Additionally, the classes of the Time module have been adapted so that they work with sf::Uint32 milliseconds (like sf::Clock).
As announced in my initial post, I have also implemented two classes that should help with building animations. The class Animation stores the frames of an animation and can be used by multiple Animator objects, which compute the progress and apply it to sprites. In principle they work like this:
// Create animation that has three frames with different subrects
// and durations 0.2, 0.4 and 0.1 seconds
thor::Animation explosion;
explosion.AddFrame(0.2f, sf::IntRect(...));
explosion.AddFrame(0.4f, sf::IntRect(...));
explosion.AddFrame(0.1f, sf::IntRect(...));
// Create object that animates a sf::Sprite, register animation
thor::Animator animator;
animator.AddAnimation("explode", explosion);
// Play a registered animation like this
animator.PlayAnimation("explode");
// In main loop: Update animator and apply changes to a sf::Sprite
animator.Update(passedTime);
animator.Apply(mySprite);
This is only a first draft, tell me what you think about it.