summaryrefslogtreecommitdiff
path: root/namegen.c
diff options
context:
space:
mode:
authordarkvater <darkvater@openttd.org>2004-08-10 14:42:52 +0000
committerdarkvater <darkvater@openttd.org>2004-08-10 14:42:52 +0000
commita32d8553e7166bd95d355c633307b9782402868a (patch)
tree33378a01da401cbee1bc5b61e1fa3d9b1fb247f3 /namegen.c
parentcc8080f2dc96d27035830915a9679101d0a77085 (diff)
downloadopenttd-a32d8553e7166bd95d355c633307b9782402868a.tar.xz
(svn r5) -Fix: townname generation of TTDLX savegames. All work
except for German Townnames (also fix one typo on English town-names) -CodeChange: *act_paper to *act_water in Town to more resemble its use -Fix: AI players now retain AI status. Since TTDLX savegame status is not fully documented, some holes exist (AI state is set to one without a vehicle, otherwise it crashes)
Diffstat (limited to 'namegen.c')
-rw-r--r--namegen.c41
1 files changed, 36 insertions, 5 deletions
diff --git a/namegen.c b/namegen.c
index f5b4486c5..9ae5c7516 100644
--- a/namegen.c
+++ b/namegen.c
@@ -534,7 +534,7 @@ static byte MakeGermanTownName(byte *buf, uint32 seed)
if ((ext==12) || (ext==19)) {
i=GETNUM(2,NUM_GERMAN_3-2);
AppendPart(&buf, 2+i, german_3);
- }
+ }
i=GETNUM(3,NUM_GERMAN_1);
@@ -543,7 +543,7 @@ static byte MakeGermanTownName(byte *buf, uint32 seed)
if (i>NUM_GERMAN_1_HARDCODED-1) {
AppendPart(&buf, GETNUM(5, NUM_GERMAN_2), german_2);
- }
+ }
if (ext==24) {
i=GETNUM(9,NUM_GERMAN_4);
@@ -551,11 +551,11 @@ static byte MakeGermanTownName(byte *buf, uint32 seed)
if (i<=NUM_GERMAN_4_PRECHANGE-1) {
AppendPart(&buf, 0, german_3);
AppendPart(&buf, i, german_4);
- } else {
+ } else {
AppendPart(&buf, 1, german_3);
AppendPart(&buf, i, german_4);
- }
}
+ }
return 0;
}
@@ -802,7 +802,7 @@ static const char silly_1[] =
MK("Scramble")
MK("Silly")
MK("Simple")
- MK("Tricky")
+ MK("Trickle")
MK("Slippery")
MK("Slimey")
MK("Slumber")
@@ -1972,3 +1972,34 @@ TownNameGenerator * const _town_name_generators[] = {
MakeHungarianTownName,
MakeAustrianTownName
};
+
+#define FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z)
+
+uint32 GetOldTownName(uint32 townnameparts, byte old_town_name_type)
+{
+ uint32 a = 0;
+ switch (old_town_name_type) {
+ case 0: case 3: /* English, American */
+ /* Already OK */
+ return townnameparts;
+ case 1: /* French */
+ /* For some reason 86 needs to be subtracted from townnameparts
+ * 0000 0000 0000 0000 0000 0000 1111 1111 */
+ return FIXNUM(townnameparts - 86, NUM_FRENCH_1, 0);
+ case 2: /* German */
+ #ifdef _DEBUG
+ printf("German Townnames are buggy... (%d)\n", townnameparts);
+ #endif
+ return townnameparts;
+ case 4: /* Latin-American */
+ /* 0000 0000 0000 0000 0000 0000 1111 1111 */
+ return FIXNUM(townnameparts, NUM_SPANISH_1, 0);
+ case 5: /* Silly */
+ //AppendPart(&buf, GETNUM(16, NUM_SILLY_2),silly_2);
+ /* NUM_SILLY_1 - lower 16 bits
+ * NUM_SILLY_2 - upper 16 bits without leading 1 (first 8 bytes)
+ * 1000 0000 2222 2222 0000 0000 1111 1111 */
+ return FIXNUM(townnameparts, NUM_SILLY_1, 0) | FIXNUM(((townnameparts >> 16)&0xFF), NUM_SILLY_2, 16);
+ }
+ return 0;
+}