editor: Remember last map gen choice during same editor session (bug #23431)
This commit is contained in:
parent
a96e0a3659
commit
39c1811235
5 changed files with 24 additions and 1 deletions
|
@ -1,4 +1,7 @@
|
|||
Version 1.13.0+dev:
|
||||
* Editor:
|
||||
* Redesigned Generate Map dialog to use a real listbox and remember the
|
||||
last choice during the same editor session.
|
||||
* Graphics:
|
||||
* New generic portrait for the Walking Corpse and Soulless
|
||||
* Language and i18n:
|
||||
|
|
|
@ -140,6 +140,7 @@ context_manager::context_manager(editor_display& gui, const config& game_config)
|
|||
, game_config_(game_config)
|
||||
, default_dir_(preferences::editor::default_dir())
|
||||
, map_generators_()
|
||||
, last_map_generator_(NULL)
|
||||
, current_context_index_(0)
|
||||
, auto_update_transitions_(preferences::editor::auto_update_transitions())
|
||||
, map_contexts_()
|
||||
|
@ -649,12 +650,14 @@ void context_manager::generate_map_dialog()
|
|||
}
|
||||
gui2::teditor_generate_map dialog;
|
||||
dialog.set_map_generators(map_generators_);
|
||||
dialog.select_map_generator(last_map_generator_);
|
||||
dialog.set_gui(&gui_);
|
||||
dialog.show(gui_.video());
|
||||
if (dialog.get_retval() == gui2::twindow::OK) {
|
||||
std::string map_string;
|
||||
map_generator* const map_generator = dialog.get_selected_map_generator();
|
||||
try {
|
||||
map_string = dialog.get_selected_map_generator()->create_map(dialog.get_seed());
|
||||
map_string = map_generator->create_map(dialog.get_seed());
|
||||
} catch (mapgen_exception& e) {
|
||||
gui2::show_transient_message(gui_.video(), _("Map creation failed."), e.what());
|
||||
return;
|
||||
|
@ -666,6 +669,7 @@ void context_manager::generate_map_dialog()
|
|||
editor_action_whole_map a(new_map);
|
||||
perform_refresh(a);
|
||||
}
|
||||
last_map_generator_ = map_generator;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -284,6 +284,7 @@ private:
|
|||
|
||||
/** Available random map generators */
|
||||
std::vector<map_generator*> map_generators_;
|
||||
map_generator* last_map_generator_;
|
||||
|
||||
int current_context_index_;
|
||||
|
||||
|
|
|
@ -64,6 +64,7 @@ REGISTER_DIALOG(editor_generate_map)
|
|||
|
||||
teditor_generate_map::teditor_generate_map()
|
||||
: map_generators_()
|
||||
, last_map_generator_(NULL)
|
||||
, current_map_generator_(0)
|
||||
, random_seed_()
|
||||
, gui_(NULL)
|
||||
|
@ -97,6 +98,11 @@ map_generator* teditor_generate_map::get_selected_map_generator()
|
|||
return map_generators_[current_map_generator_];
|
||||
}
|
||||
|
||||
void teditor_generate_map::select_map_generator(map_generator* mg)
|
||||
{
|
||||
last_map_generator_ = mg;
|
||||
}
|
||||
|
||||
void teditor_generate_map::pre_show(CVideo& /*video*/, twindow& window)
|
||||
{
|
||||
assert(!map_generators_.empty());
|
||||
|
@ -115,6 +121,10 @@ void teditor_generate_map::pre_show(CVideo& /*video*/, twindow& window)
|
|||
// lrow["generator_id"]["label"] = gen->name();
|
||||
|
||||
list.add_row(lrow);
|
||||
|
||||
if(gen == last_map_generator_) {
|
||||
list.select_row(list.get_item_count() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
list.set_callback_item_change(
|
||||
|
|
|
@ -46,6 +46,8 @@ public:
|
|||
|
||||
map_generator* get_selected_map_generator();
|
||||
|
||||
void select_map_generator(map_generator* mg);
|
||||
|
||||
void set_gui(display* d)
|
||||
{
|
||||
gui_ = d;
|
||||
|
@ -72,6 +74,9 @@ private:
|
|||
/** Available map generators */
|
||||
std::vector<map_generator*> map_generators_;
|
||||
|
||||
/** Last used map generator, must be in map_generators_ */
|
||||
map_generator* last_map_generator_;
|
||||
|
||||
/** Current map generator index */
|
||||
int current_map_generator_;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue