; 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 <http://www.gnu.org/licenses/>.
;

; Script settings as stored in the main configuration file ("openttd.cfg")
; and in the savegame PATS chunk.

[pre-amble]
static constexpr std::initializer_list<const char*> _settings_profiles{"easy", "medium", "hard"};

static const SettingVariant _script_settings_table[] = {
[post-amble]
};
[templates]
SDT_BOOL   =   SDT_BOOL(GameSettings, $var,        $flags, $def,                              $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),
SDT_OMANY  =  SDT_OMANY(GameSettings, $var, $type, $flags, $def,             $max, $full,     $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $load, $cat, $extra, $startup),
SDT_VAR    =    SDT_VAR(GameSettings, $var, $type, $flags, $def,       $min, $max, $interval, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to,        $cat, $extra, $startup),

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

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


[SDT_OMANY]
var      = script.settings_profile
type     = SLE_UINT8
from     = SLV_178
flags    = SF_GUI_DROPDOWN
def      = SP_EASY
min      = SP_EASY
max      = SP_HARD
full     = _settings_profiles
str      = STR_CONFIG_SETTING_AI_PROFILE
strhelp  = STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT
strval   = STR_CONFIG_SETTING_AI_PROFILE_EASY
cat      = SC_BASIC

[SDT_VAR]
var      = script.script_max_opcode_till_suspend
type     = SLE_UINT32
from     = SLV_107
flags    = SF_NEWGAME_ONLY
def      = 10000
min      = 500
max      = 250000
interval = 2500
str      = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES
strhelp  = STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT
strval   = STR_JUST_COMMA
cat      = SC_EXPERT

[SDT_VAR]
var      = script.script_max_memory_megabytes
type     = SLE_UINT32
from     = SLV_SCRIPT_MEMLIMIT
flags    = SF_NEWGAME_ONLY
def      = 1024
min      = 8
max      = 8192
interval = 8
str      = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY
strhelp  = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT
strval   = STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE
cat      = SC_EXPERT

[SDT_BOOL]
var      = ai.ai_in_multiplayer
def      = true
str      = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER
strhelp  = STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT
cat      = SC_BASIC

[SDT_BOOL]
var      = ai.ai_disable_veh_train
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_TRAINS
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT

[SDT_BOOL]
var      = ai.ai_disable_veh_roadveh
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT

[SDT_BOOL]
var      = ai.ai_disable_veh_aircraft
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT

[SDT_BOOL]
var      = ai.ai_disable_veh_ship
def      = false
str      = STR_CONFIG_SETTING_AI_BUILDS_SHIPS
strhelp  = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT
