1; This file is part of OpenTTD.
2; OpenTTD 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, version 2.
3; OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4; See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
5;
6
7; GUI settings as stored in the main configuration file ("openttd.cfg").
8
9[pre-amble]
10static void v_PositionMainToolbar(int32 new_value);
11static void v_PositionStatusbar(int32 new_value);
12static void RedrawSmallmap(int32 new_value);
13static void InvalidateCompanyLiveryWindow(int32 new_value);
14static void InvalidateNewGRFChangeWindows(int32 new_value);
15static void ZoomMinMaxChanged(int32 new_value);
16static void SpriteZoomMinChanged(int32 new_value);
17
18static constexpr std::initializer_list<const char*> _autosave_interval{"off", "monthly", "quarterly", "half year", "yearly"};
19static constexpr std::initializer_list<const char*> _osk_activation{"disabled", "double", "single", "immediately"};
20static constexpr std::initializer_list<const char*> _savegame_date{"long", "short", "iso"};
21
22static const SettingVariant _gui_settings_table[] = {
23[post-amble]
24};
25[templates]
26SDTC_BOOL  =  SDTC_BOOL(              $var,        $flags, $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
27SDTC_OMANY = SDTC_OMANY(              $var, $type, $flags, $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
28SDTC_VAR   =   SDTC_VAR(              $var, $type, $flags, $def,       $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
29
30[validation]
31SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
32SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
33
34[defaults]
35flags    = SF_NONE
36interval = 0
37str      = STR_NULL
38strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
39strval   = STR_NULL
40pre_cb   = nullptr
41post_cb  = nullptr
42load     = nullptr
43from     = SL_MIN_VERSION
44to       = SL_MAX_VERSION
45cat      = SC_ADVANCED
46extra    = 0
47startup  = false
48
49
50[SDTC_OMANY]
51var      = gui.autosave
52type     = SLE_UINT8
53flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
54def      = 1
55max      = 4
56full     = _autosave_interval
57str      = STR_CONFIG_SETTING_AUTOSAVE
58strhelp  = STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT
59strval   = STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF
60cat      = SC_BASIC
61
62[SDTC_BOOL]
63var      = gui.threaded_saves
64flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
65def      = true
66cat      = SC_EXPERT
67
68[SDTC_OMANY]
69var      = gui.date_format_in_default_names
70type     = SLE_UINT8
71flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
72def      = 2
73max      = 2
74full     = _savegame_date
75str      = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES
76strhelp  = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT
77strval   = STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG
78
79[SDTC_BOOL]
80var      = gui.show_finances
81flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
82def      = true
83str      = STR_CONFIG_SETTING_SHOWFINANCES
84strhelp  = STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT
85cat      = SC_BASIC
86
87[SDTC_VAR]
88var      = gui.auto_scrolling
89type     = SLE_UINT8
90flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
91def      = 0
92min      = 0
93max      = 3
94str      = STR_CONFIG_SETTING_AUTOSCROLL
95strhelp  = STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT
96strval   = STR_CONFIG_SETTING_AUTOSCROLL_DISABLED
97cat      = SC_BASIC
98
99[SDTC_VAR]
100ifdef    = __EMSCRIPTEN__
101var      = gui.scroll_mode
102type     = SLE_UINT8
103flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
104def      = 2
105min      = 0
106max      = 3
107str      = STR_CONFIG_SETTING_SCROLLMODE
108strhelp  = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT
109strval   = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT
110cat      = SC_BASIC
111
112[SDTC_VAR]
113ifndef    = __EMSCRIPTEN__
114var      = gui.scroll_mode
115type     = SLE_UINT8
116flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
117def      = 0
118min      = 0
119max      = 3
120str      = STR_CONFIG_SETTING_SCROLLMODE
121strhelp  = STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT
122strval   = STR_CONFIG_SETTING_SCROLLMODE_DEFAULT
123cat      = SC_BASIC
124
125[SDTC_BOOL]
126var      = gui.smooth_scroll
127flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
128def      = false
129str      = STR_CONFIG_SETTING_SMOOTH_SCROLLING
130strhelp  = STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT
131
132[SDTC_BOOL]
133var      = gui.right_mouse_wnd_close
134flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
135def      = false
136str      = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE
137strhelp  = STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT
138cat      = SC_BASIC
139
140; We might need to emulate a right mouse button on mac
141[SDTC_VAR]
142ifdef    = __APPLE__
143var      = gui.right_mouse_btn_emulation
144type     = SLE_UINT8
145flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
146def      = 0
147min      = 0
148max      = 2
149str      = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU
150strhelp  = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT
151strval   = STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND
152cat      = SC_BASIC
153
154[SDTC_BOOL]
155var      = gui.measure_tooltip
156flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
157def      = true
158str      = STR_CONFIG_SETTING_MEASURE_TOOLTIP
159strhelp  = STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT
160cat      = SC_BASIC
161
162[SDTC_VAR]
163var      = gui.errmsg_duration
164type     = SLE_UINT8
165flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
166def      = 5
167min      = 0
168max      = 20
169str      = STR_CONFIG_SETTING_ERRMSG_DURATION
170strhelp  = STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT
171strval   = STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE
172
173[SDTC_VAR]
174var      = gui.hover_delay_ms
175type     = SLE_UINT16
176flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
177def      = 250
178min      = 50
179max      = 6000
180interval = 50
181str      = STR_CONFIG_SETTING_HOVER_DELAY
182strhelp  = STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT
183strval   = STR_CONFIG_SETTING_HOVER_DELAY_VALUE
184
185[SDTC_OMANY]
186var      = gui.osk_activation
187type     = SLE_UINT8
188flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
189str      = STR_CONFIG_SETTING_OSK_ACTIVATION
190strhelp  = STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT
191strval   = STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED
192flags    = SF_GUI_DROPDOWN
193full     = _osk_activation
194def      = 1
195min      = 0
196max      = 3
197cat      = SC_BASIC
198
199[SDTC_VAR]
200var      = gui.toolbar_pos
201type     = SLE_UINT8
202flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
203def      = 1
204min      = 0
205max      = 2
206str      = STR_CONFIG_SETTING_TOOLBAR_POS
207strhelp  = STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT
208strval   = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT
209post_cb  = v_PositionMainToolbar
210cat      = SC_BASIC
211
212[SDTC_VAR]
213var      = gui.statusbar_pos
214type     = SLE_UINT8
215flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
216def      = 1
217min      = 0
218max      = 2
219str      = STR_CONFIG_SETTING_STATUSBAR_POS
220strhelp  = STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT
221strval   = STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT
222post_cb  = v_PositionStatusbar
223cat      = SC_BASIC
224
225[SDTC_VAR]
226var      = gui.window_snap_radius
227type     = SLE_UINT8
228flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
229def      = 10
230min      = 1
231max      = 32
232str      = STR_CONFIG_SETTING_SNAP_RADIUS
233strhelp  = STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT
234strval   = STR_CONFIG_SETTING_SNAP_RADIUS_VALUE
235cat      = SC_EXPERT
236
237[SDTC_VAR]
238var      = gui.window_soft_limit
239type     = SLE_UINT8
240flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
241def      = 20
242min      = 5
243max      = 255
244interval = 1
245str      = STR_CONFIG_SETTING_SOFT_LIMIT
246strhelp  = STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT
247strval   = STR_CONFIG_SETTING_SOFT_LIMIT_VALUE
248cat      = SC_EXPERT
249
250[SDTC_VAR]
251var      = gui.zoom_min
252type     = SLE_UINT8
253flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
254def      = ZOOM_LVL_MIN
255min      = ZOOM_LVL_MIN
256max      = ZOOM_LVL_OUT_4X
257str      = STR_CONFIG_SETTING_ZOOM_MIN
258strhelp  = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT
259strval   = STR_CONFIG_SETTING_ZOOM_LVL_MIN
260post_cb  = ZoomMinMaxChanged
261startup  = true
262
263[SDTC_VAR]
264var      = gui.zoom_max
265type     = SLE_UINT8
266flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
267def      = ZOOM_LVL_MAX
268min      = ZOOM_LVL_OUT_8X
269max      = ZOOM_LVL_MAX
270str      = STR_CONFIG_SETTING_ZOOM_MAX
271strhelp  = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT
272strval   = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X
273post_cb  = ZoomMinMaxChanged
274startup  = true
275
276[SDTC_VAR]
277var      = gui.sprite_zoom_min
278type     = SLE_UINT8
279flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
280def      = ZOOM_LVL_MIN
281min      = ZOOM_LVL_MIN
282max      = ZOOM_LVL_OUT_4X
283str      = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN
284strhelp  = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT
285strval   = STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN
286post_cb  = SpriteZoomMinChanged
287
288[SDTC_BOOL]
289var      = gui.population_in_label
290flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
291def      = true
292str      = STR_CONFIG_SETTING_POPULATION_IN_LABEL
293strhelp  = STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT
294post_cb  = [](auto) { UpdateAllTownVirtCoords(); }
295
296[SDTC_BOOL]
297var      = gui.link_terraform_toolbar
298flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
299def      = false
300str      = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR
301strhelp  = STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT
302
303[SDTC_VAR]
304var      = gui.smallmap_land_colour
305type     = SLE_UINT8
306flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
307def      = 0
308min      = 0
309max      = 2
310str      = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR
311strhelp  = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT
312strval   = STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN
313post_cb  = RedrawSmallmap
314
315[SDTC_VAR]
316var      = gui.liveries
317type     = SLE_UINT8
318flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
319def      = 2
320min      = 0
321max      = 2
322str      = STR_CONFIG_SETTING_LIVERIES
323strhelp  = STR_CONFIG_SETTING_LIVERIES_HELPTEXT
324strval   = STR_CONFIG_SETTING_LIVERIES_NONE
325post_cb  = InvalidateCompanyLiveryWindow
326
327[SDTC_VAR]
328var      = gui.starting_colour
329type     = SLE_UINT8
330flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
331def      = COLOUR_END
332min      = 0
333max      = COLOUR_END
334str      = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR
335strhelp  = STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT
336strval   = STR_COLOUR_DARK_BLUE
337
338[SDTC_BOOL]
339var      = gui.auto_remove_signals
340flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
341def      = false
342str      = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS
343strhelp  = STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT
344cat      = SC_ADVANCED
345
346[SDTC_BOOL]
347var      = gui.prefer_teamchat
348flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
349def      = false
350str      = STR_CONFIG_SETTING_PREFER_TEAMCHAT
351strhelp  = STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT
352cat      = SC_BASIC
353
354[SDTC_VAR]
355var      = gui.scrollwheel_scrolling
356type     = SLE_UINT8
357flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
358def      = 0
359min      = 0
360max      = 2
361str      = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING
362strhelp  = STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT
363strval   = STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM
364cat      = SC_BASIC
365
366[SDTC_VAR]
367var      = gui.scrollwheel_multiplier
368type     = SLE_UINT8
369flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
370def      = 5
371min      = 1
372max      = 15
373interval = 1
374str      = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER
375strhelp  = STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT
376strval   = STR_JUST_COMMA
377cat      = SC_BASIC
378
379[SDTC_BOOL]
380var      = gui.pause_on_newgame
381flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
382def      = false
383str      = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME
384strhelp  = STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT
385cat      = SC_BASIC
386
387[SDTC_VAR]
388var      = gui.advanced_vehicle_list
389type     = SLE_UINT8
390flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
391def      = 1
392min      = 0
393max      = 2
394str      = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS
395strhelp  = STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT
396strval   = STR_CONFIG_SETTING_COMPANIES_OFF
397
398[SDTC_BOOL]
399var      = gui.timetable_in_ticks
400flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
401def      = false
402str      = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS
403strhelp  = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT
404post_cb  = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); }
405cat      = SC_EXPERT
406
407[SDTC_BOOL]
408var      = gui.timetable_arrival_departure
409flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
410def      = true
411str      = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE
412strhelp  = STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT
413post_cb  = [](auto) { InvalidateWindowClassesData(WC_VEHICLE_TIMETABLE, VIWD_MODIFY_ORDERS); }
414
415[SDTC_BOOL]
416var      = gui.quick_goto
417flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
418def      = true
419str      = STR_CONFIG_SETTING_QUICKGOTO
420strhelp  = STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT
421cat      = SC_BASIC
422
423[SDTC_VAR]
424var      = gui.loading_indicators
425type     = SLE_UINT8
426flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
427def      = 1
428min      = 0
429max      = 2
430str      = STR_CONFIG_SETTING_LOADING_INDICATORS
431strhelp  = STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT
432strval   = STR_CONFIG_SETTING_COMPANIES_OFF
433post_cb  = [](auto) { MarkWholeScreenDirty(); }
434cat      = SC_BASIC
435
436[SDTC_VAR]
437var      = gui.default_rail_type
438type     = SLE_UINT8
439flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
440def      = 0
441min      = 0
442max      = 2
443str      = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE
444strhelp  = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT
445strval   = STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST
446cat      = SC_BASIC
447
448[SDTC_VAR]
449var      = gui.signal_gui_mode
450type     = SLE_UINT8
451flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
452def      = 0
453min      = 0
454max      = 1
455str      = STR_CONFIG_SETTING_SIGNAL_GUI_MODE
456strhelp  = STR_CONFIG_SETTING_SIGNAL_GUI_MODE_HELPTEXT
457strval   = STR_CONFIG_SETTING_SIGNAL_GUI_MODE_PATH
458post_cb  = [](auto) { CloseWindowByClass(WC_BUILD_SIGNAL); }
459cat      = SC_ADVANCED
460
461[SDTC_VAR]
462var      = gui.coloured_news_year
463type     = SLE_INT32
464flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
465def      = 2000
466min      = MIN_YEAR
467max      = MAX_YEAR
468interval = 1
469str      = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR
470strhelp  = STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT
471strval   = STR_JUST_INT
472cat      = SC_EXPERT
473
474[SDTC_VAR]
475var      = gui.cycle_signal_types
476type     = SLE_UINT8
477flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
478def      = 0
479min      = 0
480max      = 1
481interval = 1
482str      = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES
483strhelp  = STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT
484strval   = STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS
485cat      = SC_ADVANCED
486
487[SDTC_VAR]
488var      = gui.drag_signals_density
489type     = SLE_UINT8
490flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
491def      = 4
492min      = 1
493max      = 20
494str      = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY
495strhelp  = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT
496strval   = STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE
497post_cb  = [](auto) { InvalidateWindowData(WC_BUILD_SIGNAL, 0); }
498cat      = SC_BASIC
499
500[SDTC_BOOL]
501var      = gui.drag_signals_fixed_distance
502flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
503def      = false
504str      = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE
505strhelp  = STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT
506cat      = SC_EXPERT
507
508[SDTC_VAR]
509var      = gui.semaphore_build_before
510type     = SLE_INT32
511flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
512def      = 1950
513min      = MIN_YEAR
514max      = MAX_YEAR
515interval = 1
516str      = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE
517strhelp  = STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT
518strval   = STR_JUST_INT
519post_cb  = ResetSignalVariant
520
521[SDTC_BOOL]
522var      = gui.vehicle_income_warn
523flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
524def      = true
525str      = STR_CONFIG_SETTING_WARN_INCOME_LESS
526strhelp  = STR_CONFIG_SETTING_WARN_INCOME_LESS_HELPTEXT
527cat      = SC_BASIC
528
529[SDTC_VAR]
530var      = gui.order_review_system
531type     = SLE_UINT8
532flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
533def      = 2
534min      = 0
535max      = 2
536str      = STR_CONFIG_SETTING_ORDER_REVIEW
537strhelp  = STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT
538strval   = STR_CONFIG_SETTING_ORDER_REVIEW_OFF
539cat      = SC_BASIC
540
541[SDTC_BOOL]
542var      = gui.lost_vehicle_warn
543flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
544def      = true
545str      = STR_CONFIG_SETTING_WARN_LOST_VEHICLE
546strhelp  = STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT
547
548[SDTC_BOOL]
549var      = gui.new_nonstop
550flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
551def      = true
552str      = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT
553strhelp  = STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT
554cat      = SC_BASIC
555
556[SDTC_VAR]
557var      = gui.stop_location
558type     = SLE_UINT8
559flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
560def      = 2
561min      = 0
562max      = 2
563interval = 1
564str      = STR_CONFIG_SETTING_STOP_LOCATION
565strhelp  = STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT
566strval   = STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END
567cat      = SC_BASIC
568
569[SDTC_BOOL]
570var      = gui.keep_all_autosave
571flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
572def      = false
573
574[SDTC_BOOL]
575var      = gui.autosave_on_exit
576flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
577def      = false
578cat      = SC_BASIC
579
580[SDTC_BOOL]
581var      = gui.autosave_on_network_disconnect
582flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
583def      = true
584cat      = SC_EXPERT
585
586[SDTC_VAR]
587var      = gui.max_num_autosaves
588type     = SLE_UINT8
589flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
590def      = 16
591min      = 0
592max      = 255
593
594[SDTC_BOOL]
595var      = gui.auto_euro
596flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
597def      = true
598
599[SDTC_VAR]
600var      = gui.news_message_timeout
601type     = SLE_UINT8
602flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
603def      = 2
604min      = 1
605max      = 255
606
607[SDTC_BOOL]
608var      = gui.show_track_reservation
609flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
610def      = true
611str      = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION
612strhelp  = STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT
613post_cb  = [](auto) { MarkWholeScreenDirty(); }
614cat      = SC_BASIC
615
616[SDTC_VAR]
617var      = gui.station_numtracks
618type     = SLE_UINT8
619flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
620def      = 1
621min      = 1
622max      = 7
623
624[SDTC_VAR]
625var      = gui.station_platlength
626type     = SLE_UINT8
627flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
628def      = 5
629min      = 1
630max      = 7
631cat      = SC_BASIC
632
633[SDTC_BOOL]
634var      = gui.station_dragdrop
635flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
636def      = true
637cat      = SC_BASIC
638
639[SDTC_BOOL]
640var      = gui.station_show_coverage
641flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
642def      = false
643cat      = SC_BASIC
644
645[SDTC_BOOL]
646var      = gui.persistent_buildingtools
647flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
648def      = true
649str      = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS
650strhelp  = STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT
651cat      = SC_BASIC
652
653[SDTC_BOOL]
654var      = gui.expenses_layout
655flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
656def      = true
657str      = STR_CONFIG_SETTING_EXPENSES_LAYOUT
658strhelp  = STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT
659post_cb  = [](auto) { MarkWholeScreenDirty(); }
660
661[SDTC_VAR]
662var      = gui.station_gui_group_order
663type     = SLE_UINT8
664flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
665def      = 0
666min      = 0
667max      = 5
668interval = 1
669
670[SDTC_VAR]
671var      = gui.station_gui_sort_by
672type     = SLE_UINT8
673flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
674def      = 0
675min      = 0
676max      = 3
677interval = 1
678
679[SDTC_VAR]
680var      = gui.station_gui_sort_order
681type     = SLE_UINT8
682flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
683def      = 0
684min      = 0
685max      = 1
686interval = 1
687
688[SDTC_VAR]
689var      = gui.missing_strings_threshold
690type     = SLE_UINT8
691flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
692def      = 25
693min      = 1
694max      = UINT8_MAX
695cat      = SC_EXPERT
696
697[SDTC_VAR]
698var      = gui.graph_line_thickness
699type     = SLE_UINT8
700flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
701def      = 3
702min      = 1
703max      = 5
704str      = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS
705strhelp  = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT
706strval   = STR_JUST_COMMA
707post_cb  = [](auto) { MarkWholeScreenDirty(); }
708
709[SDTC_BOOL]
710var      = gui.show_newgrf_name
711flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
712def      = false
713str      = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME
714strhelp  = STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT
715post_cb  = [](auto) { MarkWholeScreenDirty(); }
716cat      = SC_ADVANCED
717
718; For the dedicated build we'll enable dates in logs by default.
719[SDTC_BOOL]
720ifdef    = DEDICATED
721var      = gui.show_date_in_logs
722flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
723def      = true
724
725[SDTC_BOOL]
726ifndef   = DEDICATED
727var      = gui.show_date_in_logs
728flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
729def      = false
730
731[SDTC_VAR]
732var      = gui.settings_restriction_mode
733type     = SLE_UINT8
734flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
735def      = 0
736min      = 0
737max      = 2
738
739[SDTC_VAR]
740var      = gui.developer
741type     = SLE_UINT8
742flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
743def      = 1
744min      = 0
745max      = 2
746cat      = SC_EXPERT
747post_cb  = [](auto) { DebugReconsiderSendRemoteMessages(); }
748
749[SDTC_BOOL]
750var      = gui.newgrf_developer_tools
751flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
752def      = false
753post_cb  = InvalidateNewGRFChangeWindows
754cat      = SC_EXPERT
755
756[SDTC_BOOL]
757var      = gui.ai_developer_tools
758flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
759def      = false
760post_cb  = [](auto) { InvalidateWindowClassesData(WC_AI_SETTINGS); }
761cat      = SC_EXPERT
762
763[SDTC_BOOL]
764var      = gui.scenario_developer
765flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
766def      = false
767post_cb  = InvalidateNewGRFChangeWindows
768
769[SDTC_BOOL]
770var      = gui.newgrf_show_old_versions
771flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
772def      = false
773cat      = SC_EXPERT
774
775[SDTC_VAR]
776var      = gui.newgrf_default_palette
777type     = SLE_UINT8
778flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
779def      = 1
780min      = 0
781max      = 1
782post_cb  = UpdateNewGRFConfigPalette
783cat      = SC_EXPERT
784
785[SDTC_VAR]
786var      = gui.console_backlog_timeout
787type     = SLE_UINT16
788flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
789def      = 100
790min      = 10
791max      = 65500
792
793[SDTC_VAR]
794var      = gui.console_backlog_length
795type     = SLE_UINT16
796flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
797def      = 100
798min      = 10
799max      = 65500
800
801[SDTC_VAR]
802var      = gui.refresh_rate
803type     = SLE_UINT16
804flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
805def      = 60
806min      = 10
807max      = 1000
808cat      = SC_EXPERT
809startup  = true
810
811[SDTC_VAR]
812var      = gui.fast_forward_speed_limit
813type     = SLE_UINT16
814flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NO_NETWORK
815def      = 2500
816min      = 0
817max      = 50000
818interval = 10
819str      = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT
820strhelp  = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT
821strval   = STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL
822cat      = SC_BASIC
823
824[SDTC_VAR]
825var      = gui.network_chat_box_width_pct
826type     = SLE_UINT16
827flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
828def      = 40
829min      = 10
830max      = 100
831cat      = SC_EXPERT
832
833[SDTC_VAR]
834var      = gui.network_chat_box_height
835type     = SLE_UINT8
836flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
837def      = 25
838min      = 5
839max      = 255
840cat      = SC_EXPERT
841
842[SDTC_VAR]
843var      = gui.network_chat_timeout
844type     = SLE_UINT16
845flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
846def      = 20
847min      = 1
848max      = 65535
849cat      = SC_EXPERT
850
851