I am working on my first sizable C++ program; a 2-D mario platformer remake.
I currently have an animation class that encapsulates all of the functionality of my animations for all the bad-guys called Animation. Then, I wanted to create the animation class for mario, let's call it MarioAnimation. Mario has an ability, can jump, and is animated at a different rate than my bad-guys, so, I felt it unnecessary to cover all animations with just the Animation class and felt good about my decision because objects would carry unnecessary functions along with them. Thus, I created another Animation class, AbilityAnimation that had functions specific to how a Fireball would be animated. Now, I just finished the basics for my ItemAnimation class. The next step is creating BlockAnimations for the animations of floating blocks and platforms. It's beginning to seem like half of each class is similar but not the same and each has 1-3 entirely unique functions. It's making me feel on-the-fence about my design decision.
Should I go back and try to generalize my Animation function, or is it better to keep my Animation classes specific so as to not carry extra baggage on each object?
Thanks in advance for any advice you may have.