diff --git a/lang/english.txt b/lang/english.txt index 81909a6e66..b3a636ca77 100644 --- a/lang/english.txt +++ b/lang/english.txt @@ -838,6 +838,7 @@ STR_TOWNNAME_ROMANIAN :Romanian STR_TOWNNAME_CZECH :Czech STR_TOWNNAME_SWISS :Swiss STR_TOWNNAME_DANISH :Danish +STR_TOWNNAME_TURKISH :Turkish ############ end of townname region STR_CURR_GBP :Pounds (£) diff --git a/namegen.c b/namegen.c index f058a3e8fd..04bf022ebc 100644 --- a/namegen.c +++ b/namegen.c @@ -593,6 +593,34 @@ static byte MakeDanishTownName(char *buf, uint32 seed) return 0; } +static byte MakeTurkishTownName(char *buf, uint32 seed) +{ + uint i; + + // null terminates the string for strcat + strcpy(buf, ""); + + if ((i = SeedModChance(0, 5, seed)) == 0) { + strcat(buf, name_turkish_prefix[SeedModChance( 2, lengthof(name_turkish_prefix), seed)]); + + // middle segment + strcat(buf, name_turkish_middle[SeedModChance( 4, lengthof(name_turkish_middle), seed)]); + + // optional suffix + if (SeedModChance(0, 7, seed) == 0) { + strcat(buf, name_turkish_suffix[SeedModChance( 10, lengthof(name_turkish_suffix), seed)]); + } + } else { + if (i == 1 || i == 2) { + strcat(buf, name_turkish_prefix[SeedModChance( 2, lengthof(name_turkish_prefix), seed)]); + strcat(buf, name_turkish_suffix[SeedModChance( 4, lengthof(name_turkish_suffix), seed)]); + } else { + strcat(buf, name_turkish_real[SeedModChance( 4, lengthof(name_turkish_real), seed)]); + } + } + return 0; +} + TownNameGenerator * const _town_name_generators[] = { MakeEnglishOriginalTownName, @@ -613,6 +641,7 @@ TownNameGenerator * const _town_name_generators[] = MakeCzechTownName, MakeSwissTownName, MakeDanishTownName, + MakeTurkishTownName, }; // DO WE NEED THIS ANY MORE? diff --git a/openttd.h b/openttd.h index f2ae7684e9..1224494d4b 100644 --- a/openttd.h +++ b/openttd.h @@ -492,7 +492,8 @@ enum SpecialStrings { SPECSTR_TOWNNAME_CZECH, SPECSTR_TOWNNAME_SWISS, SPECSTR_TOWNNAME_DANISH, - SPECSTR_TOWNNAME_LAST = SPECSTR_TOWNNAME_DANISH, + SPECSTR_TOWNNAME_TURKISH, + SPECSTR_TOWNNAME_LAST = SPECSTR_TOWNNAME_TURKISH, // special strings for player names on the form "TownName transport". SPECSTR_PLAYERNAME_START = 0x70EA, diff --git a/settings.c b/settings.c index 5cdca2af4f..41c6903bf0 100644 --- a/settings.c +++ b/settings.c @@ -811,7 +811,7 @@ static const SettingDesc gameopt_settings[] = { {"diff_custom", SDT_INTLIST | SDT_UINT32 | (sizeof(GameDifficulty)/4) << 16, NULL, &_opt_newgame.diff, NULL}, {"currency", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.currency, "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK|ESP|FIM|FRF|GRD|HUF|ISK|ITL|NLG|NOK|PLN|ROL|RUR|SEK|custom" }, {"distances", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.kilometers, "imperial|metric" }, - {"town_names", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.town_name, "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovakish|norwegian|hungarian|austrian|romanian|czech|swiss|danish" }, + {"town_names", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.town_name, "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovakish|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish" }, {"landscape", SDT_UINT8 | SDT_ONEOFMANY, (void*)0, &_opt_newgame.landscape, "normal|hilly|desert|candy" }, {"autosave", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.autosave, "off|monthly|quarterly|half year|yearly" }, {"road_side", SDT_UINT8 | SDT_ONEOFMANY, (void*)1, &_opt_newgame.road_side, "left|right" }, diff --git a/table/namegen.h b/table/namegen.h index ff1aa9c2bc..fb57546bcc 100644 --- a/table/namegen.h +++ b/table/namegen.h @@ -2729,3 +2729,117 @@ static const char *name_danish_3[] = { "feld", "skov" }; + +static const char *name_turkish_prefix[] = { + "Akça", + "Altin", + "Bahçe", + "Boz", + "Büyük", + "Çay", + "Dogu", + "Eski", + "Güzel", + "Kizil", + "Küçük", + "Orta", + "Sari", + "Sultan", + "Ulu", + "Yeni" +}; + +static const char *name_turkish_middle[] = { + "agaç", + "ayva", + "çam", + "elma", + "kurt", + "pazar", + "yali" +}; + +static const char *name_turkish_suffix[] = { + "dere", + "hisar", + "kale", + "kaya", + "kent", + "köy", + "ova", + "özü", + "ören", + "pazar", + "saray", + "tepe", + "yer", + "yurt" +}; + +static const char *name_turkish_real[] = { + "Adana", + "Adiyaman", + "Afyon", + "Agri", + "Amasya", + "Antalya", + "Artvin", + "Balikesir", + "Bilecik", + "Bitlis", + "Bolu", + "Burdur", + "Bursa", + "Çanakkale", + "Çankiri", + "Denizli", + "Diyarbakir", + "Edirne", + "Elazig", + "Erzurum", + "Eskisehir", + "Giresun", + "Gümüshane", + "Hatay", + "Isparta", + "içel", + "istanbul", + "izmir", + "Kars", + "Kastamonu", + "Kayseri", + "Kirklareli", + "Kocaeli", + "Konya", + "Kütahya", + "Malatya", + "Manisa", + "Kahramanmaras", + "Mardin", + "Mugla", + "Mus", + "Nevsehir", + "Nigde", + "Rize", + "Sakarya", + "Samsun", + "Siirt", + "Sinop", + "Sivas", + "Trabzon", + "Sanliurfa", + "Van", + "Yozgat", + "Zonguldak", + "Aksaray", + "Bayburt", + "Karaman", + "Sirnak", + "Bartin", + "Ardahan", + "Igdir", + "Yalova", + "Karabük", + "Osmaniye", + "Düzce" +};