1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| class Perso
{
public:
void animate()
{
drawer_->animate(*this);
}
State const & state() const{return *state_;}
private:
Drawer * drawer_;
State * state_;
};
class Drawer
{
public:
Drawer(AnimationHolder * frames)frames_(frames)
void animate(Perso & perso)
{
State const & st =perso.state();
int stateId= st.id()
AnimationHolder ::const_iterator start;
AnimationHolder ::const_iterator end;
frames_.find(st.id(),start,end); // void FrameHolder::find(int, const_iterator &, const_iterator & ) :D
drawFrames(start,end);//affiche toutes les frames ;)
}
private:
void drawFrames(AnimationHolder::const_iterator start,
AnimationHolder::const_iterator end)
{
while(start != end)
{
(*start)->draw(/*paramètres éventuels */);
++it;
}
}
AnimationHolder * frames_;
} |
Partager