[pre-amble] static const uint GAME_DIFFICULTY_NUM = 18; static uint16 _old_diff_custom[GAME_DIFFICULTY_NUM]; /* Most of these strings are used both for gameopt-backward compatability * and the settings tables. The rest is here for consistency. */ static const char *_locale_currencies = "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|RON|RUR|SIT|SEK|YTL|SKK|BRL|EEK|custom"; static const char *_locale_units = "imperial|metric|si"; static const char *_town_names = "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovak|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish|italian|catalan"; static const char *_climates = "temperate|arctic|tropic|toyland"; static const char *_autosave_interval = "off|monthly|quarterly|half year|yearly"; static const char *_roadsides = "left|right"; static const char *_savegame_date = "long|short|iso"; #ifdef ENABLE_NETWORK static const char *_server_langs = "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN|AFRIKAANS|CROATIAN|CATALAN|ESTONIAN|GALICIAN|GREEK|LATVIAN"; #endif /* ENABLE_NETWORK */ static const SettingDesc _gameopt_settings[] = { /* In version 4 a new difficulty setting has been added to the difficulty settings, * town attitude towards demolishing. Needs special handling because some dimwit thought * it funny to have the GameDifficulty struct be an array while it is a struct of * same-sized members * XXX - To save file-space and since values are never bigger than about 10? only * save the first 16 bits in the savegame. Question is why the values are still int32 * and why not byte for example? * 'SLE_FILE_I16 | SLE_VAR_U16' in "diff_custom" is needed to get around SlArray() hack * for savegames version 0 - though it is an array, it has to go through the byteswap process */ [post-amble] }; [templates] SDTG_GENERAL = SDTG_GENERAL($name, $sdt_cmd, $sle_cmd, $type, $flags, $guiflags, $var, $length, $def, $min, $max, $interval, $full, $str, $proc, $from, $to), SDT_CONDNULL = SDT_CONDNULL($length, $from, $to), SDTC_CONDOMANY = SDTC_CONDOMANY( $var, $type, $from, $to, $flags, $guiflags, $def, $max, $full, $str, $proc), SDT_OMANY = SDT_OMANY($base, $var, $type, $flags, $guiflags, $def, $max, $full, $str, $proc, $load), SDT_VAR = SDT_VAR($base, $var, $type, $flags, $guiflags, $def, $min, $max, $interval, $str, $proc), SDT_END = SDT_END() [defaults] flags = 0 guiflags = 0 interval = 0 str = STR_NULL proc = NULL load = NULL from = 0 to = SL_MAX_VERSION [SDTG_GENERAL] name = ""diff_custom"" sdt_cmd = SDT_INTLIST sle_cmd = SL_ARR type = SLE_FILE_I16 | SLE_VAR_U16 flags = C var = _old_diff_custom length = 17 def = 0 min = 0 max = 0 full = NULL to = 3 [SDTG_GENERAL] name = ""diff_custom"" sdt_cmd = SDT_INTLIST sle_cmd = SL_ARR type = SLE_UINT16 flags = C var = _old_diff_custom length = 18 def = 0 min = 0 max = 0 full = NULL from = 4 ## [SDT_VAR] base = GameSettings var = difficulty.diff_level type = SLE_UINT8 def = 3 min = 0 max = 3 [SDT_OMANY] base = GameSettings var = locale.currency type = SLE_UINT8 flags = N def = 0 max = CUSTOM_CURRENCY_ID full = _locale_currencies [SDT_OMANY] base = GameSettings var = locale.units type = SLE_UINT8 flags = N def = 1 max = 2 full = _locale_units # There are only 21 predefined town_name values (0-20), but you can have more with newgrf action F so allow # these bigger values (21-255). Invalid values will fallback to english on use and (undefined string) in GUI. [SDT_OMANY] base = GameSettings var = game_creation.town_name type = SLE_UINT8 def = 0 max = 255 full = _town_names [SDT_OMANY] base = GameSettings var = game_creation.landscape type = SLE_UINT8 def = 0 max = 3 full = _climates load = ConvertLandscape [SDT_VAR] base = GameSettings var = game_creation.snow_line type = SLE_UINT8 def = DEF_SNOWLINE_HEIGHT * TILE_HEIGHT min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT max = MAX_SNOWLINE_HEIGHT * TILE_HEIGHT [SDT_CONDNULL] length = 1 to = 22 [SDTC_CONDOMANY] var = gui.autosave type = SLE_UINT8 from = 23 flags = S def = 1 max = 4 full = _autosave_interval [SDT_OMANY] base = GameSettings var = vehicle.road_side type = SLE_UINT8 def = 1 max = 1 full = _roadsides [SDT_END]