X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Ftilemap.cpp;h=59557d162c4a7e3c3d76a2137f018ae0186a9ae2;hb=626ab69641b179048b9d0fc528cd1626886fe9db;hp=4046813b49ba6d14cc1542f31063a971a65dfc45;hpb=b13db6ad342f0c8eaa296c7863938967f46bc408;p=supertux.git diff --git a/src/object/tilemap.cpp b/src/object/tilemap.cpp index 4046813b4..59557d162 100644 --- a/src/object/tilemap.cpp +++ b/src/object/tilemap.cpp @@ -33,10 +33,11 @@ #include "app/globals.h" #include "lisp/lisp.h" #include "lisp/writer.h" +#include "object_factory.h" TileMap::TileMap() : solid(false), speed(1), width(0), height(0), layer(LAYER_TILES), - vertical_flip(false) + drawing_effect(0) { tilemanager = tile_manager; @@ -46,7 +47,7 @@ TileMap::TileMap() TileMap::TileMap(const lisp::Lisp& reader) : solid(false), speed(1), width(0), height(0), layer(LAYER_TILES), - vertical_flip(false) + drawing_effect(0) { tilemanager = tile_manager; @@ -86,7 +87,7 @@ TileMap::TileMap(const lisp::Lisp& reader) TileMap::TileMap(int layer_, bool solid_, size_t width_, size_t height_) : solid(solid_), speed(1), width(0), height(0), layer(layer_), - vertical_flip(false) + drawing_effect(0) { tilemanager = tile_manager; @@ -135,8 +136,8 @@ TileMap::draw(DrawingContext& context) { context.push_transform(); - if(vertical_flip) - context.set_drawing_effect(VERTICAL_FLIP); + if(drawing_effect != 0) + context.set_drawing_effect(drawing_effect); float trans_x = roundf(context.get_translation().x); float trans_y = roundf(context.get_translation().y); context.set_translation(Vector(trans_x * speed, trans_y * speed)); @@ -233,19 +234,6 @@ TileMap::resize(int new_width, int new_height) width = new_width; } -void -TileMap::do_vertical_flip() -{ - // remap tiles vertically flipped - for(int y = 0; y < height / 2; ++y) { - for(int x = 0; x < width; ++x) { - std::swap(tiles[y*width + x], tiles[(((height-1)*width) - (y*width)) + x]); - } - } - - vertical_flip = true; -} - const Tile* TileMap::get_tile(int x, int y) const { @@ -277,3 +265,5 @@ TileMap::change_at(const Vector& pos, uint32_t newtile) { change(int(pos.x)/32, int(pos.y)/32, newtile); } + +IMPLEMENT_FACTORY(TileMap, "tilemap");