src/namegen.cpp
author rubidium
Sat, 22 Dec 2007 21:01:49 +0000
changeset 8120 7128bb2b57a3
parent 8113 31b7784db761
child 8214 971f861d5543
permissions -rw-r--r--
(svn r11681) -Fix (r11674): hopefully fix the compile error on big endian machines.
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1891
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 1891
diff changeset
     2
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
     3
/** @file namegen.cpp */
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
862800791170 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1473
diff changeset
     6
#include "openttd.h"
1299
39c06aba09aa (svn r1803) Move debugging stuff into files of it's own
tron
parents: 1109
diff changeset
     7
#include "debug.h"
1306
7768d8361d88 (svn r1810) Move town name generation declarations into a header of their own
tron
parents: 1299
diff changeset
     8
#include "namegen.h"
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
     9
#include "table/namegen.h"
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    10
#include "string.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    11
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    12
static inline uint32 SeedChance(int shift_by, int max, uint32 seed)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    13
{
2484
0e45d70ae908 (svn r3010) Get rid of quite some dubious casts, either by using GB(), proper types or just removing them
tron
parents: 2431
diff changeset
    14
	return (GB(seed, shift_by, 16) * max) >> 16;
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    15
}
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    16
1447
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    17
static inline uint32 SeedModChance(int shift_by, int max, uint32 seed)
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    18
{
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    19
	/* This actually gives *MUCH* more even distribution of the values
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    20
	 * than SeedChance(), which is absolutely horrible in that. If
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    21
	 * you do not believe me, try with i.e. the Czech town names,
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    22
	 * compare the words (nicely visible on prefixes) generated by
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    23
	 * SeedChance() and SeedModChance(). Do not get dicouraged by the
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    24
	 * never-use-modulo myths, which hold true only for the linear
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    25
	 * congruential generators (and Random() isn't such a generator).
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    26
	 * --pasky */
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    27
	// TODO: Perhaps we should use it for all the name generators? --pasky
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    28
	return (seed >> shift_by) % max;
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    29
}
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
    30
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    31
static inline int32 SeedChanceBias(int shift_by, int max, uint32 seed, int bias)
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    32
{
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    33
	return SeedChance(shift_by, max + bias, seed) - bias;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    34
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    35
1109
ecb98f43ba2c (svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents: 1107
diff changeset
    36
static void ReplaceWords(const char *org, const char *rep, char *buf)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    37
{
1107
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    38
	if (strncmp(buf, org, 4) == 0) strncpy(buf, rep, 4);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    39
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    40
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    41
static byte MakeEnglishOriginalTownName(char *buf, uint32 seed, const char *last)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    43
	int i;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    44
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
    45
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    46
	strecpy(buf, "", last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    47
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
    48
	/* optional first segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    49
	i = SeedChanceBias(0, lengthof(name_original_english_1), seed, 50);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    50
	if (i >= 0)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    51
		strecat(buf, name_original_english_1[i], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    52
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
    53
	/* mandatory middle segments */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    54
	strecat(buf, name_original_english_2[SeedChance(4,  lengthof(name_original_english_2), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    55
	strecat(buf, name_original_english_3[SeedChance(7,  lengthof(name_original_english_3), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    56
	strecat(buf, name_original_english_4[SeedChance(10, lengthof(name_original_english_4), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    57
	strecat(buf, name_original_english_5[SeedChance(13, lengthof(name_original_english_5), seed)], last);
111
31c32d936f58 (svn r112) -Fix: converted all linebreaks to UNIX-linebreak (\n) (forgot one file)
truelight
parents: 109
diff changeset
    58
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
    59
	/* optional last segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    60
	i = SeedChanceBias(15, lengthof(name_original_english_6), seed, 60);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    61
	if (i >= 0)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    62
		strecat(buf, name_original_english_6[i], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    63
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    64
	if (buf[0] == 'C' && (buf[1] == 'e' || buf[1] == 'i'))
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    65
		buf[0] = 'K';
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    66
1107
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    67
	ReplaceWords("Cunt", "East", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    68
	ReplaceWords("Slag", "Pits", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    69
	ReplaceWords("Slut", "Edin", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    70
	//ReplaceWords("Fart", "Boot", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    71
	ReplaceWords("Drar", "Quar", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    72
	ReplaceWords("Dreh", "Bash", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    73
	ReplaceWords("Frar", "Shor", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    74
	ReplaceWords("Grar", "Aber", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    75
	ReplaceWords("Brar", "Over", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    76
	ReplaceWords("Wrar", "Inve", buf);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    77
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    78
	return 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    79
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    80
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    81
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    82
static byte MakeEnglishAdditionalTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    83
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    84
	int i;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    85
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
    86
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    87
	strecpy(buf, "", last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    88
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
    89
	/* optional first segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    90
	i = SeedChanceBias(0, lengthof(name_additional_english_prefix), seed, 50);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    91
	if (i >= 0)
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6465
diff changeset
    92
		strecat(buf, name_additional_english_prefix[i], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    93
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    94
	if (SeedChance(3, 20, seed) >= 14) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    95
		strecat(buf, name_additional_english_1a[SeedChance(6, lengthof(name_additional_english_1a), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
    96
	} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    97
		strecat(buf, name_additional_english_1b1[SeedChance(6, lengthof(name_additional_english_1b1), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
    98
		strecat(buf, name_additional_english_1b2[SeedChance(9, lengthof(name_additional_english_1b2), seed)], last);
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    99
		if (SeedChance(11, 20, seed) >= 4) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   100
			strecat(buf, name_additional_english_1b3a[SeedChance(12, lengthof(name_additional_english_1b3a), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   101
		} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   102
			strecat(buf, name_additional_english_1b3b[SeedChance(12, lengthof(name_additional_english_1b3b), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   103
		}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   104
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   105
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   106
	strecat(buf, name_additional_english_2[SeedChance(14, lengthof(name_additional_english_2), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   107
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   108
	/* optional last segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   109
	i = SeedChanceBias(15, lengthof(name_additional_english_3), seed, 60);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   110
	if (i >= 0)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   111
		strecat(buf, name_additional_english_3[i], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   112
1107
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   113
	ReplaceWords("Cunt", "East", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   114
	ReplaceWords("Slag", "Pits", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   115
	ReplaceWords("Slut", "Edin", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   116
	ReplaceWords("Fart", "Boot", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   117
	ReplaceWords("Drar", "Quar", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   118
	ReplaceWords("Dreh", "Bash", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   119
	ReplaceWords("Frar", "Shor", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   120
	ReplaceWords("Grar", "Aber", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   121
	ReplaceWords("Brar", "Over", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   122
	ReplaceWords("Wrar", "Stan", buf);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   123
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   124
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   125
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   126
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   127
static byte MakeAustrianTownName(char *buf, uint32 seed, const char *last)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   128
{
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   129
	int i, j = 0;
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   130
	strecpy(buf, "", last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   131
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   132
	/* Bad, Maria, Gross, ... */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   133
	i = SeedChanceBias(0, lengthof(name_austrian_a1), seed, 15);
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   134
	if (i >= 0) strecat(buf, name_austrian_a1[i], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   135
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   136
	i = SeedChance(4, 6, seed);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   137
	if (i >= 4) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   138
		/* Kaisers-kirchen */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   139
		strecat(buf, name_austrian_a2[SeedChance( 7, lengthof(name_austrian_a2), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   140
		strecat(buf, name_austrian_a3[SeedChance(13, lengthof(name_austrian_a3), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   141
	} else if (i >= 2) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   142
		/* St. Johann */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   143
		strecat(buf, name_austrian_a5[SeedChance( 7, lengthof(name_austrian_a5), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   144
		strecat(buf, name_austrian_a6[SeedChance( 9, lengthof(name_austrian_a6), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   145
		j = 1; // More likely to have a " an der " or " am "
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   146
	} else {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   147
		/* Zell */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   148
		strecat(buf, name_austrian_a4[SeedChance( 7, lengthof(name_austrian_a4), seed)], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   149
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   150
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   151
	i = SeedChance(1, 6, seed);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   152
	if (i >= 4 - j) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   153
		/* an der Donau (rivers) */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   154
		strecat(buf, name_austrian_f1[SeedChance(4, lengthof(name_austrian_f1), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   155
		strecat(buf, name_austrian_f2[SeedChance(5, lengthof(name_austrian_f2), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   156
	} else if (i >= 2 - j) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   157
		/* am Dachstein (mountains) */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   158
		strecat(buf, name_austrian_b1[SeedChance(4, lengthof(name_austrian_b1), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   159
		strecat(buf, name_austrian_b2[SeedChance(5, lengthof(name_austrian_b2), seed)], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   160
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   161
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   162
	return 0;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   163
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   164
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   165
static byte MakeGermanTownName(char *buf, uint32 seed, const char *last)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   166
{
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   167
	uint i;
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   168
	uint seed_derivative;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   169
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   170
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   171
	strecpy(buf, "", last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   172
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   173
	seed_derivative = SeedChance(7, 28, seed);
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   174
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   175
	/* optional prefix */
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   176
	if (seed_derivative == 12 || seed_derivative == 19) {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   177
		i = SeedChance(2, lengthof(name_german_pre), seed);
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6465
diff changeset
   178
		strecat(buf, name_german_pre[i], last);
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   179
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   180
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   181
	/* mandatory middle segments including option of hardcoded name */
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   182
	i = SeedChance(3, lengthof(name_german_real) + lengthof(name_german_1), seed);
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   183
	if (i < lengthof(name_german_real)) {
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6465
diff changeset
   184
		strecat(buf, name_german_real[i], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   185
	} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   186
		strecat(buf, name_german_1[i - lengthof(name_german_real)], last);
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   187
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   188
		i = SeedChance(5, lengthof(name_german_2), seed);
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   189
		strecat(buf, name_german_2[i], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   190
	}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   191
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   192
	/* optional suffix */
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   193
	if (seed_derivative == 24) {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   194
		i = SeedChance(9,
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   195
			lengthof(name_german_4_an_der) + lengthof(name_german_4_am), seed);
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   196
		if (i < lengthof(name_german_4_an_der)) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   197
			strecat(buf, name_german_3_an_der[0], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   198
			strecat(buf, name_german_4_an_der[i], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   199
		} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   200
			strecat(buf, name_german_3_am[0], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   201
			strecat(buf, name_german_4_am[i - lengthof(name_german_4_an_der)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   202
		}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   203
	}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   204
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   205
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   206
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   207
static byte MakeSpanishTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   208
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   209
	strecpy(buf, name_spanish_real[SeedChance(0, lengthof(name_spanish_real), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   210
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   211
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   212
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   213
static byte MakeFrenchTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   214
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   215
	strecpy(buf, name_french_real[SeedChance(0, lengthof(name_french_real), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   216
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   217
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   218
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   219
static byte MakeSillyTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   220
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   221
	strecpy(buf, name_silly_1[SeedChance( 0, lengthof(name_silly_1), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   222
	strecat(buf, name_silly_2[SeedChance(16, lengthof(name_silly_2), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   223
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   224
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   225
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   226
static byte MakeSwedishTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   227
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   228
	int i;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   229
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   230
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   231
	strecpy(buf, "", last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   232
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   233
	/* optional first segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   234
	i = SeedChanceBias(0, lengthof(name_swedish_1), seed, 50);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   235
	if (i >= 0)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   236
		strecat(buf, name_swedish_1[i], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   237
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   238
	/* mandatory middle segments including option of hardcoded name */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   239
	if (SeedChance(4, 5, seed) >= 3) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   240
		strecat(buf, name_swedish_2[SeedChance( 7, lengthof(name_swedish_2), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   241
	} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   242
		strecat(buf, name_swedish_2a[SeedChance( 7, lengthof(name_swedish_2a), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   243
		strecat(buf, name_swedish_2b[SeedChance(10, lengthof(name_swedish_2b), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   244
		strecat(buf, name_swedish_2c[SeedChance(13, lengthof(name_swedish_2c), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   245
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   246
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   247
	strecat(buf, name_swedish_3[SeedChance(16, lengthof(name_swedish_3), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   248
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   249
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   250
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   251
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   252
static byte MakeDutchTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   253
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   254
	int i;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   255
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   256
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   257
	strecpy(buf, "", last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   258
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   259
	/* optional first segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   260
	i = SeedChanceBias(0, lengthof(name_dutch_1), seed, 50);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   261
	if (i >= 0)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   262
		strecat(buf, name_dutch_1[i], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   263
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   264
	/* mandatory middle segments including option of hardcoded name */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   265
	if (SeedChance(6, 9, seed) > 4) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   266
		strecat(buf, name_dutch_2[SeedChance( 9, lengthof(name_dutch_2), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   267
	} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   268
		strecat(buf, name_dutch_3[SeedChance( 9, lengthof(name_dutch_3), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   269
		strecat(buf, name_dutch_4[SeedChance(12, lengthof(name_dutch_4), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   270
	}
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   271
	strecat(buf, name_dutch_5[SeedChance(15, lengthof(name_dutch_5), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   272
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   273
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   274
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   275
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   276
static byte MakeFinnishTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   277
{
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   278
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   279
	strecpy(buf, "", last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   280
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   281
	/* Select randomly if town name should consists of one or two parts. */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   282
	if (SeedChance(0, 15, seed) >= 10) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   283
		strecat(buf, name_finnish_real[SeedChance(2, lengthof(name_finnish_real), seed)], last);
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 3698
diff changeset
   284
	} else if (SeedChance(0, 15, seed) >= 5) {
6465
c10391d97b1f (svn r9641) -Fix (r7182): namegen.cpp was not UTF-8, which caused artefacts in Finnish town names.
rubidium
parents: 6348
diff changeset
   285
		/* A two-part name by combining one of name_finnish_1 + "la"/"lä"
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   286
		 * The reason for not having the contents of name_finnish_{1,2} in the same table is
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   287
		 * that the ones in name_finnish_2 are not good for this purpose. */
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   288
		uint sel = SeedChance( 0, lengthof(name_finnish_1), seed);
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   289
		char *end;
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   290
		strecat(buf, name_finnish_1[sel], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   291
		end = &buf[strlen(buf)-1];
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   292
		if (*end == 'i')
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   293
			*end = 'e';
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   294
		if (strstr(buf, "a") || strstr(buf, "o") || strstr(buf, "u") ||
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   295
			strstr(buf, "A") || strstr(buf, "O") || strstr(buf, "U"))
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   296
		{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   297
			strecat(buf, "la", last);
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   298
		} else {
6465
c10391d97b1f (svn r9641) -Fix (r7182): namegen.cpp was not UTF-8, which caused artefacts in Finnish town names.
rubidium
parents: 6348
diff changeset
   299
			strecat(buf, "lä", last);
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   300
		}
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 3698
diff changeset
   301
	} else {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   302
		/* A two-part name by combining one of name_finnish_{1,2} + name_finnish_3.
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   303
		 * Why aren't name_finnish_{1,2} just one table? See above. */
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   304
		uint sel = SeedChance(2,
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   305
			lengthof(name_finnish_1) + lengthof(name_finnish_2), seed);
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   306
		if (sel >= lengthof(name_finnish_1)) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   307
			strecat(buf, name_finnish_2[sel-lengthof(name_finnish_1)], last);
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   308
		} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   309
			strecat(buf, name_finnish_1[sel], last);
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   310
		}
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   311
		strecat(buf, name_finnish_3[SeedChance(10, lengthof(name_finnish_3), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   312
	}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   313
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   314
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   315
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   316
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   317
static byte MakePolishTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   318
{
959
e6a3bbda610f (svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents: 958
diff changeset
   319
	uint i;
e6a3bbda610f (svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents: 958
diff changeset
   320
	uint j;
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   321
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   322
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   323
	strecpy(buf, "", last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   324
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   325
	/* optional first segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   326
	i = SeedChance(0,
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   327
		lengthof(name_polish_2_o) + lengthof(name_polish_2_m) +
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   328
		lengthof(name_polish_2_f) + lengthof(name_polish_2_n),
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   329
		seed);
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   330
	j = SeedChance(2, 20, seed);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   331
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   332
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   333
	if (i < lengthof(name_polish_2_o)) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   334
		strecat(buf, name_polish_2_o[SeedChance(3, lengthof(name_polish_2_o), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   335
	} else if (i < lengthof(name_polish_2_m) + lengthof(name_polish_2_o)) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   336
		if (j < 4)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   337
			strecat(buf, name_polish_1_m[SeedChance(5, lengthof(name_polish_1_m), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   338
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   339
		strecat(buf, name_polish_2_m[SeedChance(7, lengthof(name_polish_2_m), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   340
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   341
		if (j >= 4 && j < 16)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   342
			strecat(buf, name_polish_3_m[SeedChance(10, lengthof(name_polish_3_m), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   343
	} else if (i < lengthof(name_polish_2_f) + lengthof(name_polish_2_m) + lengthof(name_polish_2_o)) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   344
		if (j < 4)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   345
			strecat(buf, name_polish_1_f[SeedChance(5, lengthof(name_polish_1_f), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   346
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   347
		strecat(buf, name_polish_2_f[SeedChance(7, lengthof(name_polish_2_f), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   348
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   349
		if (j >= 4 && j < 16)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   350
			strecat(buf, name_polish_3_f[SeedChance(10, lengthof(name_polish_3_f), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   351
	} else {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   352
		if (j < 4)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   353
			strecat(buf, name_polish_1_n[SeedChance(5, lengthof(name_polish_1_n), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   354
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   355
		strecat(buf, name_polish_2_n[SeedChance(7, lengthof(name_polish_2_n), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   356
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   357
		if (j >= 4 && j < 16)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   358
			strecat(buf, name_polish_3_n[SeedChance(10, lengthof(name_polish_3_n), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   359
	}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   360
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   361
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   362
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   363
static byte MakeCzechTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   364
{
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   365
	/* Probability of prefixes/suffixes */
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   366
	/* 0..11 prefix, 12..13 prefix+suffix, 14..17 suffix, 18..31 nothing */
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   367
	int prob_tails;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   368
	bool do_prefix, do_suffix, dynamic_subst;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   369
	/* IDs of the respective parts */
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   370
	int prefix = 0, ending = 0, suffix = 0;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   371
	uint postfix = 0;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   372
	uint stem;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   373
	/* The select criteria. */
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   374
	CzechGender gender;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   375
	CzechChoose choose;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   376
	CzechAllow allow;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   377
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   378
	/* 1:3 chance to use a real name. */
1447
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
   379
	if (SeedModChance(0, 4, seed) == 0) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   380
		strecpy(buf, name_czech_real[SeedModChance(4, lengthof(name_czech_real), seed)], last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   381
		return 0;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   382
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   383
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   384
	/* NUL terminates the string for strcat() */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   385
	strecpy(buf, "", last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   386
1447
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
   387
	prob_tails = SeedModChance(2, 32, seed);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   388
	do_prefix = prob_tails < 12;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   389
	do_suffix = prob_tails > 11 && prob_tails < 17;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   390
1447
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
   391
	if (do_prefix) prefix = SeedModChance(5, lengthof(name_czech_adj) * 12, seed) / 12;
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
   392
	if (do_suffix) suffix = SeedModChance(7, lengthof(name_czech_suffix), seed);
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   393
	/* 3:1 chance 3:1 to use dynamic substantive */
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   394
	stem = SeedModChance(9,
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   395
		lengthof(name_czech_subst_full) + 3 * lengthof(name_czech_subst_stem),
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   396
		seed);
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   397
	if (stem < lengthof(name_czech_subst_full)) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   398
		/* That was easy! */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   399
		dynamic_subst = false;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   400
		gender = name_czech_subst_full[stem].gender;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   401
		choose = name_czech_subst_full[stem].choose;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   402
		allow = name_czech_subst_full[stem].allow;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   403
	} else {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   404
		unsigned int map[lengthof(name_czech_subst_ending)];
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   405
		int ending_start = -1, ending_stop = -1;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   406
		int i;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   407
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   408
		/* Load the substantive */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   409
		dynamic_subst = true;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   410
		stem -= lengthof(name_czech_subst_full);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   411
		stem %= lengthof(name_czech_subst_stem);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   412
		gender = name_czech_subst_stem[stem].gender;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   413
		choose = name_czech_subst_stem[stem].choose;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   414
		allow = name_czech_subst_stem[stem].allow;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   415
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   416
		/* Load the postfix (1:1 chance that a postfix will be inserted) */
1447
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
   417
		postfix = SeedModChance(14, lengthof(name_czech_subst_postfix) * 2, seed);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   418
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   419
		if (choose & CZC_POSTFIX) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   420
			/* Always get a real postfix. */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   421
			postfix %= lengthof(name_czech_subst_postfix);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   422
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   423
		if (choose & CZC_NOPOSTFIX) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   424
			/* Always drop a postfix. */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   425
			postfix += lengthof(name_czech_subst_postfix);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   426
		}
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 3698
diff changeset
   427
		if (postfix < lengthof(name_czech_subst_postfix)) {
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   428
			choose |= CZC_POSTFIX;
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 3698
diff changeset
   429
		} else {
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   430
			choose |= CZC_NOPOSTFIX;
4077
d4d440dd8925 (svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents: 3698
diff changeset
   431
		}
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   432
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   433
		/* Localize the array segment containing a good gender */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   434
		for (ending = 0; ending < (int) lengthof(name_czech_subst_ending); ending++) {
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   435
			const CzechNameSubst *e = &name_czech_subst_ending[ending];
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   436
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   437
			if (gender == CZG_FREE ||
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   438
					(gender == CZG_NFREE && e->gender != CZG_SNEUT && e->gender != CZG_PNEUT) ||
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   439
					gender == e->gender) {
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   440
				if (ending_start < 0)
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   441
					ending_start = ending;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   442
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   443
			} else if (ending_start >= 0) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   444
				ending_stop = ending - 1;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   445
				break;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   446
			}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   447
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   448
		if (ending_stop < 0) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   449
			/* Whoa. All the endings matched. */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   450
			ending_stop = ending - 1;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   451
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   452
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   453
		/* Make a sequential map of the items with good mask */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   454
		i = 0;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   455
		for (ending = ending_start; ending <= ending_stop; ending++) {
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   456
			const CzechNameSubst *e = &name_czech_subst_ending[ending];
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   457
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   458
			if ((e->choose & choose) == choose && (e->allow & allow) != 0)
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   459
				map[i++] = ending;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   460
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   461
		assert(i > 0);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   462
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   463
		/* Load the ending */
1447
8300000ac36c (svn r1951) Introduced SeedModChance() (which is like SeedChance() but uses simple modulo instead of bitshifting and multiplication), explained why does it work better, used it in MakeCzechTownName() and added a TODO note about possibly using it in the other town name generators too.
pasky
parents: 1426
diff changeset
   464
		ending = map[SeedModChance(16, i, seed)];
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   465
		/* Override possible CZG_*FREE; this must be a real gender,
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   466
		 * otherwise we get overflow when modifying the adjectivum. */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   467
		gender = name_czech_subst_ending[ending].gender;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   468
		assert(gender != CZG_FREE && gender != CZG_NFREE);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   469
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   470
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   471
	if (do_prefix && (name_czech_adj[prefix].choose & choose) != choose) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   472
		/* Throw away non-matching prefix. */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   473
		do_prefix = false;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   474
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   475
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   476
	/* Now finally construct the name */
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   477
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   478
	if (do_prefix) {
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   479
		CzechPattern pattern = name_czech_adj[prefix].pattern;
4321
958a8e9c012b (svn r5974) -Codechange: added casts all around the place to make Windows 64bit happy (michi_cc)
truelight
parents: 4312
diff changeset
   480
		size_t endpos;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   481
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   482
		strecat(buf, name_czech_adj[prefix].name, last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   483
		endpos = strlen(buf) - 1;
5108
aeaef6fe53b7 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 4919
diff changeset
   484
		/* Find the first character in a UTF-8 sequence */
aeaef6fe53b7 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 4919
diff changeset
   485
		while (GB(buf[endpos], 6, 2) == 2) endpos--;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   486
		if (gender == CZG_SMASC && pattern == CZP_PRIVL) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   487
			/* -ovX -> -uv */
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   488
			buf[endpos - 2] = 'u';
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   489
			assert(buf[endpos - 1] == 'v');
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   490
			buf[endpos] = '\0';
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   491
		} else {
5108
aeaef6fe53b7 (svn r7182) -Feature: Merge utf8 branch. This brings us support for Unicode/UTF-8 and the option for fonts rendered by FreeType. Language changes to come.
peter1138
parents: 4919
diff changeset
   492
			strecpy(buf + endpos, name_czech_patmod[gender][pattern], last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   493
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   494
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   495
		strecat(buf, " ", last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   496
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   497
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   498
	if (dynamic_subst) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   499
		strecat(buf, name_czech_subst_stem[stem].name, last);
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   500
		if (postfix < lengthof(name_czech_subst_postfix)) {
1426
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   501
			const char *poststr = name_czech_subst_postfix[postfix];
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   502
			const char *endstr = name_czech_subst_ending[ending].name;
4321
958a8e9c012b (svn r5974) -Codechange: added casts all around the place to make Windows 64bit happy (michi_cc)
truelight
parents: 4312
diff changeset
   503
			size_t postlen, endlen;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   504
1426
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   505
			postlen = strlen(poststr);
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   506
			endlen = strlen(endstr);
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   507
			assert(postlen > 0 && endlen > 0);
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   508
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   509
			/* Kill the "avava" and "Jananna"-like cases */
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   510
			if (postlen < 2 || postlen > endlen || (
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   511
						(poststr[1] != 'v' || poststr[1] != endstr[1]) &&
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   512
						poststr[2] != endstr[1])
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   513
					) {
4321
958a8e9c012b (svn r5974) -Codechange: added casts all around the place to make Windows 64bit happy (michi_cc)
truelight
parents: 4312
diff changeset
   514
				size_t buflen;
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   515
				strecat(buf, poststr, last);
1426
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   516
				buflen = strlen(buf);
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   517
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   518
				/* k-i -> c-i, h-i -> z-i */
1426
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   519
				if (endstr[0] == 'i') {
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   520
					switch (buf[buflen - 1]) {
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   521
						case 'k': buf[buflen - 1] = 'c'; break;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   522
						case 'h': buf[buflen - 1] = 'z'; break;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   523
						default: break;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   524
					}
1426
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   525
				}
1701113f2f72 (svn r1930) Cleaned up the postfix-ending connecting code and introduced some simple postfix-last-letter transformations when the ending first letter is 'i'.
pasky
parents: 1425
diff changeset
   526
			}
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   527
		}
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   528
		strecat(buf, name_czech_subst_ending[ending].name, last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   529
	} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   530
		strecat(buf, name_czech_subst_full[stem].name, last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   531
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   532
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   533
	if (do_suffix) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   534
		strecat(buf, " ", last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   535
		strecat(buf, name_czech_suffix[suffix], last);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   536
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   537
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   538
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   539
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   540
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   541
static byte MakeRomanianTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   542
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   543
	strecpy(buf, name_romanian_real[SeedChance(0, lengthof(name_romanian_real), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   544
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   545
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   546
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   547
static byte MakeSlovakTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   548
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   549
	strecpy(buf, name_slovak_real[SeedChance(0, lengthof(name_slovak_real), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   550
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   551
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   552
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   553
static byte MakeNorwegianTownName(char *buf, uint32 seed, const char *last)
948
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   554
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   555
	strecpy(buf, "", last);
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   556
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   557
	/* Use first 4 bit from seed to decide whether or not this town should
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   558
	 * have a real name 3/16 chance.  Bit 0-3 */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   559
	if (SeedChance(0, 15, seed) < 3) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   560
		/* Use 7bit for the realname table index.  Bit 4-10 */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   561
		strecat(buf, name_norwegian_real[SeedChance(4, lengthof(name_norwegian_real), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   562
	} else {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   563
		/* Use 7bit for the first fake part.  Bit 4-10 */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   564
		strecat(buf, name_norwegian_1[SeedChance(4, lengthof(name_norwegian_1), seed)], last);
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   565
		/* Use 7bit for the last fake part.  Bit 11-17 */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   566
		strecat(buf, name_norwegian_2[SeedChance(11, lengthof(name_norwegian_2), seed)], last);
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   567
	}
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   568
948
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   569
	return 0;
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   570
}
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   571
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   572
static byte MakeHungarianTownName(char *buf, uint32 seed, const char *last)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   573
{
959
e6a3bbda610f (svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents: 958
diff changeset
   574
	uint i;
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   575
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   576
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   577
	strecpy(buf, "", last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   578
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   579
	if (SeedChance(12, 15, seed) < 3) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   580
		strecat(buf, name_hungarian_real[SeedChance(0, lengthof(name_hungarian_real), seed)], last);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   581
	} else {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   582
		/* optional first segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   583
		i = SeedChance(3, lengthof(name_hungarian_1) * 3, seed);
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   584
		if (i < lengthof(name_hungarian_1))
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   585
			strecat(buf, name_hungarian_1[i], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   586
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   587
		/* mandatory middle segments */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   588
		strecat(buf, name_hungarian_2[SeedChance(3, lengthof(name_hungarian_2), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   589
		strecat(buf, name_hungarian_3[SeedChance(6, lengthof(name_hungarian_3), seed)], last);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   590
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   591
		/* optional last segment */
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   592
		i = SeedChance(10, lengthof(name_hungarian_4) * 3, seed);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   593
		if (i < lengthof(name_hungarian_4)) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   594
			strecat(buf, name_hungarian_4[i], last);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   595
		}
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   596
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   597
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   598
	return 0;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   599
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   600
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   601
static byte MakeSwissTownName(char *buf, uint32 seed, const char *last)
1030
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   602
{
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   603
	strecpy(buf, name_swiss_real[SeedChance(0, lengthof(name_swiss_real), seed)], last);
1030
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   604
	return 0;
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   605
}
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   606
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   607
static byte MakeDanishTownName(char *buf, uint32 seed, const char *last)
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   608
{
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   609
	int i;
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   610
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   611
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   612
	strecpy(buf, "", last);
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   613
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   614
	/* optional first segment */
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   615
	i = SeedChanceBias(0, lengthof(name_danish_1), seed, 50);
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   616
	if (i >= 0)
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   617
		strecat(buf, name_danish_1[i], last);
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   618
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   619
	/* middle segments removed as this algorithm seems to create much more realistic names */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   620
	strecat(buf, name_danish_2[SeedChance( 7, lengthof(name_danish_2), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   621
	strecat(buf, name_danish_3[SeedChance(16, lengthof(name_danish_3), seed)], last);
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   622
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   623
	return 0;
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   624
}
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   625
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   626
static byte MakeTurkishTownName(char *buf, uint32 seed, const char *last)
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   627
{
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   628
	uint i;
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   629
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   630
	/* null terminates the string for strcat */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   631
	strecpy(buf, "", last);
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   632
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   633
	if ((i = SeedModChance(0, 5, seed)) == 0) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   634
		strecat(buf, name_turkish_prefix[SeedModChance( 2, lengthof(name_turkish_prefix), seed)], last);
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   635
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   636
		/* middle segment */
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   637
		strecat(buf, name_turkish_middle[SeedModChance( 4, lengthof(name_turkish_middle), seed)], last);
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   638
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   639
		/* optional suffix */
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   640
		if (SeedModChance(0, 7, seed) == 0) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   641
			strecat(buf, name_turkish_suffix[SeedModChance( 10, lengthof(name_turkish_suffix), seed)], last);
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   642
		}
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   643
	} else {
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   644
		if (i == 1 || i == 2) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   645
			strecat(buf, name_turkish_prefix[SeedModChance( 2, lengthof(name_turkish_prefix), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   646
			strecat(buf, name_turkish_suffix[SeedModChance( 4, lengthof(name_turkish_suffix), seed)], last);
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   647
		} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   648
			strecat(buf, name_turkish_real[SeedModChance( 4, lengthof(name_turkish_real), seed)], last);
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   649
		}
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   650
	}
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   651
	return 0;
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   652
}
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   653
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   654
static const char *mascul_femin_italian[] = {
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   655
	"o",
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   656
	"a",
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   657
};
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   658
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   659
static byte MakeItalianTownName(char *buf, uint32 seed, const char *last)
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   660
{
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   661
	strecpy(buf, "", last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   662
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   663
	if (SeedModChance(0, 6, seed) == 0) { // real city names
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   664
		strecat(buf, name_italian_real[SeedModChance(4, lengthof(name_italian_real), seed)], last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   665
	} else {
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   666
		uint i;
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   667
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   668
		if (SeedModChance(0, 8, seed) == 0) { // prefix
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   669
			strecat(buf, name_italian_pref[SeedModChance(11, lengthof(name_italian_pref), seed)], last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   670
		}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   671
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   672
		i = SeedChance(0, 2, seed);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   673
		if (i == 0) { // masculine form
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   674
			strecat(buf, name_italian_1m[SeedModChance(4, lengthof(name_italian_1m), seed)], last);
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   675
		} else { // feminine form
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   676
			strecat(buf, name_italian_1f[SeedModChance(4, lengthof(name_italian_1f), seed)], last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   677
		}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   678
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   679
		if (SeedModChance(3, 3, seed) == 0) {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   680
			strecat(buf, name_italian_2[SeedModChance(11, lengthof(name_italian_2), seed)], last);
6491
00dc414c909d (svn r9672) -Cleanup: lots of coding style fixes around operands.
rubidium
parents: 6465
diff changeset
   681
			strecat(buf, mascul_femin_italian[i], last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   682
		} else {
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   683
			strecat(buf, name_italian_2i[SeedModChance(16, lengthof(name_italian_2i), seed)], last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   684
		}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   685
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   686
		if (SeedModChance(15, 4, seed) == 0) {
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   687
			if (SeedModChance(5, 2, seed) == 0) { // generic suffix
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   688
				strecat(buf, name_italian_3[SeedModChance(4, lengthof(name_italian_3), seed)], last);
4148
d884593c8e95 (svn r5512) Fix : Remove a warning on MakeItalianTownName.
belugas
parents: 4143
diff changeset
   689
			} else { // river name suffix
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   690
				strecat(buf, name_italian_river1[SeedModChance(4, lengthof(name_italian_river1), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   691
				strecat(buf, name_italian_river2[SeedModChance(16, lengthof(name_italian_river2), seed)], last);
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   692
			}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   693
		}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   694
	}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   695
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   696
	return 0;
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   697
}
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   698
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   699
static byte MakeCatalanTownName(char *buf, uint32 seed, const char *last)
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   700
{
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   701
	strecpy(buf, "", last);
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   702
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   703
	if (SeedModChance(0, 3, seed) == 0) { // real city names
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   704
		strecat(buf, name_catalan_real[SeedModChance(4, lengthof(name_catalan_real), seed)], last);
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   705
	} else {
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   706
		uint i;
4441
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   707
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   708
		if (SeedModChance(0, 2, seed) == 0) { // prefix
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   709
			strecat(buf, name_catalan_pref[SeedModChance(11, lengthof(name_catalan_pref), seed)], last);
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   710
		}
4441
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   711
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   712
		i = SeedChance(0, 2, seed);
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   713
		if (i == 0) { // masculine form
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   714
			strecat(buf, name_catalan_1m[SeedModChance(4, lengthof(name_catalan_1m), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   715
			strecat(buf, name_catalan_2m[SeedModChance(11, lengthof(name_catalan_2m), seed)], last);
4441
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   716
		} else { // feminine form
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   717
			strecat(buf, name_catalan_1f[SeedModChance(4, lengthof(name_catalan_1f), seed)], last);
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   718
			strecat(buf, name_catalan_2f[SeedModChance(11, lengthof(name_catalan_2f), seed)], last);
4441
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   719
		}
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   720
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   721
4441
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   722
		if (SeedModChance(15, 5, seed) == 0) {
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   723
			if (SeedModChance(5, 2, seed) == 0) { // generic suffix
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   724
				strecat(buf, name_catalan_3[SeedModChance(4, lengthof(name_catalan_3), seed)], last);
4441
b73b7b960c74 (svn r6213) -Fix: Calatan town names was only prefix OR the rest of the string, never both (nars)
bjarni
parents: 4434
diff changeset
   725
			} else { // river name suffix
4919
9a5b9becf31e (svn r6895) - Fix (r6884): Add 'last' parameter to the town name generators.
peter1138
parents: 4441
diff changeset
   726
				strecat(buf, name_catalan_river1[SeedModChance(4, lengthof(name_catalan_river1), seed)], last);
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   727
			}
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   728
		}
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   729
	}
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   730
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   731
	return 0;
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   732
}
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   733
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   734
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   735
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   736
TownNameGenerator * const _town_name_generators[] =
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   737
{
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   738
	MakeEnglishOriginalTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   739
	MakeFrenchTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   740
	MakeGermanTownName,
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   741
	MakeEnglishAdditionalTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   742
	MakeSpanishTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   743
	MakeSillyTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   744
	MakeSwedishTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   745
	MakeDutchTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   746
	MakeFinnishTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   747
	MakePolishTownName,
428
a473512676f1 (svn r627) Merge r439 to trunk:
tron
parents: 264
diff changeset
   748
	MakeSlovakTownName,
948
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   749
	MakeNorwegianTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   750
	MakeHungarianTownName,
233
dd177a8c9f19 (svn r234) -Fix: added missing romanian.txt to VC6, VS.NET and Jamfile project file
darkvater
parents: 193
diff changeset
   751
	MakeAustrianTownName,
264
5f2effba978c (svn r270) Fix: [ 1028851 ] automatic and unwanted city renaming
dominik
parents: 240
diff changeset
   752
	MakeRomanianTownName,
5f2effba978c (svn r270) Fix: [ 1028851 ] automatic and unwanted city renaming
dominik
parents: 240
diff changeset
   753
	MakeCzechTownName,
1030
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   754
	MakeSwissTownName,
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   755
	MakeDanishTownName,
3698
2f256fe23db9 (svn r4639) -Feature: Turkish town names (jnmbk)
celestar
parents: 3106
diff changeset
   756
	MakeTurkishTownName,
4143
b7535e12f27b (svn r5504) Feature : Added Italian town name generator. (sidew)
belugas
parents: 4077
diff changeset
   757
	MakeItalianTownName,
4312
9ac0363f38f5 (svn r5965) -Feature: FS#261 Catalan Town Names generator (arnau)
bjarni
parents: 4148
diff changeset
   758
	MakeCatalanTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   759
};
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   760
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   761
/* DO WE NEED THIS ANY MORE? */
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   762
#define FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z)
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   763
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   764
uint32 GetOldTownName(uint32 townnameparts, byte old_town_name_type)
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   765
{
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   766
	switch (old_town_name_type) {
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   767
		case 0: case 3: // English, American
4434
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   768
			/* Already OK */
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   769
			return townnameparts;
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   770
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   771
		case 1: // French
4434
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   772
			/* For some reason 86 needs to be subtracted from townnameparts
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   773
			 * 0000 0000 0000 0000 0000 0000 1111 1111 */
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   774
			return FIXNUM(townnameparts - 86, lengthof(name_french_real), 0);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   775
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   776
		case 2: // German
5380
8ea58542b6e0 (svn r7565) -Codechange: Rework DEBUG functionality. Look for appropiate debugging levels to
Darkvater
parents: 5108
diff changeset
   777
			DEBUG(misc, 0, "German Townnames are buggy (%d)", townnameparts);
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   778
			return townnameparts;
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   779
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   780
		case 4: // Latin-American
4434
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   781
			/* 0000 0000 0000 0000 0000 0000 1111 1111 */
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   782
			return FIXNUM(townnameparts, lengthof(name_spanish_real), 0);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   783
6348
6dd01da7a02b (svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas
parents: 5584
diff changeset
   784
		case 5: // Silly
4434
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   785
			/* NUM_SILLY_1 - lower 16 bits
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   786
			 * NUM_SILLY_2 - upper 16 bits without leading 1 (first 8 bytes)
a08cb4b5c179 (svn r6204) -Cleanup: replace non-indentation with spaces; like '}<TAB>else {' -> '} else {', tabs between code and comment, etc.
rubidium
parents: 4321
diff changeset
   787
			 * 1000 0000 2222 2222 0000 0000 1111 1111 */
2549
5587f9a38563 (svn r3078) Some more stuff, which piled up:
tron
parents: 2484
diff changeset
   788
			return FIXNUM(townnameparts, lengthof(name_silly_1), 0) | FIXNUM(GB(townnameparts, 16, 8), lengthof(name_silly_2), 16);
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   789
	}
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   790
	return 0;
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   791
}