1
// This program is free software; you can redistribute it and/or modify
2
// it under the terms of the GNU General Public License as published by
3
// the Free Software Foundation; either version 2 of the License, or
4
// (at your option) any later version.
6
// This program is distributed in the hope that it will be useful,
7
// but WITHOUT ANY WARRANTY; without even the implied warranty of
8
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
// GNU Library General Public License for more details.
11
// You should have received a copy of the GNU General Public License
12
// along with this program; if not, write to the Free Software
13
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*
17
#include <libglademm/xml.h>
18
#include <sigc++/functors/mem_fun.h>
20
#include "game-options-dialog.h"
22
#include "glade-helpers.h"
23
#include "input-helpers.h"
24
#include "../ucompose.hpp"
27
#include "../Configuration.h"
29
GameOptionsDialog::GameOptionsDialog()
31
Glib::RefPtr<Gnome::Glade::Xml> xml
32
= Gnome::Glade::Xml::create(get_glade_path()
33
+ "/game-options-dialog.glade");
36
xml->get_widget("dialog", d);
39
xml->get_widget("view_enemies_checkbutton", view_enemies_checkbutton);
40
xml->get_widget("view_production_checkbutton", view_production_checkbutton);
41
xml->get_widget("quests_checkbutton", quests_checkbutton);
42
xml->get_widget("hidden_map_checkbutton", hidden_map_checkbutton);
43
xml->get_widget("neutral_combobox", neutral_cities_combobox);
44
xml->get_widget("diplomacy_checkbutton", diplomacy_checkbutton);
45
xml->get_widget("military_advisor_checkbutton",
46
military_advisor_checkbutton);
47
xml->get_widget("quick_start_checkbutton", quick_start_checkbutton);
48
xml->get_widget("intense_combat_checkbutton", intense_combat_checkbutton);
49
xml->get_widget("random_turns_checkbutton", random_turns_checkbutton);
50
xml->get_widget("beginner_toggle", beginner_toggle);
51
xml->get_widget("intermediate_toggle", intermediate_toggle);
52
xml->get_widget("advanced_toggle", advanced_toggle);
54
view_enemies_checkbutton->signal_clicked().connect
55
(sigc::mem_fun(this, &GameOptionsDialog::on_option_clicked));
56
view_production_checkbutton->signal_clicked().connect
57
(sigc::mem_fun(this, &GameOptionsDialog::on_option_clicked));
58
quests_checkbutton->signal_clicked().connect
59
(sigc::mem_fun(this, &GameOptionsDialog::on_option_clicked));
60
hidden_map_checkbutton->signal_clicked().connect
61
(sigc::mem_fun(this, &GameOptionsDialog::on_option_clicked));
62
neutral_cities_combobox->signal_changed().connect
63
(sigc::mem_fun(this, &GameOptionsDialog::on_option_clicked));
64
diplomacy_checkbutton->signal_clicked().connect
65
(sigc::mem_fun(this, &GameOptionsDialog::on_option_clicked));
67
beginner_toggle->signal_toggled().connect
68
(sigc::bind(sigc::mem_fun(this, &GameOptionsDialog::on_beginner_toggled),
70
intermediate_toggle->signal_toggled().connect
71
(sigc::bind(sigc::mem_fun(this,
72
&GameOptionsDialog::on_intermediate_toggled),
73
intermediate_toggle));
74
advanced_toggle->signal_toggled().connect
75
(sigc::bind(sigc::mem_fun(this, &GameOptionsDialog::on_advanced_toggled),
82
void GameOptionsDialog::fill_in_options()
84
neutral_cities_combobox->set_active(GameParameters::AVERAGE);
86
view_enemies_checkbutton->set_active(Configuration::s_see_opponents_stacks);
87
view_production_checkbutton->set_active(Configuration::s_see_opponents_production);
88
quests_checkbutton->set_active(Configuration::s_play_with_quests);
89
hidden_map_checkbutton->set_active(Configuration::s_hidden_map);
90
neutral_cities_combobox->set_active(int(Configuration::s_neutral_cities));
91
diplomacy_checkbutton->set_active(Configuration::s_diplomacy);
92
military_advisor_checkbutton->set_active(Configuration::s_military_advisor);
93
quick_start_checkbutton->set_active(Configuration::s_quick_start);
94
intense_combat_checkbutton->set_active(Configuration::s_intense_combat);
95
random_turns_checkbutton->set_active(Configuration::s_random_turns);
97
void GameOptionsDialog::set_parent_window(Gtk::Window &parent)
99
dialog->set_transient_for(parent);
100
//dialog->set_position(Gtk::WIN_POS_CENTER_ON_PARENT);
103
bool GameOptionsDialog::run()
108
g.see_opponents_stacks = view_enemies_checkbutton->get_active();
109
Configuration::s_see_opponents_stacks = g.see_opponents_stacks;
110
g.see_opponents_production = view_production_checkbutton->get_active();
111
Configuration::s_see_opponents_production = g.see_opponents_production;
112
g.play_with_quests = quests_checkbutton->get_active();
113
Configuration::s_play_with_quests = g.play_with_quests;
114
g.hidden_map = hidden_map_checkbutton->get_active();
115
Configuration::s_hidden_map = g.hidden_map;
117
g.neutral_cities = GameParameters::NeutralCities (
118
neutral_cities_combobox->get_active_row_number());
119
Configuration::s_neutral_cities = g.neutral_cities;
121
g.diplomacy = diplomacy_checkbutton->get_active();
122
Configuration::s_diplomacy = g.diplomacy;
123
g.random_turns = random_turns_checkbutton->get_active();
124
Configuration::s_random_turns = g.random_turns;
125
g.quick_start = quick_start_checkbutton->get_active();
126
Configuration::s_quick_start = g.quick_start;
127
g.intense_combat = intense_combat_checkbutton->get_active();
128
Configuration::s_intense_combat = g.intense_combat;
129
g.military_advisor = military_advisor_checkbutton->get_active();
130
Configuration::s_military_advisor = g.military_advisor;
131
//save it all to Configuration
132
Configuration::saveConfigurationFile(Configuration::configuration_file_path);
136
void GameOptionsDialog::on_beginner_toggled(Gtk::ToggleButton *toggle)
138
if (toggle->get_active())
140
intermediate_toggle->set_active(false);
141
advanced_toggle->set_active(false);
142
Configuration::s_see_opponents_stacks = true;
143
Configuration::s_see_opponents_production = true;
144
Configuration::s_play_with_quests = false;
145
Configuration::s_hidden_map = false;
146
Configuration::s_neutral_cities = GameParameters::AVERAGE;
147
Configuration::s_diplomacy = false;
152
void GameOptionsDialog::on_intermediate_toggled(Gtk::ToggleButton *toggle)
154
if (toggle->get_active())
156
beginner_toggle->set_active(false);
157
advanced_toggle->set_active(false);
158
Configuration::s_see_opponents_stacks = false;
159
Configuration::s_see_opponents_production = true;
160
Configuration::s_play_with_quests = true;
161
Configuration::s_hidden_map = false;
162
Configuration::s_neutral_cities = GameParameters::STRONG;
163
Configuration::s_diplomacy = true;
168
void GameOptionsDialog::on_advanced_toggled(Gtk::ToggleButton *toggle)
170
if (toggle->get_active())
172
beginner_toggle->set_active(false);
173
intermediate_toggle->set_active(false);
174
Configuration::s_see_opponents_stacks = false;
175
Configuration::s_see_opponents_production = false;
176
Configuration::s_play_with_quests = true;
177
Configuration::s_hidden_map = true;
178
Configuration::s_neutral_cities = GameParameters::ACTIVE;
179
Configuration::s_diplomacy = true;
183
void GameOptionsDialog::on_option_clicked()
185
beginner_toggle->set_active(false);
186
intermediate_toggle->set_active(false);
187
advanced_toggle->set_active(false);