X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fsprite%2Fsprite_data.cpp;h=ca971246f8346f6506e7a47c82d22cf7e784c04a;hb=86181b0a14d89cf45daf97199c3556c4dd1ee7b7;hp=a4597e5cf7e8c148b04bdf4061545a2b14d344e9;hpb=5069d8fa90db33fd5f68540eda111f1fcf5f2d25;p=supertux.git diff --git a/src/sprite/sprite_data.cpp b/src/sprite/sprite_data.cpp index a4597e5cf..ca971246f 100644 --- a/src/sprite/sprite_data.cpp +++ b/src/sprite/sprite_data.cpp @@ -43,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."); } @@ -68,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; @@ -92,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); - surface->apply_filter(HORIZONTAL_FLIP_FILTER); + Surface* surface = new Surface(*(act_tmp->surfaces[i])); + surface->hflip(); action->surfaces.push_back(surface); } } @@ -108,7 +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("images/" + images[i], true)); + action->surfaces.push_back(new Surface(basedir + images[i])); } } actions[action->name] = action;