X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftile.cpp;h=68e271e123a634e8116d4001263ce1128be73674;hb=5af97e8b9826798f48b52c8eab6d5c9160cec134;hp=2befbbfb2680d68efab35ee22b952e21e04312bc;hpb=5f32bd40b95fb80990538562d7364422d96f8cfe;p=supertux.git diff --git a/src/tile.cpp b/src/tile.cpp index 2befbbfb2..68e271e12 100644 --- a/src/tile.cpp +++ b/src/tile.cpp @@ -24,18 +24,24 @@ #include #include -#include "lisp/lisp.h" -#include "tile.h" -#include "resources.h" -#include "timer.h" -#include "math/vector.h" -#include "video/drawing_context.h" +#include "lisp/lisp.hpp" +#include "tile.hpp" +#include "resources.hpp" +#include "timer.hpp" +#include "math/vector.hpp" +#include "video/drawing_context.hpp" Tile::Tile() : id(0), editor_image(0), attributes(0), data(0), anim_fps(1) { } +Tile::Tile(unsigned int id_, Uint32 attributes_, const ImageSpec& imagespec) + : id(id_), editor_image(0), attributes(attributes_), data(0), anim_fps(1) +{ + imagespecs.push_back(imagespec); +} + Tile::~Tile() { for(std::vector::iterator i = images.begin(); i != images.end(); @@ -52,7 +58,7 @@ Tile::parse(const lisp::Lisp& reader) throw std::runtime_error("Missing tile-id."); } - bool value; + bool value = false; if(reader.get("solid", value) && value) attributes |= SOLID; if(reader.get("unisolid", value) && value) @@ -90,10 +96,6 @@ Tile::parse(const lisp::Lisp& reader) attributes |= SOLID | SLOPE; } - if (!reader.get("alpha", alpha)) { - alpha = 255; - } - const lisp::Lisp* images = reader.get_lisp("images"); if(images) parse_images(*images); @@ -115,7 +117,7 @@ Tile::parse_images(const lisp::Lisp& images_lisp) const lisp::Lisp* ptr = cur->get_cdr(); std::string file; - float x, y, w, h; + float x = 0, y = 0, w = 0, h = 0; ptr->get_car()->get(file); ptr = ptr->get_cdr(); ptr->get_car()->get(x); ptr = ptr->get_cdr(); ptr->get_car()->get(y); ptr = ptr->get_cdr(); @@ -139,22 +141,20 @@ Tile::load_images(const std::string& tilesetpath) imagespecs.end(); ++i) { const ImageSpec& spec = *i; Surface* surface; - std::string file - = get_resource_filename(tilesetpath + spec.file); + std::string file = tilesetpath + spec.file; if(spec.rect.get_width() <= 0) { - surface = new Surface(file, true); + surface = new Surface(file); } else { surface = new Surface(file, (int) spec.rect.p1.x, (int) spec.rect.p1.y, (int) spec.rect.get_width(), - (int) spec.rect.get_height(), true); + (int) spec.rect.get_height()); } images.push_back(surface); } if(editor_imagefile != "") { - editor_image = new Surface( - get_resource_filename(tilesetpath + editor_imagefile), true); + editor_image = new Surface(tilesetpath + editor_imagefile); } } @@ -172,15 +172,11 @@ Tile::get_editor_image() const void Tile::draw(DrawingContext& context, const Vector& pos, int layer) const { - context.set_alpha(this->alpha); - if(images.size() > 1) { - size_t frame = size_t(global_time * anim_fps) % images.size(); + size_t frame = size_t(game_time * anim_fps) % images.size(); context.draw_surface(images[frame], pos, layer); } else if (images.size() == 1) { context.draw_surface(images[0], pos, layer); } - - context.set_alpha(255); }