X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftile.cpp;h=0712dcd619cd47fa71a163e3dd273a3bd225bca6;hb=a40453e7f04c072a8054063f1826ff9d7446fe22;hp=6683b02dd23e2d151443758fb4a54c8d6a8a7f12;hpb=d8496f30a608d6827fefdfe33234acb6f4d8f0fe;p=supertux.git diff --git a/src/tile.cpp b/src/tile.cpp index 6683b02dd..0712dcd61 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) @@ -63,8 +69,8 @@ Tile::parse(const lisp::Lisp& reader) attributes |= ICE; if(reader.get("water", value) && value) attributes |= WATER; - if(reader.get("spike", value) && value) - attributes |= SPIKE; + if(reader.get("hurts", value) && value) + attributes |= HURTS; if(reader.get("fullbox", value) && value) attributes |= FULLBOX; if(reader.get("coin", value) && value) @@ -89,7 +95,7 @@ Tile::parse(const lisp::Lisp& reader) if(reader.get("slope-type", data)) { attributes |= SOLID | SLOPE; } - + const lisp::Lisp* images = reader.get_lisp("images"); if(images) parse_images(*images); @@ -111,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(); @@ -135,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(tilespath + editor_imagefile), true); + editor_image = new Surface(tilesetpath + editor_imagefile); } } @@ -169,7 +173,7 @@ void Tile::draw(DrawingContext& context, const Vector& pos, int layer) const { 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);