Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Copyright (C) 2010 - 2016 by the Battle for Wesnoth Project http://www.wesnoth.org/
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY.
- See the COPYING file for more details.
- */
- #define GETTEXT_DOMAIN "wesnoth-lib"
- #include "gui/dialogs/generator_settings.hpp"
- #include "gui/auxiliary/field.hpp"
- #include "gui/widgets/label.hpp"
- #include "gui/widgets/settings.hpp"
- #include "gui/widgets/slider.hpp"
- #include "gettext.hpp"
- #include "utils/functional.hpp"
- namespace gui2
- {
- static int max_coastal = 5;
- REGISTER_DIALOG(generator_settings)
- tgenerator_settings::tgenerator_settings(generator_data& data)
- : data_(data)
- {
- register_integer("players", true, data_.nplayers);
- register_integer("width", true, data_.width);
- register_integer("height", true, data_.height);
- register_integer("hills_num", true, data_.iterations);
- register_integer("hills_size", true, data_.hill_size);
- register_integer("villages", true, data_.nvillages);
- register_integer("castle_size", true, data_.castle_size);
- register_integer("landform", true, data_.island_size);
- register_bool("connect_castles", true, data_.link_castles);
- register_bool("show_labels", true, data_.show_labels);
- }
- void tgenerator_settings::pre_show(twindow& window)
- {
- auto generic_suffix_getter = [](const std::string& suffix = "")->std::string {
- return suffix;
- };
- auto get_landform_suffix = [&]()->std::string {
- return data_.island_size == 0 ? _("Inland") : (data_.island_size < max_coastal ? _("Coastal") : _("Island"));
- };
- bind_status_label(window, "players", generic_suffix_getter);
- bind_status_label(window, "width", generic_suffix_getter);
- bind_status_label(window, "height", generic_suffix_getter);
- bind_status_label(window, "villages", std::bind(generic_suffix_getter, _("/1000 tiles")));
- bind_status_label(window, "castle_size", generic_suffix_getter);
- bind_status_label(window, "landform", get_landform_suffix);
- }
- void tgenerator_settings::bind_status_label(twindow& window, const std::string& id, std::function<std::string()> suffix_getter)
- {
- tslider& slider = find_widget<tslider>(&window, id, false);
- tlabel& label = find_widget<tlabel>(&window, id + "_label", false);
- label.set_label(std::to_string(slider.get_value()));
- const std::string suffix = suffix_getter();
- connect_signal_notify_modified(slider, std::bind(
- &tgenerator_settings::status_label_callback, this, std::ref(slider), std::ref(label), suffix)
- );
- }
- void tgenerator_settings::status_label_callback(tslider& slider, tlabel& label, const std::string& suffix)
- {
- label.set_label(std::to_string(slider.get_value()) + suffix);
- }
- } // end namespace gui2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement