X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsprite.cpp;h=bb31251a8becf225554b29f1983bab43813eaa2e;hb=157cef71aeb9ae25b7bb90f37dda11bc09329d11;hp=9d03d8392649ac44f5128fd5ff8591653c2f065a;hpb=dc7462af6bf6927497c7249d612895e3b8a1f03e;p=supertux.git diff --git a/src/sprite.cpp b/src/sprite.cpp index 9d03d8392..bb31251a8 100644 --- a/src/sprite.cpp +++ b/src/sprite.cpp @@ -18,8 +18,10 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include +#include #include "globals.h" #include "sprite.h" +#include "setup.h" Sprite::Sprite(lisp_object_t* cur) { @@ -27,22 +29,32 @@ Sprite::Sprite(lisp_object_t* cur) LispReader reader(cur); - reader.read_string("name", &name); + if(!reader.read_string("name", &name)) + st_abort("Sprite wihtout name", ""); reader.read_int("x-hotspot", &x_hotspot); reader.read_int("y-hotspot", &y_hotspot); reader.read_float("fps", &fps); + std::vector images; - reader.read_string_vector("images", &images); - surfaces.resize(images.size()); + if(!reader.read_string_vector("images", &images)) + st_abort("Sprite contains no images: ", name.c_str()); for(std::vector::size_type i = 0; i < images.size(); ++i) { - surfaces[i] = new Surface(datadir + "/images/" + images[i], USE_ALPHA); + surfaces.push_back( + new Surface(datadir + "/images/" + images[i], USE_ALPHA)); } frame_delay = 1000.0f/fps; } +Sprite::~Sprite() +{ + for(std::vector::iterator i = surfaces.begin(); i != surfaces.end(); + ++i) + delete *i; +} + void Sprite::init_defaults() {