mirror of
https://github.com/wesnoth/wesnoth
synced 2025-05-10 17:52:00 +00:00
Mp Create: further progress, including adding a page for custom Options
This commit is contained in:
parent
d83acc004a
commit
62a299d1eb
@ -100,20 +100,11 @@
|
|||||||
|
|
||||||
border = "all"
|
border = "all"
|
||||||
border_size = 5
|
border_size = 5
|
||||||
horizontal_alignment = "left"
|
horizontal_grow = "true"
|
||||||
|
|
||||||
[combobox]
|
[combobox]
|
||||||
id = "era"
|
id = "eras"
|
||||||
definition = "default"
|
definition = "default"
|
||||||
|
|
||||||
# TODO: don't hardcode
|
|
||||||
[option]
|
|
||||||
label = "Default"
|
|
||||||
[/option]
|
|
||||||
|
|
||||||
[option]
|
|
||||||
label = "Era of Heroes"
|
|
||||||
[/option]
|
|
||||||
[/combobox]
|
[/combobox]
|
||||||
|
|
||||||
[/column]
|
[/column]
|
||||||
@ -144,7 +135,7 @@
|
|||||||
|
|
||||||
border = "all"
|
border = "all"
|
||||||
border_size = 5
|
border_size = 5
|
||||||
horizontal_alignment = "left"
|
horizontal_grow = "true"
|
||||||
|
|
||||||
[combobox]
|
[combobox]
|
||||||
id = "era"
|
id = "era"
|
||||||
@ -171,6 +162,14 @@
|
|||||||
|
|
||||||
[/column]
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 0
|
||||||
|
|
||||||
|
[spacer]
|
||||||
|
width = 40
|
||||||
|
[/spacer]
|
||||||
|
[/column]
|
||||||
|
|
||||||
[column]
|
[column]
|
||||||
grow_factor = 0
|
grow_factor = 0
|
||||||
horizontal_grow = "true"
|
horizontal_grow = "true"
|
||||||
@ -236,8 +235,8 @@
|
|||||||
|
|
||||||
[column]
|
[column]
|
||||||
grow_factor = 1
|
grow_factor = 1
|
||||||
horizontal_grow = "true"
|
horizontal_alignment = "left"
|
||||||
border = "all"
|
border = "top,bottom,right"
|
||||||
border_size = 5
|
border_size = 5
|
||||||
|
|
||||||
[label]
|
[label]
|
||||||
@ -247,6 +246,14 @@
|
|||||||
|
|
||||||
[/column]
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 0
|
||||||
|
|
||||||
|
[spacer]
|
||||||
|
width = 10
|
||||||
|
[/spacer]
|
||||||
|
[/column]
|
||||||
|
|
||||||
[/row]
|
[/row]
|
||||||
|
|
||||||
[/grid]
|
[/grid]
|
||||||
@ -273,6 +280,249 @@
|
|||||||
|
|
||||||
#enddef
|
#enddef
|
||||||
|
|
||||||
|
#define _GUI_MP_CREATE_OPTIONS_PANEL
|
||||||
|
[row]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_grow = "true"
|
||||||
|
vertical_grow = "true"
|
||||||
|
|
||||||
|
[tree_view]
|
||||||
|
id = "custom_options"
|
||||||
|
definition = "default"
|
||||||
|
|
||||||
|
horizontal_scrollbar_mode = "never"
|
||||||
|
#vertical_scrollbar_mode = "auto"
|
||||||
|
|
||||||
|
indention_step_size = 25
|
||||||
|
|
||||||
|
[node]
|
||||||
|
id = "option_node"
|
||||||
|
unfolded = true
|
||||||
|
|
||||||
|
[node_definition]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
|
||||||
|
[toggle_button]
|
||||||
|
id = "tree_view_node_icon"
|
||||||
|
definition = "tree_view_node"
|
||||||
|
[/toggle_button]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_grow = "true"
|
||||||
|
|
||||||
|
[label]
|
||||||
|
id = "tree_view_node_label"
|
||||||
|
[/label]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[/node_definition]
|
||||||
|
|
||||||
|
[/node]
|
||||||
|
|
||||||
|
[node]
|
||||||
|
id = "option_checkbox_node"
|
||||||
|
unfolded = true
|
||||||
|
|
||||||
|
[node_definition]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_alignment = "left"
|
||||||
|
|
||||||
|
[toggle_button]
|
||||||
|
id = "option_checkbox"
|
||||||
|
definition = "default"
|
||||||
|
[/toggle_button]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[/node_definition]
|
||||||
|
|
||||||
|
[/node]
|
||||||
|
|
||||||
|
[node]
|
||||||
|
id = "option_combobox_node"
|
||||||
|
unfolded = true
|
||||||
|
|
||||||
|
[node_definition]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
|
||||||
|
[label]
|
||||||
|
id = "combobox_label"
|
||||||
|
linked_group = "custom_options_labels"
|
||||||
|
[/label]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_grow = "true"
|
||||||
|
|
||||||
|
[combobox]
|
||||||
|
id = "option_combobox"
|
||||||
|
[/combobox]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[/node_definition]
|
||||||
|
|
||||||
|
[/node]
|
||||||
|
|
||||||
|
[node]
|
||||||
|
id = "option_slider_node"
|
||||||
|
unfolded = true
|
||||||
|
|
||||||
|
[node_definition]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
|
||||||
|
[label]
|
||||||
|
id = "slider_label"
|
||||||
|
linked_group = "custom_options_labels"
|
||||||
|
[/label]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_grow = "true"
|
||||||
|
|
||||||
|
[slider]
|
||||||
|
id = "option_slider"
|
||||||
|
definition = "default"
|
||||||
|
[/slider]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[/node_definition]
|
||||||
|
|
||||||
|
[/node]
|
||||||
|
|
||||||
|
[node]
|
||||||
|
id = "option_text_entry_node"
|
||||||
|
unfolded = true
|
||||||
|
|
||||||
|
[node_definition]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
|
||||||
|
[label]
|
||||||
|
id = "text_entry_label"
|
||||||
|
linked_group = "custom_options_labels"
|
||||||
|
[/label]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
|
||||||
|
horizontal_grow = "true"
|
||||||
|
|
||||||
|
[text_box]
|
||||||
|
id = "option_text_entry"
|
||||||
|
definition = "default"
|
||||||
|
[/text_box]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[/node_definition]
|
||||||
|
|
||||||
|
[/node]
|
||||||
|
|
||||||
|
[node]
|
||||||
|
id = "options_default_button"
|
||||||
|
unfolded = true
|
||||||
|
|
||||||
|
[node_definition]
|
||||||
|
[row]
|
||||||
|
grow_factor = 0
|
||||||
|
|
||||||
|
[column]
|
||||||
|
|
||||||
|
[spacer]
|
||||||
|
height = 10
|
||||||
|
[/spacer]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
grow_factor = 1
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_alignment = "right"
|
||||||
|
|
||||||
|
[button]
|
||||||
|
id = "reset_option_values"
|
||||||
|
definition = "default"
|
||||||
|
|
||||||
|
label = _ "Defaults"
|
||||||
|
[/button]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
|
[/node_definition]
|
||||||
|
|
||||||
|
[/node]
|
||||||
|
|
||||||
|
[/tree_view]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
#enddef
|
||||||
|
|
||||||
#define _GUI_MP_CREATE_SETTING_PANEL
|
#define _GUI_MP_CREATE_SETTING_PANEL
|
||||||
[row]
|
[row]
|
||||||
grow_factor = 0
|
grow_factor = 0
|
||||||
@ -513,6 +763,11 @@
|
|||||||
fixed_width = "true"
|
fixed_width = "true"
|
||||||
[/linked_group]
|
[/linked_group]
|
||||||
|
|
||||||
|
[linked_group]
|
||||||
|
id = "custom_options_labels"
|
||||||
|
fixed_width = "true"
|
||||||
|
[/linked_group]
|
||||||
|
|
||||||
[tooltip]
|
[tooltip]
|
||||||
id = "tooltip"
|
id = "tooltip"
|
||||||
[/tooltip]
|
[/tooltip]
|
||||||
@ -765,27 +1020,6 @@
|
|||||||
[row]
|
[row]
|
||||||
grow_factor = 1
|
grow_factor = 1
|
||||||
|
|
||||||
[column]
|
|
||||||
grow_factor = 0
|
|
||||||
vertical_alignment = "bottom"
|
|
||||||
|
|
||||||
border = "all"
|
|
||||||
border_size = 5
|
|
||||||
horizontal_alignment = "left"
|
|
||||||
[button]
|
|
||||||
id = "password"
|
|
||||||
definition = "default"
|
|
||||||
|
|
||||||
label = _ "Set Password"
|
|
||||||
[/button]
|
|
||||||
|
|
||||||
[/column]
|
|
||||||
|
|
||||||
[/row]
|
|
||||||
|
|
||||||
[row]
|
|
||||||
grow_factor = 0
|
|
||||||
|
|
||||||
[column]
|
[column]
|
||||||
grow_factor = 0
|
grow_factor = 0
|
||||||
|
|
||||||
@ -1122,6 +1356,38 @@
|
|||||||
|
|
||||||
[/row]
|
[/row]
|
||||||
|
|
||||||
|
[row]
|
||||||
|
grow_factor = 0
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 0
|
||||||
|
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_alignment = "left"
|
||||||
|
[label]
|
||||||
|
definition = "default"
|
||||||
|
|
||||||
|
label = _ "Password:"
|
||||||
|
[/label]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[column]
|
||||||
|
grow_factor = 1
|
||||||
|
|
||||||
|
border = "all"
|
||||||
|
border_size = 5
|
||||||
|
horizontal_alignment = "left"
|
||||||
|
[text_box]
|
||||||
|
id = "game_password"
|
||||||
|
definition = "default"
|
||||||
|
[/text_box]
|
||||||
|
|
||||||
|
[/column]
|
||||||
|
|
||||||
|
[/row]
|
||||||
|
|
||||||
[/grid]
|
[/grid]
|
||||||
|
|
||||||
[/column]
|
[/column]
|
||||||
@ -1230,6 +1496,10 @@
|
|||||||
{_GUI_MP_CREATE_GENERAL_PANEL}
|
{_GUI_MP_CREATE_GENERAL_PANEL}
|
||||||
[/layer]
|
[/layer]
|
||||||
|
|
||||||
|
[layer]
|
||||||
|
{_GUI_MP_CREATE_OPTIONS_PANEL}
|
||||||
|
[/layer]
|
||||||
|
|
||||||
[layer]
|
[layer]
|
||||||
{_GUI_MP_CREATE_SETTING_PANEL}
|
{_GUI_MP_CREATE_SETTING_PANEL}
|
||||||
[/layer]
|
[/layer]
|
||||||
@ -1276,7 +1546,7 @@
|
|||||||
horizontal_alignment = "right"
|
horizontal_alignment = "right"
|
||||||
[button]
|
[button]
|
||||||
id = "ok"
|
id = "ok"
|
||||||
definition = "default"
|
definition = "large"
|
||||||
|
|
||||||
label = _ "Create Game"
|
label = _ "Create Game"
|
||||||
[/button]
|
[/button]
|
||||||
@ -1291,7 +1561,7 @@
|
|||||||
horizontal_alignment = "left"
|
horizontal_alignment = "left"
|
||||||
[button]
|
[button]
|
||||||
id = "cancel"
|
id = "cancel"
|
||||||
definition = "default"
|
definition = "large"
|
||||||
|
|
||||||
label = _ "Cancel"
|
label = _ "Cancel"
|
||||||
[/button]
|
[/button]
|
||||||
@ -1313,6 +1583,8 @@
|
|||||||
[/window]
|
[/window]
|
||||||
|
|
||||||
#undef _GUI_MP_CREATE_OPTION_SLIDER
|
#undef _GUI_MP_CREATE_OPTION_SLIDER
|
||||||
|
#undef _GUI_MP_CREATE_GENERAL_PANEL
|
||||||
|
#undef _GUI_MP_CREATE_OPTIONS_PANEL
|
||||||
#undef _GUI_MP_CREATE_SETTING_PANEL
|
#undef _GUI_MP_CREATE_SETTING_PANEL
|
||||||
#undef _GUI_MP_CREATE_TAB_BAR
|
#undef _GUI_MP_CREATE_TAB_BAR
|
||||||
#undef _GUI_MP_CREATE_TAB_PADDING
|
#undef _GUI_MP_CREATE_TAB_PADDING
|
||||||
|
@ -16,14 +16,14 @@
|
|||||||
|
|
||||||
#include "gui/dialogs/multiplayer/mp_create_game.hpp"
|
#include "gui/dialogs/multiplayer/mp_create_game.hpp"
|
||||||
|
|
||||||
#include <boost/multi_index_container.hpp>
|
|
||||||
// ^ This is apparently unnecessary, but if removed it doesn't compile...
|
|
||||||
|
|
||||||
#include "game_preferences.hpp"
|
#include "game_preferences.hpp"
|
||||||
#include "gettext.hpp"
|
#include "gettext.hpp"
|
||||||
#include "gui/auxiliary/field.hpp"
|
#include "gui/auxiliary/field.hpp"
|
||||||
#include "gui/dialogs/helper.hpp"
|
#include "gui/dialogs/helper.hpp"
|
||||||
|
#include "gui/dialogs/transient_message.hpp"
|
||||||
#include "gui/widgets/integer_selector.hpp"
|
#include "gui/widgets/integer_selector.hpp"
|
||||||
|
#include "gui/widgets/button.hpp"
|
||||||
|
#include "gui/widgets/combobox.hpp"
|
||||||
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
||||||
#include "gui/widgets/list.hpp"
|
#include "gui/widgets/list.hpp"
|
||||||
#else
|
#else
|
||||||
@ -31,7 +31,12 @@
|
|||||||
#endif
|
#endif
|
||||||
#include "gui/widgets/minimap.hpp"
|
#include "gui/widgets/minimap.hpp"
|
||||||
#include "gui/widgets/settings.hpp"
|
#include "gui/widgets/settings.hpp"
|
||||||
|
#include "gui/widgets/slider.hpp"
|
||||||
#include "gui/widgets/stacked_widget.hpp"
|
#include "gui/widgets/stacked_widget.hpp"
|
||||||
|
#include "gui/widgets/toggle_button.hpp"
|
||||||
|
#include "gui/widgets/text_box.hpp"
|
||||||
|
#include "gui/widgets/tree_view.hpp"
|
||||||
|
#include "gui/widgets/tree_view_node.hpp"
|
||||||
#include "settings.hpp"
|
#include "settings.hpp"
|
||||||
|
|
||||||
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
||||||
@ -55,8 +60,7 @@ tmp_create_game::tmp_create_game(const config& cfg, ng::create_engine& eng)
|
|||||||
dialog_callback<tmp_create_game,
|
dialog_callback<tmp_create_game,
|
||||||
&tmp_create_game::update_map_settings>))
|
&tmp_create_game::update_map_settings>))
|
||||||
, fog_(register_bool("fog", true, preferences::fog, preferences::set_fog))
|
, fog_(register_bool("fog", true, preferences::fog, preferences::set_fog))
|
||||||
, shroud_(register_bool(
|
, shroud_(register_bool("shroud", true, preferences::shroud, preferences::set_shroud))
|
||||||
"shroud", true, preferences::shroud, preferences::set_shroud))
|
|
||||||
, start_time_(register_bool("random_start_time",
|
, start_time_(register_bool("random_start_time",
|
||||||
true,
|
true,
|
||||||
preferences::random_start_time,
|
preferences::random_start_time,
|
||||||
@ -75,6 +79,7 @@ tmp_create_game::tmp_create_game(const config& cfg, ng::create_engine& eng)
|
|||||||
true,
|
true,
|
||||||
preferences::xp_modifier,
|
preferences::xp_modifier,
|
||||||
preferences::set_xp_modifier))
|
preferences::set_xp_modifier))
|
||||||
|
//, options_manager_()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,8 +91,7 @@ void tmp_create_game::pre_show(twindow& window)
|
|||||||
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
#ifdef GUI2_EXPERIMENTAL_LISTBOX
|
||||||
connect_signal_notify_modified(list,
|
connect_signal_notify_modified(list,
|
||||||
std::bind(&tmp_create_game::update_map,
|
std::bind(&tmp_create_game::update_map,
|
||||||
*this,
|
*this, std::ref(window)));
|
||||||
std::ref(window)));
|
|
||||||
#else
|
#else
|
||||||
list.set_callback_value_change(
|
list.set_callback_value_change(
|
||||||
dialog_callback<tmp_create_game, &tmp_create_game::update_map>);
|
dialog_callback<tmp_create_game, &tmp_create_game::update_map>);
|
||||||
@ -137,10 +141,24 @@ void tmp_create_game::pre_show(twindow& window)
|
|||||||
|
|
||||||
update_map_settings(window);
|
update_map_settings(window);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set up eras combobox
|
||||||
|
//
|
||||||
|
|
||||||
|
const std::vector<std::string>& era_names = engine_.extras_menu_item_names(ng::create_engine::ERA, false);
|
||||||
|
if(era_names.empty()) {
|
||||||
|
gui2::show_transient_message(window.video(), "", _("No eras found."));
|
||||||
|
throw config::error(_("No eras found"));
|
||||||
|
}
|
||||||
|
|
||||||
|
find_widget<tcombobox>(&window, "eras", false).set_values(era_names);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set up mods list
|
||||||
|
//
|
||||||
tlistbox& mod_list = find_widget<tlistbox>(&window, "mod_list", false);
|
tlistbox& mod_list = find_widget<tlistbox>(&window, "mod_list", false);
|
||||||
|
|
||||||
//std::vector<std::string> mods = engine_.extras_menu_item_names(ng::create_engine::MOD);
|
//std::vector<std::string> mods = engine_.extras_menu_item_names(ng::create_engine::MOD, false);
|
||||||
|
|
||||||
for(const auto& mod : engine_.get_const_extras_by_type(ng::create_engine::MOD)) {
|
for(const auto& mod : engine_.get_const_extras_by_type(ng::create_engine::MOD)) {
|
||||||
std::map<std::string, string_map> data;
|
std::map<std::string, string_map> data;
|
||||||
string_map item;
|
string_map item;
|
||||||
@ -170,6 +188,9 @@ void tmp_create_game::pre_show(twindow& window)
|
|||||||
list_data["tab_label"]["label"] = _("General");
|
list_data["tab_label"]["label"] = _("General");
|
||||||
tab_bar.add_row(list_data);
|
tab_bar.add_row(list_data);
|
||||||
|
|
||||||
|
list_data["tab_label"]["label"] = _("Custom Options");
|
||||||
|
tab_bar.add_row(list_data);
|
||||||
|
|
||||||
list_data["tab_label"]["label"] = _("Game Settings");
|
list_data["tab_label"]["label"] = _("Game Settings");
|
||||||
tab_bar.add_row(list_data);
|
tab_bar.add_row(list_data);
|
||||||
|
|
||||||
@ -185,6 +206,11 @@ void tmp_create_game::on_tab_select(twindow& window)
|
|||||||
const int i = find_widget<tlistbox>(&window, "tab_bar", false).get_selected_row();
|
const int i = find_widget<tlistbox>(&window, "tab_bar", false).get_selected_row();
|
||||||
|
|
||||||
find_widget<tstacked_widget>(&window, "pager", false).select_layer(i);
|
find_widget<tstacked_widget>(&window, "pager", false).select_layer(i);
|
||||||
|
|
||||||
|
// TODO: don't hardcode
|
||||||
|
if(i == 1) {
|
||||||
|
update_options_list(window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tmp_create_game::post_show(twindow& window)
|
void tmp_create_game::post_show(twindow& window)
|
||||||
@ -194,6 +220,97 @@ void tmp_create_game::post_show(twindow& window)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tmp_create_game::update_options_list(twindow& window)
|
||||||
|
{
|
||||||
|
const int index = find_widget<tlistbox>(&window, "map_list", false)
|
||||||
|
.get_selected_row();
|
||||||
|
|
||||||
|
scenario_ = &cfg_.child("multiplayer", index);
|
||||||
|
|
||||||
|
ttree_view& options_tree = find_widget<ttree_view>(&window, "custom_options", false);
|
||||||
|
|
||||||
|
//options_tree.clear();
|
||||||
|
|
||||||
|
for(const auto& options : scenario_->child_range("options")) {
|
||||||
|
std::map<std::string, string_map> data;
|
||||||
|
string_map item;
|
||||||
|
|
||||||
|
item["label"] = (*scenario_)["name"];
|
||||||
|
data["tree_view_node_label"] = item;
|
||||||
|
|
||||||
|
ttree_view_node& option_node = options_tree.add_node("option_node", data);
|
||||||
|
|
||||||
|
data.clear();
|
||||||
|
|
||||||
|
for(const auto& checkbox_option : options.child_range("checkbox")) {
|
||||||
|
item["label"] = checkbox_option["name"];
|
||||||
|
data["option_checkbox"] = item;
|
||||||
|
|
||||||
|
ttree_view_node& node = option_node.add_child("option_checkbox_node", data);
|
||||||
|
|
||||||
|
ttoggle_button* checkbox = dynamic_cast<ttoggle_button*>(node.find("option_checkbox", true));
|
||||||
|
|
||||||
|
VALIDATE(checkbox, missing_widget("option_checkbox"));
|
||||||
|
|
||||||
|
checkbox->set_value(checkbox_option["default"].to_bool());
|
||||||
|
//checkbox->set_label(checkbox_option["name"].str());
|
||||||
|
}
|
||||||
|
|
||||||
|
for(const auto& combobox_option : options.child_range("combo")) {
|
||||||
|
item["label"] = combobox_option["name"];
|
||||||
|
data["combobox_label"] = item;
|
||||||
|
|
||||||
|
ttree_view_node& node = option_node.add_child("option_combobox_node", data);
|
||||||
|
|
||||||
|
std::vector<std::string> combo_items;
|
||||||
|
|
||||||
|
for(const auto& item : combobox_option.child_range("item")) {
|
||||||
|
combo_items.push_back(item["name"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!combo_items.empty()) {
|
||||||
|
tcombobox* combobox = dynamic_cast<tcombobox*>(node.find("option_combobox", true));
|
||||||
|
|
||||||
|
VALIDATE(combobox, missing_widget("option_combobox"));
|
||||||
|
|
||||||
|
combobox->set_values(combo_items);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(const auto& slider_option : options.child_range("slider")) {
|
||||||
|
item["label"] = slider_option["name"];
|
||||||
|
data["slider_label"] = item;
|
||||||
|
|
||||||
|
ttree_view_node& node = option_node.add_child("option_slider_node", data);
|
||||||
|
|
||||||
|
tslider* slider = dynamic_cast<tslider*>(node.find("option_slider", true));
|
||||||
|
|
||||||
|
VALIDATE(slider, missing_widget("option_slider"));
|
||||||
|
|
||||||
|
slider->set_step_size(slider_option["step"].to_int());
|
||||||
|
slider->set_minimum_value(slider_option["min"].to_int());
|
||||||
|
slider->set_maximum_value(slider_option["max"].to_int());
|
||||||
|
slider->set_value(slider_option["default"].to_int());
|
||||||
|
}
|
||||||
|
|
||||||
|
for(const auto& text_entry_option : options.child_range("entry")) {
|
||||||
|
item["label"] = text_entry_option["name"];
|
||||||
|
data["text_entry_label"] = item;
|
||||||
|
|
||||||
|
ttree_view_node& node = option_node.add_child("option_text_entry_node", data);
|
||||||
|
|
||||||
|
ttext_box* textbox = dynamic_cast<ttext_box*>(node.find("option_text_entry", true));
|
||||||
|
|
||||||
|
VALIDATE(textbox, missing_widget("option_text_entry"));
|
||||||
|
|
||||||
|
textbox->set_value(text_entry_option["default"].str());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the Defaults button at the end
|
||||||
|
option_node.add_child("options_default_button", {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void tmp_create_game::update_map(twindow& window)
|
void tmp_create_game::update_map(twindow& window)
|
||||||
{
|
{
|
||||||
tminimap& minimap = find_widget<tminimap>(&window, "minimap", false);
|
tminimap& minimap = find_widget<tminimap>(&window, "minimap", false);
|
||||||
@ -204,13 +321,13 @@ void tmp_create_game::update_map(twindow& window)
|
|||||||
const int index = find_widget<tlistbox>(&window, "map_list", false)
|
const int index = find_widget<tlistbox>(&window, "map_list", false)
|
||||||
.get_selected_row();
|
.get_selected_row();
|
||||||
|
|
||||||
// TODO: fix for different selections
|
engine_.set_current_level(index);
|
||||||
|
|
||||||
ng::scenario* current_scenario = dynamic_cast<ng::scenario*>(&engine_.current_level());
|
ng::scenario* current_scenario = dynamic_cast<ng::scenario*>(&engine_.current_level());
|
||||||
|
|
||||||
//if(index >= 0) {
|
//if(index >= 0) {
|
||||||
config::const_child_itors children = cfg_.child_range("multiplayer");
|
scenario_ = &cfg_.child("multiplayer", index);
|
||||||
std::advance(children.first, index);
|
|
||||||
scenario_ = &*children.first;
|
|
||||||
minimap.set_map_data((*scenario_)["map_data"]);
|
minimap.set_map_data((*scenario_)["map_data"]);
|
||||||
description.set_label((*scenario_)["description"]);
|
description.set_label((*scenario_)["description"]);
|
||||||
players.set_label(std::to_string(current_scenario->num_players()));
|
players.set_label(std::to_string(current_scenario->num_players()));
|
||||||
@ -222,6 +339,10 @@ void tmp_create_game::update_map(twindow& window)
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
update_map_settings(window);
|
update_map_settings(window);
|
||||||
|
|
||||||
|
if(find_widget<tlistbox>(&window, "tab_bar", false).get_selected_row() == 1) {
|
||||||
|
update_options_list(window);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void tmp_create_game::update_map_settings(twindow& window)
|
void tmp_create_game::update_map_settings(twindow& window)
|
||||||
@ -243,20 +364,12 @@ void tmp_create_game::update_map_settings(twindow& window)
|
|||||||
|
|
||||||
fog_->set_widget_value(window, side["fog"].to_bool(true));
|
fog_->set_widget_value(window, side["fog"].to_bool(true));
|
||||||
shroud_->set_widget_value(window, side["shroud"].to_bool(false));
|
shroud_->set_widget_value(window, side["shroud"].to_bool(false));
|
||||||
start_time_->set_widget_value(
|
start_time_->set_widget_value(window, (*scenario_)["random_start_time"].to_bool(true));
|
||||||
window, (*scenario_)["random_start_time"].to_bool(true));
|
|
||||||
|
|
||||||
turns_->set_widget_value(
|
turns_->set_widget_value(window, ::settings::get_turns((*scenario_)["turns"].str()));
|
||||||
window, ::settings::get_turns((*scenario_)["turns"].str()));
|
gold_->set_widget_value(window, ::settings::get_village_gold(side["village_gold"].str()));
|
||||||
gold_->set_widget_value(
|
support_->set_widget_value(window,::settings::get_village_support(side["village_support"].str()));
|
||||||
window, ::settings::get_village_gold(side["village_gold"].str()));
|
experience_->set_widget_value(window,::settings::get_xp_modifier((*scenario_)["experience_modifier"].str()));
|
||||||
support_->set_widget_value(
|
|
||||||
window,
|
|
||||||
::settings::get_village_support(side["village_support"].str()));
|
|
||||||
experience_->set_widget_value(
|
|
||||||
window,
|
|
||||||
::settings::get_xp_modifier(
|
|
||||||
(*scenario_)["experience_modifier"].str()));
|
|
||||||
}
|
}
|
||||||
// No scenario selected just leave the state unchanged for now.
|
// No scenario selected just leave the state unchanged for now.
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "gui/dialogs/dialog.hpp"
|
#include "gui/dialogs/dialog.hpp"
|
||||||
|
|
||||||
#include "game_initialization/create_engine.hpp"
|
#include "game_initialization/create_engine.hpp"
|
||||||
|
#include "game_initialization/mp_options.hpp"
|
||||||
|
|
||||||
class config;
|
class config;
|
||||||
|
|
||||||
@ -45,6 +46,8 @@ private:
|
|||||||
|
|
||||||
ng::create_engine& engine_;
|
ng::create_engine& engine_;
|
||||||
|
|
||||||
|
//mp::options::manager options_manager_;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All fields are also in the normal field vector, but they need to be
|
* All fields are also in the normal field vector, but they need to be
|
||||||
* manually controlled as well so add the pointers here as well.
|
* manually controlled as well so add the pointers here as well.
|
||||||
@ -56,6 +59,8 @@ private:
|
|||||||
|
|
||||||
void on_tab_select(twindow& window);
|
void on_tab_select(twindow& window);
|
||||||
|
|
||||||
|
void update_options_list(twindow& window);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// another map selected
|
// another map selected
|
||||||
void update_map(twindow& window);
|
void update_map(twindow& window);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user