config cave_map_generator::create_scenario(const std::vector<std::string>& /*args*/) { map_ = t_translation::t_map(width_ + 2 * gamemap::default_border, t_translation::t_list(height_ + 2 * gamemap::default_border, wall_)); chambers_.clear(); passages_.clear(); res_.clear(); if (const config &settings = cfg_.child("settings")) { res_ = settings; } LOG_NG << "creating scenario....\n"; generate_chambers(); LOG_NG << "placing chambers...\n"; for(std::vector<chamber>::const_iterator c = chambers_.begin(); c != chambers_.end(); ++c) { place_chamber(*c); } LOG_NG << "placing passages...\n"; for(std::vector<passage>::const_iterator p = passages_.begin(); p != passages_.end(); ++p) { place_passage(*p); } LOG_NG << "outputting map....\n"; res_["map_data"] = gamemap::default_map_header + t_translation::write_game_map(map_, starting_positions_); LOG_NG << "returning result...\n"; return res_; }
cave_map_generator::cave_map_generator_job::cave_map_generator_job(const cave_map_generator& pparams, boost::optional<uint32_t> randomseed) : params(pparams) , flipx_(false) , flipy_(false) , map_(t_translation::ter_map(params.width_ + 2 * gamemap::default_border, params.height_ + 2 * gamemap::default_border/*, params.wall_*/)) , starting_positions_() , chamber_ids_() , chambers_() , passages_() , res_(params.cfg_.child_or_empty("settings")) , rng_() //initialises with rand() { res_.add_child("event", config_of ("name", "start") ("message", config_of ("message", "scenario_generation=cave is deprecated and will be removed soon.") ) ); uint32_t seed = randomseed.get_ptr() ? *randomseed.get_ptr() : seed_rng::next_seed(); rng_.seed(seed); LOG_NG << "creating random cave with seed: " << seed << '\n'; flipx_ = int(rng_() % 100) < params.flipx_chance_; flipy_ = int(rng_() % 100) < params.flipy_chance_; LOG_NG << "creating scenario....\n"; generate_chambers(); LOG_NG << "placing chambers...\n"; for(std::vector<chamber>::const_iterator c = chambers_.begin(); c != chambers_.end(); ++c) { place_chamber(*c); } LOG_NG << "placing passages...\n"; for(std::vector<passage>::const_iterator p = passages_.begin(); p != passages_.end(); ++p) { place_passage(*p); } LOG_NG << "outputting map....\n"; res_["map_data"] = t_translation::write_game_map(map_, starting_positions_); }
cave_map_generator::cave_map_generator_job::cave_map_generator_job(const cave_map_generator& pparams, boost::optional<boost::uint32_t> randomseed) : params(pparams) , flipx_(false) , flipy_(false) , map_(t_translation::t_map(params.width_ + 2 * gamemap::default_border, t_translation::t_list(params.height_ + 2 * gamemap::default_border, params.wall_))) , starting_positions_() , chamber_ids_() , chambers_() , passages_() , res_(params.cfg_.child_or_empty("settings")) , rng_() //initialises with rand() { uint32_t seed = randomseed.get_ptr() ? *randomseed.get_ptr() : seed_rng::next_seed(); rng_.seed(seed); std::cerr << "creating random cave with seed:" << seed; flipx_ = int(rng_() % 100) < params.flipx_chance_; flipy_ = int(rng_() % 100) < params.flipy_chance_; LOG_NG << "creating scenario....\n"; generate_chambers(); LOG_NG << "placing chambers...\n"; for(std::vector<chamber>::const_iterator c = chambers_.begin(); c != chambers_.end(); ++c) { place_chamber(*c); } LOG_NG << "placing passages...\n"; for(std::vector<passage>::const_iterator p = passages_.begin(); p != passages_.end(); ++p) { place_passage(*p); } LOG_NG << "outputting map....\n"; config& map = res_.add_child("map"); map["data"] = t_translation::write_game_map(map_, starting_positions_); map["usage"] = "map"; map["border_size"] = gamemap::default_border; }