From 683341e42670cd8e92bcd1405c076bea106b1ec3 Mon Sep 17 00:00:00 2001 From: Mark de Wever Date: Wed, 17 Jan 2007 17:50:25 +0000 Subject: [PATCH] Fixed the cavegen to work properly with the new terrain system. --- src/cavegen.cpp | 24 ++++++++++-------------- src/cavegen.hpp | 3 ++- src/terrain_translation.cpp | 1 + src/terrain_translation.hpp | 1 + 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/cavegen.cpp b/src/cavegen.cpp index b10aeb71347..4458b43ef61 100644 --- a/src/cavegen.cpp +++ b/src/cavegen.cpp @@ -24,7 +24,8 @@ cave_map_generator::cave_map_generator(const config* cfg) : wall_(t_translation::CAVE_WALL), clear_(t_translation::CAVE), village_(t_translation::UNDERGROUND_VILLAGE), - castle_(t_translation::DWARVEN_CASTLE), cfg_(cfg), width_(50), height_(50), + castle_(t_translation::DWARVEN_CASTLE), keep_(t_translation::DWARVEN_KEEP), + cfg_(cfg), width_(50), height_(50), village_density_(0), flipx_(false), flipy_(false) { if(cfg_ == NULL) { @@ -44,7 +45,6 @@ cave_map_generator::cave_map_generator(const config* cfg) : wall_(t_translation: LOG_NG << "flipx: " << r << " < " << chance << " = " << (flipx_ ? "true" : "false") << "\n"; flipy_ = (rand()%100) < atoi((*cfg_)["flipy_chance"].c_str()); - } size_t cave_map_generator::translate_x(size_t x) const @@ -104,17 +104,9 @@ config cave_map_generator::create_scenario(const std::vector& /*arg } LOG_NG << "outputting map....\n"; - std::stringstream out; - for(size_t y = 0; y != height_; ++y) { - for(size_t x = 0; x != width_; ++x) { - out << t_translation::write_letter(map_[x][y]); //FIXME MdW, should this be done by the map converter?? - } - - out << "\n"; - } - - res_["map_data"] = out.str(); + res_["map_data"] = t_translation::write_game_map(map_, starting_positions_); + LOG_NG << "returning result...\n"; return res_; @@ -359,8 +351,12 @@ void cave_map_generator::set_terrain(gamemap::location loc, t_translation::t_let void cave_map_generator::place_castle(const std::string& side, gamemap::location loc) { - if(side != "") { - set_terrain(loc, t_translation::read_letter(side, t_translation::T_FORMAT_AUTO)); + const int starting_position = lexical_cast_default(side, -1); + if(starting_position != -1) { + set_terrain(loc, keep_); + + const struct t_translation::coordinate coord = {loc.x, loc.y}; + starting_positions_[starting_position] = coord; } gamemap::location adj[6]; diff --git a/src/cavegen.hpp b/src/cavegen.hpp index 28fc8792109..db74847bb78 100644 --- a/src/cavegen.hpp +++ b/src/cavegen.hpp @@ -60,8 +60,9 @@ private: void set_terrain(gamemap::location loc, t_translation::t_letter t); void place_castle(const std::string& side, gamemap::location loc); - t_translation::t_letter wall_, clear_, village_, castle_; + t_translation::t_letter wall_, clear_, village_, castle_, keep_; t_translation::t_map map_; + std::map starting_positions_; std::map chamber_ids_; std::vector chambers_; diff --git a/src/terrain_translation.cpp b/src/terrain_translation.cpp index 0378d754345..9800a9f9844 100644 --- a/src/terrain_translation.cpp +++ b/src/terrain_translation.cpp @@ -144,6 +144,7 @@ const t_letter CAVE_WALL = string_to_number_("Xu"); const t_letter CAVE = string_to_number_("Uu"); const t_letter UNDERGROUND_VILLAGE = string_to_number_("Vu"); const t_letter DWARVEN_CASTLE = string_to_number_("Cud"); +const t_letter DWARVEN_KEEP = string_to_number_("Kud"); const t_letter PLUS = string_to_number_("+"); const t_letter MINUS = string_to_number_("-"); diff --git a/src/terrain_translation.hpp b/src/terrain_translation.hpp index 380e3ded14c..a1fa44b2071 100644 --- a/src/terrain_translation.hpp +++ b/src/terrain_translation.hpp @@ -94,6 +94,7 @@ namespace t_translation { extern const t_letter CAVE; extern const t_letter UNDERGROUND_VILLAGE; extern const t_letter DWARVEN_CASTLE; + extern const t_letter DWARVEN_KEEP; extern const t_letter PLUS; // + extern const t_letter MINUS; // -