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; Network settings as stored in the main configuration file ("openttd.cfg").
8
9[pre-amble]
10static void UpdateClientConfigValues();
11
12static constexpr std::initializer_list<const char*> _server_game_type{"local", "public", "invite-only"};
13static constexpr std::initializer_list<const char*> _use_relay_service{"never", "ask", "allow"};
14
15static const SettingVariant _network_settings_table[] = {
16[post-amble]
17};
18[templates]
19SDTC_BOOL  =  SDTC_BOOL(              $var,        $flags, $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
20SDTC_OMANY = SDTC_OMANY(              $var, $type, $flags, $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
21SDTC_VAR   =   SDTC_VAR(              $var, $type, $flags, $def,       $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
22
23[validation]
24SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
25SDTC_VAR = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
26
27[defaults]
28flags    = SF_NONE
29interval = 0
30str      = STR_NULL
31strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
32strval   = STR_NULL
33pre_cb   = nullptr
34post_cb  = nullptr
35load     = nullptr
36from     = SL_MIN_VERSION
37to       = SL_MAX_VERSION
38cat      = SC_ADVANCED
39extra    = 0
40startup  = false
41
42
43[SDTC_VAR]
44var      = network.sync_freq
45type     = SLE_UINT16
46flags    = SF_NOT_IN_SAVE | SF_NOT_IN_CONFIG | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
47def      = 100
48min      = 0
49max      = 100
50cat      = SC_EXPERT
51
52[SDTC_VAR]
53var      = network.frame_freq
54type     = SLE_UINT8
55flags    = SF_NOT_IN_SAVE | SF_NOT_IN_CONFIG | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
56def      = 0
57min      = 0
58max      = 100
59cat      = SC_EXPERT
60
61[SDTC_VAR]
62var      = network.commands_per_frame
63type     = SLE_UINT16
64flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
65def      = 2
66min      = 1
67max      = 65535
68cat      = SC_EXPERT
69
70[SDTC_VAR]
71var      = network.max_commands_in_queue
72type     = SLE_UINT16
73flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
74def      = 16
75min      = 1
76max      = 65535
77cat      = SC_EXPERT
78
79[SDTC_VAR]
80var      = network.bytes_per_frame
81type     = SLE_UINT16
82flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
83def      = 8
84min      = 1
85max      = 65535
86cat      = SC_EXPERT
87
88[SDTC_VAR]
89var      = network.bytes_per_frame_burst
90type     = SLE_UINT16
91flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
92def      = 256
93min      = 1
94max      = 65535
95cat      = SC_EXPERT
96
97[SDTC_VAR]
98var      = network.max_init_time
99type     = SLE_UINT16
100flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
101def      = 100
102min      = 0
103max      = 32000
104cat      = SC_EXPERT
105
106[SDTC_VAR]
107var      = network.max_join_time
108type     = SLE_UINT16
109flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
110def      = 500
111min      = 0
112max      = 32000
113
114[SDTC_VAR]
115var      = network.max_download_time
116type     = SLE_UINT16
117flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
118def      = 1000
119min      = 0
120max      = 32000
121
122[SDTC_VAR]
123var      = network.max_password_time
124type     = SLE_UINT16
125flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
126def      = 2000
127min      = 0
128max      = 32000
129
130[SDTC_VAR]
131var      = network.max_lag_time
132type     = SLE_UINT16
133flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
134def      = 500
135min      = 0
136max      = 32000
137
138[SDTC_BOOL]
139var      = network.pause_on_join
140flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
141def      = true
142
143[SDTC_VAR]
144var      = network.server_port
145type     = SLE_UINT16
146flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
147def      = NETWORK_DEFAULT_PORT
148min      = 0
149max      = 65535
150cat      = SC_EXPERT
151
152[SDTC_VAR]
153var      = network.server_admin_port
154type     = SLE_UINT16
155flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
156def      = NETWORK_ADMIN_PORT
157min      = 0
158max      = 65535
159cat      = SC_EXPERT
160
161[SDTC_BOOL]
162var      = network.server_admin_chat
163flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
164def      = true
165cat      = SC_EXPERT
166
167[SDTC_OMANY]
168var      = network.server_game_type
169type     = SLE_UINT8
170flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
171def      = SERVER_GAME_TYPE_LOCAL
172min      = SERVER_GAME_TYPE_LOCAL
173max      = SERVER_GAME_TYPE_INVITE_ONLY
174full     = _server_game_type
175post_cb  = [](auto) { NetworkUpdateServerGameType(); }
176cat      = SC_BASIC
177
178[SDTC_BOOL]
179var      = network.autoclean_companies
180flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
181def      = false
182
183[SDTC_VAR]
184var      = network.autoclean_unprotected
185type     = SLE_UINT8
186flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
187def      = 12
188min      = 0
189max      = 240
190
191[SDTC_VAR]
192var      = network.autoclean_protected
193type     = SLE_UINT8
194flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
195def      = 36
196min      = 0
197max      = 240
198
199[SDTC_VAR]
200var      = network.autoclean_novehicles
201type     = SLE_UINT8
202flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
203def      = 0
204min      = 0
205max      = 240
206
207[SDTC_VAR]
208var      = network.max_companies
209type     = SLE_UINT8
210flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
211def      = 15
212min      = 1
213max      = MAX_COMPANIES
214post_cb  = [](auto) { UpdateClientConfigValues(); }
215cat      = SC_BASIC
216
217[SDTC_VAR]
218var      = network.max_clients
219type     = SLE_UINT8
220flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
221def      = 25
222min      = 2
223max      = MAX_CLIENTS
224post_cb  = [](auto) { UpdateClientConfigValues(); }
225cat      = SC_BASIC
226
227[SDTC_VAR]
228var      = network.restart_game_year
229type     = SLE_INT32
230flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL | SF_NETWORK_ONLY
231def      = 0
232min      = MIN_YEAR
233max      = MAX_YEAR
234interval = 1
235
236[SDTC_VAR]
237var      = network.min_active_clients
238type     = SLE_UINT8
239flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
240def      = 0
241min      = 0
242max      = MAX_CLIENTS
243
244[SDTC_BOOL]
245var      = network.reload_cfg
246flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_NETWORK_ONLY
247def      = false
248cat      = SC_EXPERT
249
250[SDTC_BOOL]
251var      = network.no_http_content_downloads
252flags    = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
253def      = false
254cat      = SC_EXPERT
255
256[SDTC_OMANY]
257var      = network.use_relay_service
258type     = SLE_UINT8
259flags    = SF_GUI_DROPDOWN | SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
260def      = URS_ASK
261min      = URS_NO
262max      = URS_ALLOW
263full     = _use_relay_service
264str      = STR_CONFIG_SETTING_USE_RELAY_SERVICE
265strhelp  = STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT
266strval   = STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER
267cat      = SC_BASIC
268