X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsprite%2Fsprite_data.cpp;h=ca971246f8346f6506e7a47c82d22cf7e784c04a;hb=86181b0a14d89cf45daf97199c3556c4dd1ee7b7;hp=16207ff300b30ceb45c846cf67f01afc4664a0b6;hpb=c0093d25093395cb62fc2526ab42be65a9f015b8;p=supertux.git diff --git a/src/sprite/sprite_data.cpp b/src/sprite/sprite_data.cpp index 16207ff30..ca971246f 100644 --- a/src/sprite/sprite_data.cpp +++ b/src/sprite/sprite_data.cpp @@ -23,11 +23,10 @@ #include #include -#include "sprite_data.h" -#include "app/globals.h" -#include "app/setup.h" -#include "video/drawing_context.h" -#include "lisp/list_iterator.h" +#include "sprite_data.hpp" +#include "resources.hpp" +#include "video/drawing_context.hpp" +#include "lisp/list_iterator.hpp" SpriteData::Action::Action() { @@ -44,20 +43,18 @@ SpriteData::Action::~Action() delete *i; } -SpriteData::SpriteData(const lisp::Lisp* lisp) +SpriteData::SpriteData(const lisp::Lisp* lisp, const std::string& basedir) { lisp::ListIterator iter(lisp); while(iter.next()) { if(iter.item() == "name") { iter.value()->get(name); } else if(iter.item() == "action") { - parse_action(iter.lisp()); + parse_action(iter.lisp(), basedir); } else { std::cerr << "Unknown sprite field: " << iter.item() << "\n"; } } - if(name.empty()) - throw std::runtime_error("Error: Sprite wihtout name."); if(actions.empty()) throw std::runtime_error("Error: Sprite wihtout actions."); } @@ -69,7 +66,7 @@ SpriteData::~SpriteData() } void -SpriteData::parse_action(const lisp::Lisp* lisp) +SpriteData::parse_action(const lisp::Lisp* lisp, const std::string& basedir) { Action* action = new Action; @@ -93,9 +90,8 @@ SpriteData::parse_action(const lisp::Lisp* lisp) } else { for(int i = 0; static_cast(i) < act_tmp->surfaces.size(); i++) { - Surface* surface = new Surface(sdl_surface_from_sdl_surface( - act_tmp->surfaces[i]->impl->get_sdl_surface(), true), true); - surface->apply_filter(HORIZONTAL_FLIP_FILTER); + Surface* surface = new Surface(*(act_tmp->surfaces[i])); + surface->hflip(); action->surfaces.push_back(surface); } } @@ -109,8 +105,7 @@ SpriteData::parse_action(const lisp::Lisp* lisp) } for(std::vector::size_type i = 0; i < images.size(); i++) { - action->surfaces.push_back( - new Surface(datadir + "/images/" + images[i], true)); + action->surfaces.push_back(new Surface(basedir + images[i])); } } actions[action->name] = action;