Editor Generate Map: hold reference to generator vector instead of copying

This commit is contained in:
Charles Dang 2017-04-30 23:31:49 +11:00
parent 5b6860ec65
commit 7d9b3f44ad
4 changed files with 9 additions and 16 deletions

View file

@ -662,8 +662,7 @@ void context_manager::generate_map_dialog()
return;
}
gui2::dialogs::editor_generate_map dialog;
dialog.set_map_generators(map_generators_);
gui2::dialogs::editor_generate_map dialog(map_generators_);
dialog.select_map_generator(last_map_generator_);
dialog.show(gui_.video());

View file

@ -64,8 +64,8 @@ namespace dialogs
REGISTER_DIALOG(editor_generate_map)
editor_generate_map::editor_generate_map()
: map_generators_()
editor_generate_map::editor_generate_map(std::vector<map_generator*>& mg)
: map_generators_(mg)
, last_map_generator_(nullptr)
, current_map_generator_(0)
, random_seed_()

View file

@ -35,14 +35,9 @@ namespace dialogs
class editor_generate_map : public modal_dialog
{
public:
editor_generate_map();
explicit editor_generate_map(std::vector<map_generator*>& mg);
void set_map_generators(std::vector<map_generator*> mg)
{
map_generators_ = mg;
}
std::vector<map_generator*> get_map_generators()
std::vector<map_generator*>& get_map_generators()
{
return map_generators_;
}
@ -67,7 +62,7 @@ private:
void do_settings();
/** Available map generators */
std::vector<map_generator*> map_generators_;
std::vector<map_generator*>& map_generators_;
/** Last used map generator, must be in map_generators_ */
map_generator* last_map_generator_;

View file

@ -992,9 +992,6 @@ struct dialog_tester<editor_generate_map>
{
editor_generate_map* create()
{
editor_generate_map* result = new editor_generate_map();
BOOST_REQUIRE_MESSAGE(result, "Failed to create a dialog.");
std::vector<map_generator*> map_generators;
for(const config &i : main_config.child_range("multiplayer")) {
if(i["scenario_generation"] == "default") {
@ -1005,7 +1002,9 @@ struct dialog_tester<editor_generate_map>
}
}
}
result->set_map_generators(map_generators);
editor_generate_map* result = new editor_generate_map(map_generators);
BOOST_REQUIRE_MESSAGE(result, "Failed to create a dialog.");
return result;
}