; This file is part of OpenTTD.
; 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.
; 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.
; 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 <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
;

; Network settings as stored in the private configuration file ("private.cfg").

[pre-amble]
static constexpr std::initializer_list<std::string_view> _use_relay_service{"never"sv, "ask"sv, "allow"sv};
static constexpr std::initializer_list<std::string_view> _participate_survey{"ask"sv, "no"sv, "yes"sv};

static const SettingVariant _network_private_settings_table[] = {
[post-amble]
};
[templates]
SDTC_BOOL  =  SDTC_BOOL(              $var,        SettingFlags({$flags}), $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $def_cb, $from, $to,        $cat, $extra, $startup),
SDTC_OMANY = SDTC_OMANY(              $var, $type, SettingFlags({$flags}), $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $str_cb, $help_cb, $val_cb, $def_cb, $from, $to,        $cat, $extra, $startup),
SDTC_SSTR  =  SDTC_SSTR(              $var, $type, SettingFlags({$flags}), $def,             $length,                                  $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),

[validation]
SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");

[defaults]
flags    =
interval = 0
str      = STR_NULL
strhelp  = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT
strval   = STR_NULL
pre_cb   = nullptr
post_cb  = nullptr
str_cb   = nullptr
help_cb  = nullptr
val_cb   = nullptr
def_cb   = nullptr
load     = nullptr
from     = SL_MIN_VERSION
to       = SL_MAX_VERSION
cat      = SC_ADVANCED
extra    = 0
startup  = false



[SDTC_SSTR]
var      = network.client_name
type     = SLE_STR
length   = NETWORK_CLIENT_NAME_LENGTH
flags    = SettingFlag::NotInSave, SettingFlag::NoNetworkSync
def      = """"
pre_cb   = NetworkValidateClientName
post_cb  = NetworkUpdateClientName
cat      = SC_BASIC

[SDTC_SSTR]
var      = network.server_name
type     = SLE_STR
length   = NETWORK_NAME_LENGTH
flags    = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::NetworkOnly
def      = """"
pre_cb   = NetworkValidateServerName
post_cb  = [](auto) { UpdateClientConfigValues(); }
cat      = SC_BASIC

[SDTC_SSTR]
var      = network.connect_to_ip
type     = SLE_STR
length   = 0
flags    = SettingFlag::NotInSave, SettingFlag::NoNetworkSync
def      = """"

[SDTC_SSTR]
var      = network.last_joined
type     = SLE_STR
length   = 0
flags    = SettingFlag::NotInSave, SettingFlag::NoNetworkSync
def      = """"
cat      = SC_EXPERT

[SDTC_OMANY]
var      = network.use_relay_service
type     = SLE_UINT8
flags    = SettingFlag::GuiDropdown, SettingFlag::NotInSave, SettingFlag::NoNetworkSync
def      = URS_ASK
min      = URS_NO
max      = URS_ALLOW
full     = _use_relay_service
str      = STR_CONFIG_SETTING_USE_RELAY_SERVICE
strhelp  = STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT
strval   = STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER
cat      = SC_BASIC

[SDTC_OMANY]
var      = network.participate_survey
type     = SLE_UINT8
flags    = SettingFlag::NotInSave, SettingFlag::NoNetworkSync
def      = PS_ASK
min      = PS_ASK
max      = PS_YES
full     = _participate_survey
