namegen.c
author tron
Mon, 10 Apr 2006 07:15:58 +0000
changeset 3491 35d747bb5e82
parent 3106 5e3711f21be7
child 3698 2f256fe23db9
permissions -rw-r--r--
(svn r4342) Change the first two parameters of commands - virtual pixel coordinates of the tile to operate on - to a TileIndex
Remove DoCommandByTile(), because now it does the same as DoCommand()
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
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     3
#include "stdafx.h"
1891
862800791170 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1473
diff changeset
     4
#include "openttd.h"
1299
39c06aba09aa (svn r1803) Move debugging stuff into files of it's own
tron
parents: 1109
diff changeset
     5
#include "debug.h"
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
     6
#include "macros.h"
1306
7768d8361d88 (svn r1810) Move town name generation declarations into a header of their own
tron
parents: 1299
diff changeset
     7
#include "namegen.h"
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
     8
#include "table/namegen.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     9
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    10
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
    11
{
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
    12
	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
    13
}
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    14
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
    15
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
    16
{
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
	/* 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
    18
	 * 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
    19
	 * 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
    20
	 * 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
    21
	 * 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
    22
	 * 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
    23
	 * 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
    24
	 * --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
    25
	// 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
    26
	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
    27
}
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
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    29
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
    30
{
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    31
	return SeedChance(shift_by, max + bias, seed) - bias;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    32
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    33
1109
ecb98f43ba2c (svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents: 1107
diff changeset
    34
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
    35
{
1107
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    36
	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
    37
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    38
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
    39
static byte MakeEnglishOriginalTownName(char *buf, uint32 seed)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    40
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    41
	int i;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    43
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    44
	strcpy(buf, "");
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    45
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    46
	// optional first segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    47
	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
    48
	if (i >= 0)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    49
		strcat(buf,name_original_english_1[i]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    50
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    51
	//mandatory middle segments
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    52
	strcat(buf, name_original_english_2[SeedChance(4,  lengthof(name_original_english_2), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    53
	strcat(buf, name_original_english_3[SeedChance(7,  lengthof(name_original_english_3), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    54
	strcat(buf, name_original_english_4[SeedChance(10, lengthof(name_original_english_4), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    55
	strcat(buf, name_original_english_5[SeedChance(13, lengthof(name_original_english_5), seed)]);
111
31c32d936f58 (svn r112) -Fix: converted all linebreaks to UNIX-linebreak (\n) (forgot one file)
truelight
parents: 109
diff changeset
    56
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    57
	//optional last segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    58
	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
    59
	if (i >= 0)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    60
		strcat(buf, name_original_english_6[i]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    61
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    62
	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
    63
		buf[0] = 'K';
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    64
1107
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    65
	ReplaceWords("Cunt", "East", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    66
	ReplaceWords("Slag", "Pits", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    67
	ReplaceWords("Slut", "Edin", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    68
	//ReplaceWords("Fart", "Boot", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    69
	ReplaceWords("Drar", "Quar", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    70
	ReplaceWords("Dreh", "Bash", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    71
	ReplaceWords("Frar", "Shor", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    72
	ReplaceWords("Grar", "Aber", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    73
	ReplaceWords("Brar", "Over", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
    74
	ReplaceWords("Wrar", "Inve", buf);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    75
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    76
	return 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    77
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    78
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    79
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
    80
static byte MakeEnglishAdditionalTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    81
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    82
	int i;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    83
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    84
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    85
	strcpy(buf, "");
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    86
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    87
	// optional first segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    88
	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
    89
	if (i >= 0)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
    90
		strcat(buf,name_additional_english_prefix[i]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    91
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    92
	if (SeedChance(3, 20, seed) >= 14) {
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    93
		strcat(buf, name_additional_english_1a[SeedChance(6, lengthof(name_additional_english_1a), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
    94
	} else {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    95
		strcat(buf, name_additional_english_1b1[SeedChance(6, lengthof(name_additional_english_1b1), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    96
		strcat(buf, name_additional_english_1b2[SeedChance(9, lengthof(name_additional_english_1b2), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    97
		if (SeedChance(11, 20, seed) >= 4) {
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
    98
			strcat(buf, name_additional_english_1b3a[SeedChance(12, lengthof(name_additional_english_1b3a), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
    99
		} else {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   100
			strcat(buf, name_additional_english_1b3b[SeedChance(12, lengthof(name_additional_english_1b3b), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   101
		}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   102
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   103
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   104
	strcat(buf, name_additional_english_2[SeedChance(14, lengthof(name_additional_english_2), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   105
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   106
	//optional last segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   107
	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
   108
	if (i >= 0)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   109
		strcat(buf, name_additional_english_3[i]);
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   110
1107
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   111
	ReplaceWords("Cunt", "East", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   112
	ReplaceWords("Slag", "Pits", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   113
	ReplaceWords("Slut", "Edin", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   114
	ReplaceWords("Fart", "Boot", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   115
	ReplaceWords("Drar", "Quar", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   116
	ReplaceWords("Dreh", "Bash", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   117
	ReplaceWords("Frar", "Shor", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   118
	ReplaceWords("Grar", "Aber", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   119
	ReplaceWords("Brar", "Over", buf);
c9dd99e6a17c (svn r1608) Make ReplaceWords() comprehensible
tron
parents: 1030
diff changeset
   120
	ReplaceWords("Wrar", "Stan", buf);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   121
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   122
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   123
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   124
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   125
static byte MakeAustrianTownName(char *buf, uint32 seed)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   126
{
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   127
	int i, j = 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   128
	strcpy(buf, "");
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   129
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   130
	// Bad, Maria, Gross, ...
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   131
	i = SeedChanceBias(0, lengthof(name_austrian_a1), seed, 15);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   132
	if (i >= 0) strcat(buf, name_austrian_a1[i]);
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   133
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   134
	i = SeedChance(4, 6, seed);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   135
	if (i >= 4) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   136
		// Kaisers-kirchen
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   137
		strcat(buf, name_austrian_a2[SeedChance( 7, lengthof(name_austrian_a2), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   138
		strcat(buf, name_austrian_a3[SeedChance(13, lengthof(name_austrian_a3), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   139
	} else if (i >= 2) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   140
		// St. Johann
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   141
		strcat(buf, name_austrian_a5[SeedChance( 7, lengthof(name_austrian_a5), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   142
		strcat(buf, name_austrian_a6[SeedChance( 9, lengthof(name_austrian_a6), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   143
		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
   144
	} else {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   145
		// Zell
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   146
		strcat(buf, name_austrian_a4[SeedChance( 7, lengthof(name_austrian_a4), seed)]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   147
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   148
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   149
	i = SeedChance(1, 6, seed);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   150
	if (i >= 4 - j) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   151
		// an der Donau (rivers)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   152
		strcat(buf, name_austrian_f1[SeedChance(4, lengthof(name_austrian_f1), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   153
		strcat(buf, name_austrian_f2[SeedChance(5, lengthof(name_austrian_f2), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   154
	} else if (i >= 2 - j) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   155
		// am Dachstein (mountains)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   156
		strcat(buf, name_austrian_b1[SeedChance(4, lengthof(name_austrian_b1), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   157
		strcat(buf, name_austrian_b2[SeedChance(5, lengthof(name_austrian_b2), seed)]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   158
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   159
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   160
	return 0;
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
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   163
static byte MakeGermanTownName(char *buf, uint32 seed)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   164
{
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   165
	uint i;
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   166
	uint seed_derivative;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   167
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   168
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   169
	strcpy(buf, "");
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   170
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   171
	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
   172
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   173
	//optional prefix
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   174
	if (seed_derivative == 12 || seed_derivative == 19) {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   175
		i = SeedChance(2, lengthof(name_german_pre), seed);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   176
		strcat(buf,name_german_pre[i]);
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   177
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   178
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   179
	// 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
   180
	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
   181
	if (i < lengthof(name_german_real)) {
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   182
		strcat(buf,name_german_real[i]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   183
	} else {
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   184
		strcat(buf, name_german_1[i - lengthof(name_german_real)]);
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   185
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   186
		i = SeedChance(5, lengthof(name_german_2), seed);
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   187
		strcat(buf, name_german_2[i]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   188
	}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   189
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   190
	// optional suffix
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   191
	if (seed_derivative == 24) {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   192
		i = SeedChance(9,
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   193
			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
   194
		if (i < lengthof(name_german_4_an_der)) {
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   195
			strcat(buf, name_german_3_an_der[0]);
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   196
			strcat(buf, name_german_4_an_der[i]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   197
		} else {
992
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   198
			strcat(buf, name_german_3_am[0]);
9867cd7a9709 (svn r1490) Restore original town name generation behavior for german and hungarian (Jango)
tron
parents: 959
diff changeset
   199
			strcat(buf, name_german_4_am[i - lengthof(name_german_4_an_der)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   200
		}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   201
	}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   202
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   203
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   204
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   205
static byte MakeSpanishTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   206
{
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   207
	strcpy(buf, name_spanish_real[SeedChance(0, lengthof(name_spanish_real), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   208
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   209
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   210
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   211
static byte MakeFrenchTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   212
{
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   213
	strcpy(buf, name_french_real[SeedChance(0, lengthof(name_french_real), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   214
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   215
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   216
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   217
static byte MakeSillyTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   218
{
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   219
	strcpy(buf, name_silly_1[SeedChance( 0, lengthof(name_silly_1), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   220
	strcat(buf, name_silly_2[SeedChance(16, lengthof(name_silly_2), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   221
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   222
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   223
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   224
static byte MakeSwedishTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   225
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   226
	int i;
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
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   229
	strcpy(buf, "");
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   230
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   231
	// optional first segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   232
	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
   233
	if (i >= 0)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   234
		strcat(buf, name_swedish_1[i]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   235
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   236
	// 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
   237
	if (SeedChance(4, 5, seed) >= 3) {
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   238
		strcat(buf, name_swedish_2[SeedChance( 7, lengthof(name_swedish_2), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   239
	} else {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   240
		strcat(buf, name_swedish_2a[SeedChance( 7, lengthof(name_swedish_2a), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   241
		strcat(buf, name_swedish_2b[SeedChance(10, lengthof(name_swedish_2b), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   242
		strcat(buf, name_swedish_2c[SeedChance(13, lengthof(name_swedish_2c), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   243
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   244
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   245
	strcat(buf, name_swedish_3[SeedChance(16, lengthof(name_swedish_3), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   246
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   247
	return 0;
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
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   250
static byte MakeDutchTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   251
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   252
	int i;
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
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   255
	strcpy(buf, "");
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   256
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   257
	// optional first segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   258
	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
   259
	if (i >= 0)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   260
		strcat(buf, name_dutch_1[i]);
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   261
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   262
	// 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
   263
	if (SeedChance(6, 9, seed) > 4) {
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   264
		strcat(buf, name_dutch_2[SeedChance( 9, lengthof(name_dutch_2), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   265
	} else {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   266
		strcat(buf, name_dutch_3[SeedChance( 9, lengthof(name_dutch_3), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   267
		strcat(buf, name_dutch_4[SeedChance(12, lengthof(name_dutch_4), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   268
	}
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   269
	strcat(buf, name_dutch_5[SeedChance(15, lengthof(name_dutch_5), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   270
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   271
	return 0;
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
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   274
static byte MakeFinnishTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   275
{
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   276
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   277
	strcpy(buf, "");
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   278
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   279
	// 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
   280
	if (SeedChance(0, 15, seed) >= 10) {
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   281
		strcat(buf, name_finnish_real[SeedChance( 2, lengthof(name_finnish_real), seed)]);
3106
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   282
	}
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   283
	// A two-part name by combining one of name_finnish_1 + "la"/"lä"
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   284
	// The reason for not having the contents of name_finnish_{1,2} in the same table is
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   285
	// that the ones in name_finnish_2 are not good for this purpose.
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   286
	else if (SeedChance(0, 15, seed) >= 5) {
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   287
		uint sel = SeedChance( 0, lengthof(name_finnish_1), seed);
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   288
		char *last;
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   289
		strcat(buf, name_finnish_1[sel]);
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   290
		last = &buf[strlen(buf)-1];
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   291
		if (*last == 'i')
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   292
			*last = 'e';
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   293
		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
   294
			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
		{
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   296
			strcat(buf, "la");
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   297
		} else {
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   298
			strcat(buf, "lä");
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   299
		}
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   300
	}
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   301
	// A two-part name by combining one of name_finnish_{1,2} + name_finnish_3.
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   302
	// Why aren't name_finnish_{1,2} just one table? See above.
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   303
	else {
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)) {
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   307
			strcat(buf, name_finnish_2[sel-lengthof(name_finnish_1)]);
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   308
		} else {
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   309
			strcat(buf, name_finnish_1[sel]);
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   310
		}
5e3711f21be7 (svn r3707) -Fix: made the generated Finnish town names sound more Finnish (ln-)
bjarni
parents: 2549
diff changeset
   311
		strcat(buf, name_finnish_3[SeedChance(10, lengthof(name_finnish_3), seed)]);
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
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   317
static byte MakePolishTownName(char *buf, uint32 seed)
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
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   322
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   323
	strcpy(buf, "");
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   324
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
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)) {
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   334
		strcat(buf, name_polish_2_o[SeedChance(3, lengthof(name_polish_2_o), seed)]);
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)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   337
			strcat(buf, name_polish_1_m[SeedChance(5, lengthof(name_polish_1_m), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   338
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   339
		strcat(buf, name_polish_2_m[SeedChance(7, lengthof(name_polish_2_m), seed)]);
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)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   342
			strcat(buf, name_polish_3_m[SeedChance(10, lengthof(name_polish_3_m), seed)]);
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)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   345
			strcat(buf, name_polish_1_f[SeedChance(5, lengthof(name_polish_1_f), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   346
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   347
		strcat(buf, name_polish_2_f[SeedChance(7, lengthof(name_polish_2_f), seed)]);
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)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   350
			strcat(buf, name_polish_3_f[SeedChance(10, lengthof(name_polish_3_f), seed)]);
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)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   353
			strcat(buf, name_polish_1_n[SeedChance(5, lengthof(name_polish_1_n), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   354
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   355
		strcat(buf, name_polish_2_n[SeedChance(7, lengthof(name_polish_2_n), seed)]);
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)
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   358
			strcat(buf, name_polish_3_n[SeedChance(10, lengthof(name_polish_3_n), seed)]);
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
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   363
static byte MakeCzechTownName(char *buf, uint32 seed)
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
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
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) {
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
   380
		strcpy(buf, name_czech_real[SeedModChance(4, lengthof(name_czech_real), seed)]);
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
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   384
	// NUL terminates the string for strcat()
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   385
	strcpy(buf, "");
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);
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
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)) {
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   398
		// That was easy!
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
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   408
		// Load the substantive
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
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
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) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   420
			// Always get a real postfix.
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) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   424
			// Always drop a postfix.
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
		}
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
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;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   429
		else
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   430
			choose |= CZC_NOPOSTFIX;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   431
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   432
		// Localize the array segment containing a good gender
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   433
		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
   434
			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
   435
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   436
			if (gender == CZG_FREE ||
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   437
					(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
   438
					gender == e->gender) {
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   439
				if (ending_start < 0)
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   440
					ending_start = ending;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   441
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   442
			} else if (ending_start >= 0) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   443
				ending_stop = ending - 1;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   444
				break;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   445
			}
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
		if (ending_stop < 0) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   448
			// Whoa. All the endings matched.
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   449
			ending_stop = ending - 1;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   450
		}
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
		// Make a sequential map of the items with good mask
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   453
		i = 0;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   454
		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
   455
			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
   456
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   457
			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
   458
				map[i++] = ending;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   459
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   460
		assert(i > 0);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   461
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   462
		// 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
   463
		ending = map[SeedModChance(16, i, seed)];
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   464
		// Override possible CZG_*FREE; this must be a real gender,
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   465
		// otherwise we get overflow when modifying the adjectivum.
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   466
		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
   467
		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
   468
	}
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
	if (do_prefix && (name_czech_adj[prefix].choose & choose) != choose) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   471
		// Throw away non-matching prefix.
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   472
		do_prefix = false;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   473
	}
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
	// Now finally construct the name
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   476
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   477
	if (do_prefix) {
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   478
		CzechPattern pattern = name_czech_adj[prefix].pattern;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   479
		int endpos;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   480
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   481
		strcat(buf, name_czech_adj[prefix].name);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   482
		endpos = strlen(buf) - 1;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   483
		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
   484
			/* -ovX -> -uv */
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   485
			buf[endpos - 2] = 'u';
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   486
			assert(buf[endpos - 1] == 'v');
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   487
			buf[endpos] = '\0';
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   488
		} else {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   489
			buf[endpos] = name_czech_patmod[gender][pattern];
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   490
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   491
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   492
		strcat(buf, " ");
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
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   495
	if (dynamic_subst) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   496
		strcat(buf, name_czech_subst_stem[stem].name);
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   497
		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
   498
			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
   499
			const char *endstr = name_czech_subst_ending[ending].name;
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   500
			int postlen, endlen;
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   501
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
   502
			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
   503
			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
   504
			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
   505
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   506
			// 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
   507
			if (postlen < 2 || postlen > endlen || (
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   508
						(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
   509
						poststr[2] != endstr[1])
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   510
					) {
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   511
				uint buflen;
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
   512
				strcat(buf, 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
   513
				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
   514
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
   515
				// k-i -> c-i, h-i -> z-i
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
				if (endstr[0] == 'i') {
1473
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   517
					switch (buf[buflen - 1]) {
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   518
						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
   519
						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
   520
						default: break;
f5fcec39c451 (svn r1977) Typedef some enums and struct plus some minor style changes
tron
parents: 1447
diff changeset
   521
					}
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
   522
				}
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
   523
			}
1425
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   524
		}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   525
		strcat(buf, name_czech_subst_ending[ending].name);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   526
	} else {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   527
		strcat(buf, name_czech_subst_full[stem].name);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   528
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   529
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   530
	if (do_suffix) {
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   531
		strcat(buf, " ");
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   532
		strcat(buf, name_czech_suffix[suffix]);
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   533
	}
18d64e3ad80a (svn r1929) Feature: [namegen] Support for dynamic generation of the Czech town names.
pasky
parents: 1422
diff changeset
   534
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   535
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   536
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   537
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   538
static byte MakeRomanianTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   539
{
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   540
	strcpy(buf, name_romanian_real[SeedChance(0, lengthof(name_romanian_real), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   541
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   542
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   543
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   544
static byte MakeSlovakTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   545
{
1422
525b35328bfe (svn r1926) Codechange: Renamed some of the predefined town names arrays for consistent naming.
pasky
parents: 1307
diff changeset
   546
	strcpy(buf, name_slovak_real[SeedChance(0, lengthof(name_slovak_real), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   547
	return 0;
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   548
}
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   549
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   550
static byte MakeNorwegianTownName(char *buf, uint32 seed)
948
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   551
{
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   552
	strcpy(buf, "");
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   553
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   554
	// Use first 4 bit from seed to decide whether or not this town should
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   555
	// 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
   556
	if (SeedChance(0, 15, seed) < 3) {
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   557
		// Use 7bit for the realname table index.  Bit 4-10
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   558
		strcat(buf, name_norwegian_real[SeedChance(4, lengthof(name_norwegian_real), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   559
	} else {
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   560
		// Use 7bit for the first fake part.  Bit 4-10
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   561
		strcat(buf, name_norwegian_1[SeedChance(4, lengthof(name_norwegian_1), seed)]);
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   562
		// Use 7bit for the last fake part.  Bit 11-17
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   563
		strcat(buf, name_norwegian_2[SeedChance(11, lengthof(name_norwegian_2), seed)]);
958
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   564
	}
a6217005ff41 (svn r1450) Updated norwegian townname generation (Simen Graaten)
miham
parents: 948
diff changeset
   565
948
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   566
	return 0;
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   567
}
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   568
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   569
static byte MakeHungarianTownName(char *buf, uint32 seed)
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   570
{
959
e6a3bbda610f (svn r1451) Fix some of the signed/unsigned comparison warnings
tron
parents: 958
diff changeset
   571
	uint i;
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   572
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   573
	//null terminates the string for strcat
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   574
	strcpy(buf, "");
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   575
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   576
	if (SeedChance(12, 15, seed) < 3) {
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   577
		strcat(buf, name_hungarian_real[SeedChance(0, lengthof(name_hungarian_real), seed)]);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   578
	} else {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   579
		// optional first segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   580
		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
   581
		if (i < lengthof(name_hungarian_1))
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   582
			strcat(buf, name_hungarian_1[i]);
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   583
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   584
		// mandatory middle segments
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   585
		strcat(buf, name_hungarian_2[SeedChance(3, lengthof(name_hungarian_2), seed)]);
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   586
		strcat(buf, name_hungarian_3[SeedChance(6, lengthof(name_hungarian_3), seed)]);
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   587
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   588
		// optional last segment
996
62e7def91662 (svn r1494) Give GetNumberBasedOnSeed() a bit more sane name: SeedChance()
tron
parents: 994
diff changeset
   589
		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
   590
		if (i < lengthof(name_hungarian_4)) {
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   591
			strcat(buf, name_hungarian_4[i]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   592
		}
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   593
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   594
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   595
	return 0;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   596
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   597
1307
74a20969a884 (svn r1811) Use char for string handling in namegen.[ch]
tron
parents: 1306
diff changeset
   598
static byte MakeSwissTownName(char *buf, uint32 seed)
1030
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   599
{
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   600
	strcpy(buf, name_swiss_real[SeedChance(0, lengthof(name_swiss_real), seed)]);
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   601
	return 0;
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   602
}
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   603
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   604
static byte MakeDanishTownName(char *buf, uint32 seed)
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   605
{
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   606
	int i;
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   607
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   608
	// null terminates the string for strcat
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   609
	strcpy(buf, "");
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   610
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   611
	// optional first segment
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   612
	i = SeedChanceBias(0, lengthof(name_danish_1), seed, 50);
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   613
	if (i >= 0)
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   614
		strcat(buf, name_danish_1[i]);
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   615
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   616
	// middle segments removed as this algorithm seems to create much more realistic names
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   617
	strcat(buf, name_danish_2[SeedChance( 7, lengthof(name_danish_2), seed)]);
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   618
	strcat(buf, name_danish_3[SeedChance(16, lengthof(name_danish_3), seed)]);
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   619
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   620
	return 0;
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   621
}
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   622
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   623
TownNameGenerator * const _town_name_generators[] =
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   624
{
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   625
	MakeEnglishOriginalTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   626
	MakeFrenchTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   627
	MakeGermanTownName,
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   628
	MakeEnglishAdditionalTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   629
	MakeSpanishTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   630
	MakeSillyTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   631
	MakeSwedishTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   632
	MakeDutchTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   633
	MakeFinnishTownName,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   634
	MakePolishTownName,
428
a473512676f1 (svn r627) Merge r439 to trunk:
tron
parents: 264
diff changeset
   635
	MakeSlovakTownName,
948
02a654572ceb (svn r1438) Added norwegian townnames
miham
parents: 852
diff changeset
   636
	MakeNorwegianTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   637
	MakeHungarianTownName,
233
dd177a8c9f19 (svn r234) -Fix: added missing romanian.txt to VC6, VS.NET and Jamfile project file
darkvater
parents: 193
diff changeset
   638
	MakeAustrianTownName,
264
5f2effba978c (svn r270) Fix: [ 1028851 ] automatic and unwanted city renaming
dominik
parents: 240
diff changeset
   639
	MakeRomanianTownName,
5f2effba978c (svn r270) Fix: [ 1028851 ] automatic and unwanted city renaming
dominik
parents: 240
diff changeset
   640
	MakeCzechTownName,
1030
24c0b0000bf0 (svn r1531) -Feature: [1039061] Swiss town-names (vulvulune)
darkvater
parents: 996
diff changeset
   641
	MakeSwissTownName,
2431
447292e83ab3 (svn r2957) - Feature: [ 1263280 ] Danish town names (fey_dk)
Darkvater
parents: 2186
diff changeset
   642
	MakeDanishTownName,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   643
};
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   644
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   645
// DO WE NEED THIS ANY MORE?
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   646
#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
   647
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   648
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
   649
{
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   650
	switch (old_town_name_type) {
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   651
		case 0: case 3: /* English, American */
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   652
			/*	Already OK */
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   653
			return townnameparts;
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   654
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   655
		case 1: /* French */
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   656
			/*	For some reason 86 needs to be subtracted from townnameparts
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   657
			*	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
   658
			return FIXNUM(townnameparts - 86, lengthof(name_french_real), 0);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   659
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   660
		case 2: /* German */
65
f9f866bc609c (svn r66) -Fix Station list updated on station deletion/station rename
darkvater
parents: 8
diff changeset
   661
			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
   662
			return townnameparts;
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   663
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   664
		case 4: /* Latin-American */
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   665
			/*	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
   666
			return FIXNUM(townnameparts, lengthof(name_spanish_real), 0);
993
ac0a5130938b (svn r1491) Fix bracing style and indentation (Jango)
tron
parents: 992
diff changeset
   667
4
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   668
		case 5: /* Silly */
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   669
			/*	NUM_SILLY_1	-	lower 16 bits
833
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   670
			*	NUM_SILLY_2	-	upper 16 bits without leading 1 (first 8 bytes)
b8b8fb18ad51 (svn r1307) -Fix/feature: rewrote the townname generation code. Code is much more
truelight
parents: 428
diff changeset
   671
			*	1000 0000 2222 2222 0000 0000 1111 1111 */
2549
5587f9a38563 (svn r3078) Some more stuff, which piled up:
tron
parents: 2484
diff changeset
   672
			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
   673
	}
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   674
	return 0;
cad62d5f9708 (svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents: 0
diff changeset
   675
}