- level.north = true;
- level.east = true;
- level.south = true;
- level.west = true;
-
- reader.read_string("extro-filename", level.extro_filename);
- reader.read_string("map-message", level.display_map_message);
- reader.read_string("goto-world", level.goto_worldmap);
- reader.read_string("level", level.name, true);
- reader.read_int("x", level.x);
- reader.read_int("y", level.y);
- level.swap_x = level.swap_y = -1;
- reader.read_int("swap-x", level.swap_x);
- reader.read_int("swap-y", level.swap_y);
- level.vertical_flip = false;
- reader.read_bool("flip-level", level.vertical_flip);
- level.quit_worldmap = false;
- reader.read_bool("exit-game", level.quit_worldmap);
-
- levels.push_back(level);
+ reader.read_float("x", special_tile.pos.x);
+ reader.read_float("y", special_tile.pos.y);
+
+ special_tile.map_message.erase();
+ reader.read_string("map-message", special_tile.map_message);
+ special_tile.passive_message = false;
+ reader.read_bool("passive-message", special_tile.passive_message);
+
+ special_tile.teleport_dest = Vector(-1,-1);
+ reader.read_float("teleport-to-x", special_tile.teleport_dest.x);
+ reader.read_float("teleport-to-y", special_tile.teleport_dest.y);
+
+ special_tile.invisible = false;
+ reader.read_bool("invisible-tile", special_tile.invisible);
+
+ special_tile.apply_action_north = special_tile.apply_action_south =
+ special_tile.apply_action_east = special_tile.apply_action_west =
+ true;
+
+ std::string apply_direction;
+ reader.read_string("apply-to-direction", apply_direction);
+ if(!apply_direction.empty())
+ {
+ special_tile.apply_action_north = special_tile.apply_action_south =
+ special_tile.apply_action_east = special_tile.apply_action_west =
+ false;
+ if(apply_direction.find("north") != std::string::npos)
+ special_tile.apply_action_north = true;
+ if(apply_direction.find("south") != std::string::npos)
+ special_tile.apply_action_south = true;
+ if(apply_direction.find("east") != std::string::npos)
+ special_tile.apply_action_east = true;
+ if(apply_direction.find("west") != std::string::npos)
+ special_tile.apply_action_west = true;
+ }
+
+ special_tiles.push_back(special_tile);