]> git.localhorst.tv Git - l2e.git/blobdiff - src/map/Entity.cpp
start/stop animation of player character
[l2e.git] / src / map / Entity.cpp
index 391c711665dc63e7495dedcc6f13cc6470ee2396..302ce5c195ac856ab8aafaaae7befb0b5634b226 100644 (file)
@@ -12,7 +12,7 @@ using geometry::Vector;
 namespace map {
 
 Entity::Entity()
-: sprite(0)
+: animation(0)
 , orientation(ORIENTATION_NORTH)
 , speed(0) {
 
@@ -22,7 +22,7 @@ Entity::Entity()
 void Entity::SetOrientation(Orientation o) {
        orientation = o;
        UpdateVelocity();
-       animation.SetColOffset(orientation);
+       runner.SetColOffset(orientation);
 }
 
 void Entity::SetSpeed(float s) {
@@ -30,6 +30,12 @@ void Entity::SetSpeed(float s) {
        UpdateVelocity();
 }
 
+void Entity::SetAnimation(const graphics::Animation *a) {
+       animation = a;
+       runner.ChangeAnimation(animation);
+}
+
+
 void Entity::UpdateVelocity() {
        if (speed == 0.0f) {
                velocity = Vector<float>();
@@ -67,10 +73,10 @@ void Entity::Update(float deltaT) {
 
 void Entity::Render(SDL_Surface *dest, const Vector<int> &offset) const {
        // TODO: configurable sprite offsets
-       if (animation.Running()) {
-               animation.DrawCenter(dest, offset + position);
+       if (runner.Running()) {
+               runner.DrawCenter(dest, offset + position);
        } else {
-               sprite->DrawCenter(dest, offset + position, orientation);
+               animation->GetSprite()->DrawCenter(dest, offset + position, orientation);
        }
 }