- tilemanager = new_tile_manager;
- if(tilemanager == 0)
- tilemanager = tile_manager;
-
- std::string layer_str;
- if(reader.get("layer", layer_str)) {
- if(layer_str == "background")
- layer = LAYER_BACKGROUNDTILES;
- else if(layer_str == "interactive")
- layer = LAYER_TILES;
- else if(layer_str == "foreground")
- layer = LAYER_FOREGROUNDTILES;
- else
- std::cerr << "Unknown layer '" << layer_str << "' in tilemap.\n";
+ tileset = current_tileset;
+ assert(tileset != NULL);
+
+ reader.get("name", name);
+ reader.get("solid", real_solid);
+ reader.get("speed", speed_x);
+ reader.get("speed-y", speed_y);
+
+ z_pos = reader_get_layer (reader, /* default = */ 0);
+
+ if(real_solid && ((speed_x != 1) || (speed_y != 1))) {
+ log_warning << "Speed of solid tilemap is not 1. fixing" << std::endl;
+ speed_x = 1;
+ speed_y = 1;
+ }
+
+ const lisp::Lisp* pathLisp = reader.get_lisp("path");
+ if (pathLisp) {
+ path.reset(new Path());
+ path->read(*pathLisp);
+ walker.reset(new PathWalker(path.get(), /*running*/false));
+ Vector v = path->get_base();
+ set_offset(v);