#ifndef ANIMATION_HPP #define ANIMATION_HPP #include #include #include #include #include #include enum class AnimationState { STILL, IDLE, MOVING, JUMPING, CROUCHING, FALLING, }; class Animation { private: std::unordered_map> frame_animations_; AnimationState current_animation_; int current_index_=0; public: Animation(); void pushFrame(AnimationState state, const std::string &texture_path); yage::Texture currentFrame() const; void start(AnimationState state); void nextFrame(); template void initializeAnimation(AnimationState state, First &&first, Second &&second, Rest &&...rest) { frame_animations_[state].push_back(yage::ResourceManager::getTexture(std::forward(first))); initializeAnimation(std::forward(second), std::forward(rest)...); } template void initializeAnimation(AnimationState state, Last &&last) { frame_animations_[state].push_back(yage::ResourceManager::getTexture(std::forward(last))); } }; #endif