Initial commit of the new mp create game dialog.
It's only a prototype and doesn't really work yet. This dialog uses most features of the widget library so its a main purpose is to help testing the widgets and develop new widgets. NOTE so don't use --new-widgets if you want to play a mp game.
This commit is contained in:
parent
f2cc8199d5
commit
6849efdef3
10 changed files with 894 additions and 16 deletions
567
data/gui/default/window/mp_create_game.cfg
Normal file
567
data/gui/default/window/mp_create_game.cfg
Normal file
|
@ -0,0 +1,567 @@
|
|||
###
|
||||
### Definition of the window to create an MP game. This where the map and it's
|
||||
### parameters are selected.
|
||||
###
|
||||
|
||||
[window]
|
||||
id = "mp_create_game"
|
||||
description = "MP create game dialog."
|
||||
|
||||
[resolution]
|
||||
definition = "default"
|
||||
|
||||
automatic_placement = "true"
|
||||
vertical_placement = "center"
|
||||
horizontal_placement = "center"
|
||||
|
||||
[grid]
|
||||
|
||||
# Title
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "title"
|
||||
|
||||
label = _ "Create Game"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
|
||||
# Name of the game
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "default"
|
||||
|
||||
label = _ "Name of game:"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[text_box]
|
||||
id = "game_name"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Name of game:"
|
||||
[/text_box]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
# Main area
|
||||
[row]
|
||||
grow_factor = 1
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
grow_factor = 1
|
||||
|
||||
# minimap
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
# horizontal_grow = "true" FIXME enable
|
||||
# vertical_grow = "true" FIXME enable
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[minimap]
|
||||
id = "minimap"
|
||||
definition = "default"
|
||||
[/minimap]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
id = "map_players"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Players: "
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
id = "map_size"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Map size: "
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "default"
|
||||
|
||||
label = _ "Era:"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[button]
|
||||
id = "era"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Default"
|
||||
[/button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[button]
|
||||
id = "password"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Set Password"
|
||||
[/button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
# map listbox
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "default"
|
||||
|
||||
label = _ "Map to play:"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
grow_factor = 1
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[listbox]
|
||||
id = "map_list"
|
||||
definition = "default"
|
||||
|
||||
assume_fixed_row_size = "true"
|
||||
[list_definition]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
horizontal_grow = "true"
|
||||
|
||||
[toggle_button]
|
||||
definition = "listbox_text"
|
||||
|
||||
return_value = -1
|
||||
[/toggle_button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/list_definition]
|
||||
|
||||
[/listbox]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
# settings
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[toggle_button]
|
||||
id = "use_map_settings"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Use map settings"
|
||||
[/toggle_button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "default"
|
||||
|
||||
label = _ "Number of turns"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[slider]
|
||||
id = "turn_count"
|
||||
definition = "default"
|
||||
|
||||
minimum_value = 1
|
||||
maximum_value = 100
|
||||
step_size = 1
|
||||
|
||||
maximum_value_label = _"Unlimited"
|
||||
[/slider]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "default"
|
||||
|
||||
label = _ "Village gold"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[slider]
|
||||
id = "village_gold"
|
||||
definition = "default"
|
||||
|
||||
minimum_value = 1
|
||||
maximum_value = 5
|
||||
step_size = 1
|
||||
[/slider]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[label]
|
||||
definition = "default"
|
||||
|
||||
label = _ "Experience modifier"
|
||||
[/label]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[slider]
|
||||
id = "experience_modifier"
|
||||
definition = "default"
|
||||
|
||||
# the values should all be times 10
|
||||
minimum_value = 3
|
||||
maximum_value = 20
|
||||
step_size = 1
|
||||
[/slider]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[toggle_button]
|
||||
id = "fog"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Fog of War"
|
||||
[/toggle_button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[toggle_button]
|
||||
id = "shroud"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Shroud"
|
||||
[/toggle_button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[row]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[toggle_button]
|
||||
id = "random_start_time"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Random start time"
|
||||
[/toggle_button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
|
||||
# button bar
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
[grid]
|
||||
|
||||
[row]
|
||||
grow_factor = 0
|
||||
|
||||
[column]
|
||||
grow_factor = 1
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "right"
|
||||
[button]
|
||||
id = "ok"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Create game"
|
||||
[/button]
|
||||
|
||||
[/column]
|
||||
|
||||
[column]
|
||||
grow_factor = 0
|
||||
|
||||
border = "all"
|
||||
border_size = 5
|
||||
horizontal_alignment = "left"
|
||||
[button]
|
||||
id = "cancel"
|
||||
definition = "default"
|
||||
|
||||
label = _ "Cancel"
|
||||
[/button]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
[/grid]
|
||||
|
||||
[/column]
|
||||
|
||||
[/row]
|
||||
|
||||
|
||||
|
||||
|
||||
[/grid]
|
||||
|
||||
[/resolution]
|
||||
|
||||
[/window]
|
||||
|
|
@ -8,6 +8,7 @@ src/gui/dialogs/addon_connect.cpp
|
|||
src/gui/dialogs/dialog.cpp
|
||||
src/gui/dialogs/language_selection.cpp
|
||||
src/gui/dialogs/mp_connect.cpp
|
||||
src/gui/dialogs/mp_create_game.cpp
|
||||
src/gui/dialogs/mp_method_selection.cpp
|
||||
src/gui/widgets/button.cpp
|
||||
src/gui/widgets/canvas.cpp
|
||||
|
|
|
@ -228,6 +228,7 @@ SET(wesnoth-main_SRC
|
|||
gui/dialogs/dialog.cpp
|
||||
gui/dialogs/language_selection.cpp
|
||||
gui/dialogs/mp_connect.cpp
|
||||
gui/dialogs/mp_create_game.cpp
|
||||
gui/dialogs/mp_method_selection.cpp
|
||||
gui/widgets/button.cpp
|
||||
gui/widgets/canvas.cpp
|
||||
|
|
|
@ -75,6 +75,7 @@ wesnoth_source = \
|
|||
gui/dialogs/dialog.cpp \
|
||||
gui/dialogs/language_selection.cpp \
|
||||
gui/dialogs/mp_connect.cpp \
|
||||
gui/dialogs/mp_create_game.cpp \
|
||||
gui/dialogs/mp_method_selection.cpp \
|
||||
gui/widgets/button.cpp \
|
||||
gui/widgets/canvas.cpp \
|
||||
|
|
|
@ -202,6 +202,7 @@ wesnoth_sources = Split("""
|
|||
gui/dialogs/dialog.cpp
|
||||
gui/dialogs/language_selection.cpp
|
||||
gui/dialogs/mp_connect.cpp
|
||||
gui/dialogs/mp_create_game.cpp
|
||||
gui/dialogs/mp_method_selection.cpp
|
||||
gui/widgets/button.cpp
|
||||
gui/widgets/canvas.cpp
|
||||
|
|
219
src/gui/dialogs/mp_create_game.cpp
Normal file
219
src/gui/dialogs/mp_create_game.cpp
Normal file
|
@ -0,0 +1,219 @@
|
|||
/* $Id$ */
|
||||
/*
|
||||
copyright (c) 2008 by mark de wever <koraq@xs4all.nl>
|
||||
part of 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 version 2
|
||||
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.
|
||||
*/
|
||||
|
||||
#include "gui/dialogs/mp_create_game.hpp"
|
||||
|
||||
#include "filesystem.hpp"
|
||||
#include "foreach.hpp"
|
||||
#include "game_config.hpp"
|
||||
#include "game_preferences.hpp"
|
||||
#include "gettext.hpp"
|
||||
#include "gui/dialogs/dialog.hpp"
|
||||
#include "gui/dialogs/field.hpp"
|
||||
#include "gui/widgets/button.hpp"
|
||||
#include "gui/widgets/listbox.hpp"
|
||||
#include "gui/widgets/minimap.hpp"
|
||||
#include "gui/widgets/widget.hpp"
|
||||
#include "gui/widgets/window.hpp"
|
||||
#include "gui/widgets/window_builder.hpp"
|
||||
#include "gui/widgets/settings.hpp"
|
||||
#include "gui/widgets/text_box.hpp"
|
||||
#include "log.hpp"
|
||||
#include "../../settings.hpp"
|
||||
#include "video.hpp"
|
||||
#include "wml_exception.hpp"
|
||||
|
||||
#define DBG_GUI LOG_STREAM_INDENT(debug, widget)
|
||||
#define LOG_GUI LOG_STREAM_INDENT(info, widget)
|
||||
#define WRN_GUI LOG_STREAM_INDENT(warn, widget)
|
||||
#define ERR_GUI LOG_STREAM_INDENT(err, widget)
|
||||
|
||||
namespace gui2 {
|
||||
|
||||
static void callback_use_map_settings(twidget* caller)
|
||||
{
|
||||
tmp_create_game* dialog = dynamic_cast<tmp_create_game*>(caller->dialog());
|
||||
assert(dialog);
|
||||
twindow* window = dynamic_cast<twindow*>(caller->get_window());
|
||||
assert(window);
|
||||
|
||||
dialog->update_map_settings(*window);
|
||||
}
|
||||
|
||||
static void callback_select_list_item(twidget* caller)
|
||||
{
|
||||
tmp_create_game* dialog = dynamic_cast<tmp_create_game*>(caller->dialog());
|
||||
assert(dialog);
|
||||
twindow* window = dynamic_cast<twindow*>(caller->get_window());
|
||||
assert(window);
|
||||
|
||||
dialog->update_map(*window);
|
||||
}
|
||||
|
||||
tmp_create_game::tmp_create_game(const config& cfg) :
|
||||
cfg_(cfg),
|
||||
scenario_(NULL),
|
||||
use_map_settings_(register_bool("use_map_settings", false,
|
||||
preferences::use_map_settings,
|
||||
preferences::set_use_map_settings,
|
||||
callback_use_map_settings)),
|
||||
fog_(register_bool("fog", false,
|
||||
preferences::fog,
|
||||
preferences::set_fog)),
|
||||
shroud_(register_bool("shroud", false,
|
||||
preferences::shroud,
|
||||
preferences::set_shroud)),
|
||||
start_time_(register_bool("random_start_time", false,
|
||||
preferences::random_start_time,
|
||||
preferences::set_random_start_time)),
|
||||
|
||||
turns_(register_integer("turn_count", false,
|
||||
preferences::turns ,
|
||||
preferences::set_turns)),
|
||||
gold_(register_integer("village_gold", false,
|
||||
preferences::village_gold ,
|
||||
preferences::set_village_gold)),
|
||||
experience_(register_integer("experience_modifier", false,
|
||||
preferences::xp_modifier ,
|
||||
preferences::set_xp_modifier))
|
||||
{
|
||||
}
|
||||
|
||||
twindow tmp_create_game::build_window(CVideo& video)
|
||||
{
|
||||
return build(video, get_id(MP_CREATE_GAME));
|
||||
}
|
||||
|
||||
void tmp_create_game::pre_show(CVideo& /*video*/, twindow& window)
|
||||
{
|
||||
tminimap* minimap = dynamic_cast<tminimap*>(window.find_widget("minimap", false));
|
||||
VALIDATE(minimap, missing_widget("minimap"));
|
||||
minimap->set_config(&cfg_);
|
||||
|
||||
tlistbox* list = dynamic_cast<tlistbox*>(window.find_widget("map_list", false));
|
||||
VALIDATE(list, missing_widget("map_list"));
|
||||
|
||||
list->set_callback_value_change(callback_select_list_item);
|
||||
|
||||
// Load option (might turn it into a button later).
|
||||
std::map<std::string, t_string> item;
|
||||
item.insert(std::make_pair("label", _("Load Game")));
|
||||
item.insert(std::make_pair("tooltip", _("Load Game...")));
|
||||
list->add_row(item);
|
||||
|
||||
// User maps
|
||||
/* FIXME implement user maps
|
||||
std::vector<std::string> maps;
|
||||
get_files_in_dir(get_user_data_dir() + "/editor/maps", &maps, NULL, FILE_NAME_ONLY);
|
||||
|
||||
foreach(const std::string& map, maps) {
|
||||
std::map<std::string, t_string> item;
|
||||
item.insert(std::make_pair("label", map));
|
||||
list->add_row(item);
|
||||
}
|
||||
*/
|
||||
|
||||
// Standard maps
|
||||
int i = 0;
|
||||
foreach(const config* map, cfg_.get_children("multiplayer")) {
|
||||
|
||||
if(utils::string_bool((*map)["allow_new_game"], true)) {
|
||||
std::map<std::string, t_string> item;
|
||||
item.insert(std::make_pair("label", (*map)["name"]));
|
||||
item.insert(std::make_pair("tooltip", (*map)["name"]));
|
||||
list->add_row(item);
|
||||
|
||||
// This hack is needed since the resize code can't handle this
|
||||
// window properly, it has 3 columns which seems to fail in the
|
||||
// resize code.
|
||||
if(++i == 10) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_map_settings(window);
|
||||
window.recalculate_size();
|
||||
}
|
||||
|
||||
void tmp_create_game::post_show(twindow& window)
|
||||
{
|
||||
if(get_retval() == tbutton::OK) {
|
||||
tlistbox* list = dynamic_cast<tlistbox*>(window.find_widget("map_list", false));
|
||||
assert(list);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void tmp_create_game::update_map(twindow& window)
|
||||
{
|
||||
tlistbox* list = dynamic_cast<tlistbox*>(window.find_widget("map_list", false));
|
||||
VALIDATE(list, missing_widget("map_list"));
|
||||
|
||||
tminimap* minimap = dynamic_cast<tminimap*>(window.find_widget("minimap", false));
|
||||
VALIDATE(list, missing_widget("minimap"));
|
||||
|
||||
const int index = list->get_selected_row() - 1;
|
||||
|
||||
if(index >= 0) {
|
||||
scenario_ = cfg_.get_children("multiplayer")[index];
|
||||
minimap->set_map_data((*scenario_)["map_data"]);
|
||||
} else {
|
||||
minimap->set_map_data("");
|
||||
scenario_ = NULL;
|
||||
}
|
||||
|
||||
update_map_settings(window);
|
||||
}
|
||||
|
||||
void tmp_create_game::update_map_settings(twindow& window)
|
||||
{
|
||||
const bool use_map_settings = use_map_settings_->get_value(window);
|
||||
|
||||
fog_->widget_set_enabled(window, !use_map_settings, false);
|
||||
shroud_->widget_set_enabled(window, !use_map_settings, false);
|
||||
start_time_->widget_set_enabled(window, !use_map_settings, false);
|
||||
|
||||
turns_->widget_set_enabled(window, !use_map_settings, false);
|
||||
gold_->widget_set_enabled(window, !use_map_settings, false);
|
||||
experience_->widget_set_enabled(window, !use_map_settings, false);
|
||||
|
||||
if(use_map_settings) {
|
||||
if(scenario_) {
|
||||
|
||||
fog_->set_value(window, ::settings::use_fog((*(*scenario_).get_children("side").front())["fog"]));
|
||||
shroud_->set_value(window, ::settings::use_shroud((*(*scenario_).get_children("side").front())["shroud"]));
|
||||
start_time_->set_value(window, ::settings::use_random_start_time((*scenario_)["random_start_time"]));
|
||||
|
||||
turns_->set_value(window, ::settings::get_turns((*scenario_)["turns"]));
|
||||
gold_->set_value(window, ::settings::get_village_gold((*(*scenario_).get_children("side").front())["village_gold"]));
|
||||
experience_->set_value(window, ::settings::get_xp_modifier((*scenario_)["experience_modifier"]));
|
||||
}
|
||||
// No scenario selected just leave the state unchanged for now.
|
||||
|
||||
} else {
|
||||
|
||||
// Fixme we should store the value and reuse it later...
|
||||
fog_->set_value(window, preferences::fog());
|
||||
shroud_->set_value(window, preferences::shroud());
|
||||
start_time_->set_value(window, preferences::random_start_time());
|
||||
|
||||
turns_->set_value(window, preferences::turns());
|
||||
gold_->set_value(window, preferences::village_gold());
|
||||
experience_->set_value(window, preferences::xp_modifier());
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace gui2
|
||||
|
75
src/gui/dialogs/mp_create_game.hpp
Normal file
75
src/gui/dialogs/mp_create_game.hpp
Normal file
|
@ -0,0 +1,75 @@
|
|||
/* $Id$ */
|
||||
/*
|
||||
copyright (c) 2008 by mark de wever <koraq@xs4all.nl>
|
||||
part of 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 version 2
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifndef GUI_DIALOGS_MP_CREATE_GAME_HPP_INCLUDED
|
||||
#define GUI_DIALOGS_MP_CREATE_GAME_HPP_INCLUDED
|
||||
|
||||
#include "gui/dialogs/dialog.hpp"
|
||||
|
||||
class config;
|
||||
|
||||
namespace gui2 {
|
||||
|
||||
class twidget;
|
||||
class ttext_box;
|
||||
|
||||
class tmp_create_game : public tdialog
|
||||
{
|
||||
public:
|
||||
tmp_create_game(const config& cfg);
|
||||
|
||||
private:
|
||||
|
||||
/** Inherited from tdialog. */
|
||||
twindow build_window(CVideo& video);
|
||||
|
||||
/** Inherited from tdialog. */
|
||||
void pre_show(CVideo& video, twindow& window);
|
||||
|
||||
/** Inherited from tdialog. */
|
||||
void post_show(twindow& window);
|
||||
|
||||
const config& cfg_;
|
||||
|
||||
const config* scenario_;
|
||||
|
||||
/**
|
||||
* All fields are also in the normal field vector, but they need to be
|
||||
* manually controled as well so add the pointers here as well.
|
||||
*/
|
||||
|
||||
tfield_bool
|
||||
*use_map_settings_,
|
||||
*fog_,
|
||||
*shroud_,
|
||||
*start_time_;
|
||||
|
||||
tfield_integer
|
||||
*turns_,
|
||||
*gold_,
|
||||
*experience_;
|
||||
|
||||
public:
|
||||
|
||||
// another map selected
|
||||
void update_map(twindow& window);
|
||||
|
||||
// use_map_settings toggled (also called in other cases.)
|
||||
void update_map_settings(twindow& window);
|
||||
};
|
||||
|
||||
} // namespace gui2
|
||||
|
||||
#endif
|
||||
|
|
@ -87,6 +87,7 @@ static void fill_window_types()
|
|||
window_type_list[MP_CONNECT] = "mp_connect";
|
||||
window_type_list[MP_METHOD_SELECTION] = "mp_method_selection";
|
||||
window_type_list[MP_SERVER_LIST] = "mp_server_list";
|
||||
window_type_list[MP_CREATE_GAME] = "mp_create_game";
|
||||
#ifdef USE_EDITOR2
|
||||
window_type_list[EDITOR_NEW_MAP] = "editor_new_map";
|
||||
#endif
|
||||
|
|
|
@ -40,6 +40,7 @@ enum twindow_type {
|
|||
MP_METHOD_SELECTION, //<! The dialog which allows you to choose the kind
|
||||
//! mp game the user wants to play.
|
||||
MP_SERVER_LIST, //<! The mp server list dialog.
|
||||
MP_CREATE_GAME, /**< The mp creation dialog. */
|
||||
#ifdef USE_EDITOR2
|
||||
EDITOR_NEW_MAP, //<! New map dialog
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "game_config.hpp"
|
||||
#include "gettext.hpp"
|
||||
#include "gui/dialogs/mp_connect.hpp"
|
||||
#include "gui/dialogs/mp_create_game.hpp"
|
||||
#include "gui/widgets/button.hpp"
|
||||
#include "log.hpp"
|
||||
#include "multiplayer.hpp"
|
||||
|
@ -400,25 +401,35 @@ static void enter_connect_mode(game_display& disp, const config& game_config,
|
|||
|
||||
static void enter_create_mode(game_display& disp, const config& game_config, mp::chat& chat, config& gamelist, mp::controller default_controller, bool is_server)
|
||||
{
|
||||
mp::ui::result res;
|
||||
mp::create::parameters params;
|
||||
if(gui2::new_widgets) {
|
||||
|
||||
{
|
||||
mp::create ui(disp, game_config, chat, gamelist);
|
||||
run_lobby_loop(disp, ui);
|
||||
res = ui.get_result();
|
||||
params = ui.get_parameters();
|
||||
}
|
||||
gui2::tmp_create_game dlg(game_config);
|
||||
|
||||
dlg.show(disp.video());
|
||||
|
||||
switch (res) {
|
||||
case mp::ui::CREATE:
|
||||
enter_connect_mode(disp, game_config, chat, gamelist, params, default_controller, is_server);
|
||||
break;
|
||||
case mp::ui::QUIT:
|
||||
default:
|
||||
//update lobby content
|
||||
network::send_data(config("refresh_lobby"), 0, true);
|
||||
break;
|
||||
} else {
|
||||
|
||||
mp::ui::result res;
|
||||
mp::create::parameters params;
|
||||
|
||||
{
|
||||
mp::create ui(disp, game_config, chat, gamelist);
|
||||
run_lobby_loop(disp, ui);
|
||||
res = ui.get_result();
|
||||
params = ui.get_parameters();
|
||||
}
|
||||
|
||||
switch (res) {
|
||||
case mp::ui::CREATE:
|
||||
enter_connect_mode(disp, game_config, chat, gamelist, params, default_controller, is_server);
|
||||
break;
|
||||
case mp::ui::QUIT:
|
||||
default:
|
||||
//update lobby content
|
||||
network::send_data(config("refresh_lobby"), 0, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue