Fix for coverity #29401
[supertux.git] / src / object / moving_sprite.cpp
index 4f06e07..0a25d2f 100644 (file)
 #include "sprite/sprite_manager.hpp"
 #include "util/reader.hpp"
 
-MovingSprite::MovingSprite(const Vector& pos, const std::string& sprite_name, 
-                           int layer, CollisionGroup collision_group) :
-  sprite_name(sprite_name), 
+#include <stdexcept>
+
+MovingSprite::MovingSprite(const Vector& pos, const std::string& sprite_name_,
+                           int layer_, CollisionGroup collision_group) :
+  sprite_name(sprite_name_),
   sprite(),
-  layer(layer)
+  layer(layer_)
 {
   bbox.set_pos(pos);
-  sprite = sprite_manager->create(sprite_name);
+  sprite = SpriteManager::current()->create(sprite_name);
   bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
   set_group(collision_group);
 }
 
-MovingSprite::MovingSprite(const Reader& reader, const Vector& pos, int layer, CollisionGroup collision_group) :
-  sprite_name(), 
+MovingSprite::MovingSprite(const Reader& reader, const Vector& pos, int layer_, CollisionGroup collision_group) :
+  sprite_name(),
   sprite(),
-  layer(layer)
+  layer(layer_)
 {
   bbox.set_pos(pos);
   if (!reader.get("sprite", sprite_name))
     throw std::runtime_error("no sprite name set");
 
-  sprite = sprite_manager->create(sprite_name);
+  sprite = SpriteManager::current()->create(sprite_name);
   bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
   set_group(collision_group);
 }
 
-MovingSprite::MovingSprite(const Reader& reader, const std::string& sprite_name, int layer, CollisionGroup collision_group) :
-  sprite_name(sprite_name), 
+MovingSprite::MovingSprite(const Reader& reader, const std::string& sprite_name_, int layer_, CollisionGroup collision_group) :
+  sprite_name(sprite_name_),
   sprite(),
-  layer(layer)
+  layer(layer_)
 {
   reader.get("x", bbox.p1.x);
   reader.get("y", bbox.p1.y);
   reader.get("sprite", this->sprite_name);
 
-  sprite = sprite_manager->create(this->sprite_name);
+  sprite = SpriteManager::current()->create(this->sprite_name);
   bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
   set_group(collision_group);
 }
 
-MovingSprite::MovingSprite(const Reader& reader, int layer, CollisionGroup collision_group) :
+MovingSprite::MovingSprite(const Reader& reader, int layer_, CollisionGroup collision_group) :
   sprite_name(),
   sprite(),
-  layer(layer)
+  layer(layer_)
 {
   reader.get("x", bbox.p1.x);
   reader.get("y", bbox.p1.y);
   if (!reader.get("sprite", sprite_name))
     throw std::runtime_error("no sprite name set");
 
-  sprite = sprite_manager->create(sprite_name);
+  sprite = SpriteManager::current()->create(sprite_name);
   bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
   set_group(collision_group);
 }
 
 MovingSprite::MovingSprite(const MovingSprite& other) :
-  MovingObject(other), 
+  MovingObject(other),
   sprite_name(),
-  sprite(),
+  sprite(other.sprite->clone()),
   layer(other.layer)
 {
-  sprite = other.sprite->clone();
 }
 /*
   MovingSprite&
@@ -122,10 +123,10 @@ MovingSprite::set_action(const std::string& action, int loops)
 void
 MovingSprite::set_action_centered(const std::string& action, int loops)
 {
-  Vector old_size = bbox.get_size();
+  Vector old_size = bbox.get_size().as_vector();
   sprite->set_action(action, loops);
   set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
-  set_pos(get_pos() - (bbox.get_size() - old_size) / 2);
+  set_pos(get_pos() - (bbox.get_size().as_vector() - old_size) / 2);
 }
 
 void