The Battle for Wesnoth  1.19.0-dev
general.hpp
Go to the documentation of this file.
1 /*
2  Copyright (C) 2003 - 2024
3  by David White <dave@whitevine.net>
4  Part of the Battle for Wesnoth Project https://www.wesnoth.org/
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY.
12 
13  See the COPYING file for more details.
14 */
15 
16 #pragma once
17 
18 #include "config.hpp"
19 #include "gui/sort_order.hpp"
20 #include "terrain/translation.hpp"
21 
22 struct point;
23 
24 namespace preferences {
25 
26  struct base_manager
27  {
28  base_manager();
29  ~base_manager();
30  };
31 
32  extern const int min_window_width;
33  extern const int min_window_height;
34 
35  extern const int def_window_width;
36  extern const int def_window_height;
37 
38  extern const int max_window_width;
39  extern const int max_window_height;
40 
41  extern const int min_font_scaling;
42  extern const int max_font_scaling;
43 
44  extern const int min_pixel_scale;
45  extern const int max_pixel_scale;
46 
47  void write_preferences();
48 
49  void set(const std::string& key, const std::string &value);
50  void set(const std::string& key, char const *value);
51  void set(const std::string& key, bool value);
52  void set(const std::string& key, int value);
53  void set(const std::string& key, const config::attribute_value& value);
54  void clear(const std::string& key);
55  void set_child(const std::string& key, const config& val);
56  optional_const_config get_child(const std::string &key);
57  std::string get(const std::string& key);
58  std::string get(const std::string& key, const std::string& def);
59  bool get(const std::string& key, bool def);
60  config::attribute_value get_as_attribute(const std::string& key);
61  void erase(const std::string& key);
62  bool have_setting(const std::string& key);
63 
65 
66  config* get_prefs();
67  void load_base_prefs();
68 
69  std::string core_id();
70  void set_core_id(const std::string& root);
71 
72  bool scroll_to_action();
73  void set_scroll_to_action(bool ison);
74 
75  point resolution();
76  void _set_resolution(const point& res);
77 
78  int pixel_scale();
79  void set_pixel_scale(const int scale);
80 
81  bool auto_pixel_scale();
82  void set_auto_pixel_scale(bool choice);
83 
84  bool maximized();
85  void _set_maximized(bool ison);
86 
87  bool fullscreen();
88  void _set_fullscreen(bool ison);
89 
90  bool vsync();
91  void set_vsync(bool ison);
92 
93  bool turbo();
94  void set_turbo(bool ison);
95 
96  double turbo_speed();
97  void set_turbo_speed(const double speed);
98 
99  int font_scaling();
100  void set_font_scaling(int scale);
101  int font_scaled(int size);
102 
103  int keepalive_timeout();
104  void keepalive_timeout(int seconds);
105 
106  bool idle_anim();
107  void set_idle_anim(const bool ison);
108 
109  int idle_anim_rate();
110  void set_idle_anim_rate(int rate);
111 
112  std::string language();
113  void set_language(const std::string& s);
114 
115  std::string gui_theme();
116  void set_gui_theme(const std::string& s);
117 
118  // Don't rename it to sound() because of a gcc-3.3 branch bug,
119  // which will cause it to conflict with the sound namespace.
120  bool sound_on();
121  bool set_sound(bool ison);
122 
123  unsigned int sample_rate();
124  void save_sample_rate(const unsigned int rate);
125 
126  std::size_t sound_buffer_size();
127  void save_sound_buffer_size(const std::size_t size);
128 
129  int sound_volume();
130  void set_sound_volume(int vol);
131 
132  int bell_volume();
133  void set_bell_volume(int vol);
134 
135  int UI_volume();
136  void set_UI_volume(int vol);
137 
138  bool music_on();
139  bool set_music(bool ison);
140 
141  int music_volume();
142  void set_music_volume(int vol);
143 
145  void set_stop_music_in_background(bool ison);
146 
147  unsigned int tile_size();
148  void set_tile_size(const unsigned int size);
149 
150  bool turn_bell();
151  bool set_turn_bell(bool ison);
152 
153  bool UI_sound_on();
154  bool set_UI_sound(bool ison);
155 
156  bool message_bell();
157 
158  // Proxies for preferences_dialog
159  void load_hotkeys();
160  void save_hotkeys();
161  void clear_hotkeys();
162 
163  void add_alias(const std::string& alias, const std::string& command);
165 
166 
167  std::string allied_color();
168  void set_allied_color(const std::string& color_id);
169 
170  std::string enemy_color();
171  void set_enemy_color(const std::string& color_id);
172 
173  std::string unmoved_color();
174  void set_unmoved_color(const std::string& color_id);
175 
176  std::string partial_color();
177  void set_partial_color(const std::string& color_id);
178 
179  std::string moved_color();
180  void set_moved_color(const std::string& color_id);
181 
182  bool show_ally_orb();
183  void set_show_ally_orb(bool show_orb);
184 
186  void set_show_status_on_ally_orb(bool show_orb);
187 
188  bool show_enemy_orb();
189  void set_show_enemy_orb(bool show_orb);
190 
191  bool show_moved_orb();
192  void set_show_moved_orb(bool show_orb);
193 
194  bool show_unmoved_orb();
195  void set_show_unmoved_orb(bool show_orb);
196 
197  bool show_partial_orb();
198  void set_show_partial_orb(bool show_orb);
199 
200  bool show_disengaged_orb();
201  void set_show_disengaged_orb(bool show_orb);
202 
203  bool use_color_cursors();
204  void _set_color_cursors(bool value);
205 
206  int scroll_speed();
207  void set_scroll_speed(const int scroll);
208 
209  bool middle_click_scrolls();
210  bool mouse_scroll_enabled();
211  void enable_mouse_scroll(bool value);
212 
213  /**
214  * Gets the threshold for when to scroll.
215  *
216  * This scrolling happens when the mouse is in the application and near
217  * the border.
218  */
220 
221  int draw_delay();
222  void set_draw_delay(int value);
223 
224  bool animate_map();
225  void set_animate_map(bool value);
226 
227  bool animate_water();
228  void set_animate_water(bool value);
229 
232 
233  bool minimap_terrain_coding();
235 
236  bool minimap_draw_units();
238 
239  bool minimap_draw_villages();
241 
242  bool minimap_draw_terrain();
244 
245  bool show_fps();
246  void set_show_fps(bool value);
247 
248  bool ellipses();
249  void set_ellipses(bool ison);
250 
251  bool grid();
252  void set_grid(bool ison);
253 
255 
258 
259  bool disable_auto_moves();
260  void set_disable_auto_moves(bool value);
261 
264 
265  std::string addon_manager_saved_order_name();
266  void set_addon_manager_saved_order_name(const std::string& value);
267 
270 
271  std::string selected_achievement_group();
272  void set_selected_achievement_group(const std::string& content_for);
273 
274  /**
275  * @param content_for The achievement group the achievement is part of.
276  * @param id The ID of the achievement within the achievement group.
277  * @return True if the achievement exists and is completed, false otherwise.
278  */
279  bool achievement(const std::string& content_for, const std::string& id);
280  /**
281  * Marks the specified achievement as completed.
282  *
283  * @param content_for The achievement group the achievement is part of.
284  * @param id The ID of the achievement within the achievement group.
285  */
286  void set_achievement(const std::string& content_for, const std::string& id);
287 
288  /**
289  * Increments the achievement's current progress by @a amount if it hasn't already been completed.
290  * If you only want to check the achievement's current progress, then omit the last three arguments.
291  * @a amount defaults to 0, which will result in the current progress value being returned without being changed (x + 0 == x).
292  *
293  * Note that this uses the same [in_progress] as is used for set_sub_achievement().
294  *
295  * @param content_for The id of the achievement group this achievement is in.
296  * @param id The id for the specific achievement in the achievement group.
297  * @param limit The maximum value that a specific call to this function can increase the achievement progress value.
298  * @param max_progress The value when the achievement is considered completed.
299  * @param amount The amount to progress the achievement.
300  * @return The achievement's current progress, or -1 if it has already been completed.
301  */
302  int progress_achievement(const std::string& content_for, const std::string& id, int limit = 999999, int max_progress = 999999, int amount = 0);
303 
304  /**
305  * @param content_for The achievement group the achievement is part of.
306  * @param id The ID of the achievement within the achievement group.
307  * @param sub_id The ID of the sub-achievement within the achievement.
308  * @return True if the sub-achievement exists and is completed, false otherwise.
309  */
310  bool sub_achievement(const std::string& content_for, const std::string& id, const std::string& sub_id);
311 
312  /**
313  * Marks the specified sub-achievement as completed.
314  *
315  * Note that this uses the same [in_progress] as is used for progress_achievement().
316  *
317  * @param content_for The achievement group the achievement is part of.
318  * @param id The ID of the achievement within the achievement group.
319  * @param sub_id The ID of the sub-achievement within the achievement.
320  */
321  void set_sub_achievement(const std::string& content_for, const std::string& id, const std::string& sub_id);
322 
323  /**
324  * @param addon_id The chosen addon id from the editor to store in the preferences.
325  */
326  void set_editor_chosen_addon(const std::string& addon_id);
327 
328  /**
329  * @return The most recently selected add-on id from the editor. May be an empty string.
330  */
331  std::string editor_chosen_addon();
332 
333 } // end namespace preferences
Variant for storing WML attributes.
A config object defines a single node in a WML file, with access to child nodes.
Definition: config.hpp:159
Modify, read and display user preferences.
void set_achievement(const std::string &content_for, const std::string &id)
Marks the specified achievement as completed.
Definition: general.cpp:1034
void set_scroll_speed(const int new_speed)
Definition: general.cpp:792
void set_show_disengaged_orb(bool show_orb)
Definition: general.cpp:307
bool stop_music_in_background()
Definition: general.cpp:777
const int max_window_height
Definition: general.cpp:73
int idle_anim_rate()
Definition: general.cpp:525
const int def_window_width
Definition: general.cpp:69
std::size_t sound_buffer_size()
Definition: general.cpp:575
void disable_preferences_save()
Definition: general.cpp:231
void set_turbo(bool ison)
Definition: general.cpp:474
void set_allied_color(const std::string &color_id)
Definition: general.cpp:328
void set_addon_manager_saved_order_direction(sort_order::type value)
Definition: general.cpp:1006
bool have_setting(const std::string &key)
Definition: general.cpp:209
void set_music_volume(int vol)
Definition: general.cpp:610
void set_show_partial_orb(bool show_orb)
Definition: general.cpp:300
void set_idle_anim(const bool ison)
Definition: general.cpp:520
bool minimap_movement_coding()
Definition: general.cpp:827
void clear(const std::string &key)
Definition: general.cpp:190
void set_core_id(const std::string &core_id)
Definition: general.cpp:338
bool show_unmoved_orb()
Definition: general.cpp:290
bool set_turn_bell(bool ison)
Definition: general.cpp:680
int UI_volume()
Definition: general.cpp:650
bool vsync()
Definition: general.cpp:439
void set_show_enemy_orb(bool show_orb)
Definition: general.cpp:279
void set_sound_volume(int vol)
Definition: general.cpp:625
sort_order::type addon_manager_saved_order_direction()
Definition: general.cpp:1001
bool maximized()
Definition: general.cpp:429
void set_gui_theme(const std::string &s)
Definition: general.cpp:550
unsigned int tile_size()
Definition: general.cpp:665
void save_sound_buffer_size(const std::size_t size)
Definition: general.cpp:588
const int min_pixel_scale
Definition: general.cpp:78
bool set_sound(bool ison)
Definition: general.cpp:733
bool use_twelve_hour_clock_format()
Definition: general.cpp:966
bool auto_pixel_scale()
Definition: general.cpp:419
bool show_partial_orb()
Definition: general.cpp:297
bool minimap_draw_villages()
Definition: general.cpp:857
void toggle_minimap_draw_villages()
Definition: general.cpp:862
int font_scaled(int size)
Definition: general.cpp:500
std::string moved_color()
Definition: general.cpp:352
void set_bell_volume(int vol)
Definition: general.cpp:640
void set_damage_prediction_allow_monte_carlo_simulation(bool value)
Definition: general.cpp:986
void set_turbo_speed(const double speed)
Definition: general.cpp:484
void set_grid(bool ison)
Definition: general.cpp:570
bool music_on()
Definition: general.cpp:751
void set_draw_delay(int value)
Definition: general.cpp:902
void set(const std::string &key, bool value)
Definition: general.cpp:165
bool minimap_terrain_coding()
Definition: general.cpp:837
const int max_window_width
Definition: general.cpp:72
bool damage_prediction_allow_monte_carlo_simulation()
Definition: general.cpp:981
void load_base_prefs()
Definition: general.cpp:240
bool scroll_to_action()
Definition: general.cpp:382
void set_unmoved_color(const std::string &color_id)
Definition: general.cpp:368
void set_show_fps(bool value)
Definition: general.cpp:892
bool turbo()
Definition: general.cpp:465
bool sound_on()
Definition: general.cpp:728
int bell_volume()
Definition: general.cpp:635
int mouse_scroll_threshold()
Gets the threshold for when to scroll.
Definition: general.cpp:812
void set_addon_manager_saved_order_name(const std::string &value)
Definition: general.cpp:996
void write_preferences()
Definition: general.cpp:141
std::string addon_manager_saved_order_name()
Definition: general.cpp:991
bool idle_anim()
Definition: general.cpp:515
double turbo_speed()
Definition: general.cpp:479
void set_stop_music_in_background(bool ison)
Definition: general.cpp:782
bool minimap_draw_terrain()
Definition: general.cpp:867
optional_const_config get_alias()
Definition: general.cpp:940
std::string editor_chosen_addon()
Definition: general.cpp:1210
std::string selected_achievement_group()
Definition: general.cpp:1011
void set_animate_water(bool value)
Definition: general.cpp:882
const int max_font_scaling
Definition: general.cpp:76
void clear_hotkeys()
Definition: general.cpp:927
void set_vsync(bool ison)
Definition: general.cpp:460
const int min_font_scaling
Definition: general.cpp:75
std::string partial_color()
Definition: general.cpp:372
point resolution()
Definition: general.cpp:392
const int def_window_height
Definition: general.cpp:70
config::attribute_value get_as_attribute(const std::string &key)
Definition: general.cpp:226
void toggle_minimap_draw_units()
Definition: general.cpp:852
bool fullscreen()
Definition: general.cpp:434
void set_font_scaling(int scale)
Definition: general.cpp:495
bool mouse_scroll_enabled()
Definition: general.cpp:802
bool set_music(bool ison)
Definition: general.cpp:756
void enable_mouse_scroll(bool value)
Definition: general.cpp:807
bool use_color_cursors()
Definition: general.cpp:907
void set_pixel_scale(const int scale)
Definition: general.cpp:414
bool show_status_on_ally_orb()
Definition: general.cpp:269
void set_show_ally_orb(bool show_orb)
Definition: general.cpp:265
std::string enemy_color()
Definition: general.cpp:342
void _set_fullscreen(bool ison)
Definition: general.cpp:455
void add_alias(const std::string &alias, const std::string &command)
Definition: general.cpp:933
void set_disable_auto_moves(bool value)
Definition: general.cpp:976
config * get_prefs()
Definition: general.cpp:235
bool UI_sound_on()
Definition: general.cpp:699
void load_hotkeys()
Definition: general.cpp:917
bool show_ally_orb()
Definition: general.cpp:262
std::string allied_color()
Definition: general.cpp:322
void set_language(const std::string &s)
Definition: general.cpp:540
void set_sub_achievement(const std::string &content_for, const std::string &id, const std::string &sub_id)
Marks the specified sub-achievement as completed.
Definition: general.cpp:1150
bool disable_auto_moves()
Definition: general.cpp:971
int music_volume()
Definition: general.cpp:605
int progress_achievement(const std::string &content_for, const std::string &id, int limit, int max_progress, int amount)
Increments the achievement's current progress by amount if it hasn't already been completed.
Definition: general.cpp:1063
bool show_enemy_orb()
Definition: general.cpp:276
void toggle_minimap_terrain_coding()
Definition: general.cpp:842
void _set_maximized(bool ison)
Definition: general.cpp:450
void set_UI_volume(int vol)
Definition: general.cpp:655
optional_const_config get_child(const std::string &key)
Definition: general.cpp:200
void save_sample_rate(const unsigned int rate)
Definition: general.cpp:950
bool animate_water()
Definition: general.cpp:822
unsigned int sample_rate()
Definition: general.cpp:945
std::string unmoved_color()
Definition: general.cpp:362
int pixel_scale()
Definition: general.cpp:408
void set_auto_pixel_scale(bool choice)
Definition: general.cpp:424
int keepalive_timeout()
Definition: general.cpp:505
const int max_pixel_scale
Definition: general.cpp:79
const int min_window_height
Definition: general.cpp:67
void set_child(const std::string &key, const config &val)
Definition: general.cpp:195
void save_hotkeys()
Definition: general.cpp:922
bool ellipses()
Definition: general.cpp:555
bool message_bell()
Definition: general.cpp:723
std::string gui_theme()
Definition: general.cpp:545
int draw_delay()
Definition: general.cpp:897
bool set_UI_sound(bool ison)
Definition: general.cpp:704
void set_tile_size(const unsigned int size)
Definition: general.cpp:670
void set_ellipses(bool ison)
Definition: general.cpp:560
void set_editor_chosen_addon(const std::string &addon_id)
Definition: general.cpp:1205
bool confirm_load_save_from_different_version()
Definition: general.cpp:961
void set_selected_achievement_group(const std::string &content_for)
Definition: general.cpp:1016
void set_enemy_color(const std::string &color_id)
Definition: general.cpp:348
bool show_moved_orb()
Definition: general.cpp:283
void set_moved_color(const std::string &color_id)
Definition: general.cpp:358
bool minimap_draw_units()
Definition: general.cpp:847
std::string core_id()
Definition: general.cpp:332
const int min_window_width
Definition: general.cpp:66
void set_animate_map(bool value)
Definition: general.cpp:877
bool middle_click_scrolls()
Definition: general.cpp:797
void toggle_minimap_draw_terrain()
Definition: general.cpp:872
std::string get(const std::string &key)
Definition: general.cpp:213
int sound_volume()
Definition: general.cpp:620
void set_show_status_on_ally_orb(bool show_orb)
Definition: general.cpp:272
void set_idle_anim_rate(int rate)
Definition: general.cpp:530
void set_show_moved_orb(bool show_orb)
Definition: general.cpp:286
void erase(const std::string &key)
Definition: general.cpp:205
std::string language()
Definition: general.cpp:535
bool grid()
Definition: general.cpp:565
void _set_color_cursors(bool value)
Definition: general.cpp:912
void set_show_unmoved_orb(bool show_orb)
Definition: general.cpp:293
bool achievement(const std::string &content_for, const std::string &id)
Definition: general.cpp:1021
bool animate_map()
Definition: general.cpp:817
bool show_disengaged_orb()
Definition: general.cpp:304
int font_scaling()
Definition: general.cpp:489
bool show_fps()
Definition: general.cpp:887
void toggle_minimap_movement_coding()
Definition: general.cpp:832
void set_scroll_to_action(bool ison)
Definition: general.cpp:387
void set_use_twelve_hour_clock_format(bool value)
int scroll_speed()
Definition: general.cpp:787
void set_partial_color(const std::string &color_id)
Definition: general.cpp:378
bool turn_bell()
Definition: general.cpp:675
void _set_resolution(const point &res)
Definition: general.cpp:444
bool sub_achievement(const std::string &content_for, const std::string &id, const std::string &sub_id)
Definition: general.cpp:1124
std::size_t size(const std::string &str)
Length in characters of a UTF-8 string.
Definition: unicode.cpp:85
void scale(size_t factor, const uint32_t *src, uint32_t *trg, int srcWidth, int srcHeight, const ScalerCfg &cfg=ScalerCfg(), int yFirst=0, int yLast=std::numeric_limits< int >::max())
Definition: xbrz.cpp:1189
Holds a 2D point.
Definition: point.hpp:25
static map_location::DIRECTION s