author | KUDr |
Fri, 20 Apr 2007 19:43:06 +0000 | |
changeset 6513 | 454347ca3dfb |
parent 6486 | 7d2ae0a167fb |
child 6605 | d92f454a00a6 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
3 |
/** @file town.h */ |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
4 |
|
0 | 5 |
#ifndef TOWN_H |
6 |
#define TOWN_H |
|
7 |
||
5216
8bd14ee39af2
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
matthijs
parents:
4983
diff
changeset
|
8 |
#include "oldpool.h" |
0 | 9 |
#include "player.h" |
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
10 |
#include "functions.h" |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
11 |
#include "helpers.hpp" |
0 | 12 |
|
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
13 |
enum { |
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
14 |
HOUSE_NO_CLASS = 0, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
15 |
NEW_HOUSE_OFFSET = 110, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
16 |
HOUSE_MAX = 512, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
17 |
INVALID_TOWN = 0xFFFF, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
18 |
INVALID_HOUSE_ID = 0xFFFF, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
19 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
20 |
/* There can only be as many classes as there are new houses, plus one for |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
21 |
* NO_CLASS, as the original houses don't have classes. */ |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
22 |
HOUSE_CLASS_MAX = HOUSE_MAX - NEW_HOUSE_OFFSET + 1, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
23 |
}; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
24 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
25 |
enum BuildingFlags { |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
26 |
TILE_NO_FLAG = 0, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
27 |
TILE_SIZE_1x1 = 1U << 0, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
28 |
TILE_NOT_SLOPED = 1U << 1, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
29 |
TILE_SIZE_2x1 = 1U << 2, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
30 |
TILE_SIZE_1x2 = 1U << 3, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
31 |
TILE_SIZE_2x2 = 1U << 4, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
32 |
BUILDING_IS_ANIMATED = 1U << 5, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
33 |
BUILDING_IS_CHURCH = 1U << 6, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
34 |
BUILDING_IS_STADIUM = 1U << 7, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
35 |
BUILDING_HAS_1_TILE = TILE_SIZE_1x1 | TILE_SIZE_2x1 | TILE_SIZE_1x2 | TILE_SIZE_2x2, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
36 |
BUILDING_2_TILES_X = TILE_SIZE_2x1 | TILE_SIZE_2x2, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
37 |
BUILDING_2_TILES_Y = TILE_SIZE_1x2 | TILE_SIZE_2x2, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
38 |
BUILDING_HAS_4_TILES = TILE_SIZE_2x2, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
39 |
}; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
40 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
41 |
DECLARE_ENUM_AS_BIT_SET(BuildingFlags) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
42 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
43 |
enum HouseZones { ///< Bit Value Meaning |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
44 |
HZ_NOZNS = 0x0000, ///< 0 This is just to get rid of zeros, meaning none |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
45 |
HZ_ZON1 = 0x0001, ///< 0..4 1,2,4,8,10 which town zones the building can be built in, Zone1 been the further suburb |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
46 |
HZ_ZON2 = 0x0002, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
47 |
HZ_ZON3 = 0x0004, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
48 |
HZ_ZON4 = 0x0008, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
49 |
HZ_ZON5 = 0x0010, ///< center of town |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
50 |
HZ_ZONALL = 0x001F, ///< 1F This is just to englobe all above types at once |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
51 |
HZ_SUBARTC_ABOVE = 0x0800, ///< 11 800 can appear in sub-arctic climate above the snow line |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
52 |
HZ_TEMP = 0x1000, ///< 12 1000 can appear in temperate climate |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
53 |
HZ_SUBARTC_BELOW = 0x2000, ///< 13 2000 can appear in sub-arctic climate below the snow line |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
54 |
HZ_SUBTROPIC = 0x4000, ///< 14 4000 can appear in subtropical climate |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
55 |
HZ_TOYLND = 0x8000 ///< 15 8000 can appear in toyland climate |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
56 |
}; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
57 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
58 |
DECLARE_ENUM_AS_BIT_SET(HouseZones) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
59 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
60 |
enum HouseExtraFlags { |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
61 |
NO_EXTRA_FLAG = 0, |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
62 |
BUILDING_IS_HISTORICAL = 1U << 0, ///< this house will only appear during town generation in random games, thus the historical |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
63 |
BUILDING_IS_PROTECTED = 1U << 1, ///< towns and AI will not remove this house, while human players will be able tp |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
64 |
SYNCHRONISED_CALLBACK_1B = 1U << 2, ///< synchronized callback 1B will be performed, on multi tile houses |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
65 |
CALLBACK_1A_RANDOM_BITS = 1U << 3, ///< callback 1A needs random bits |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
66 |
}; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
67 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
68 |
DECLARE_ENUM_AS_BIT_SET(HouseExtraFlags) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
69 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
70 |
typedef uint16 HouseID; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
71 |
typedef uint16 HouseClassID; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
72 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
73 |
struct BuildingCounts { |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
74 |
uint8 id_count[HOUSE_MAX]; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
75 |
uint8 class_count[HOUSE_CLASS_MAX]; |
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
76 |
}; |
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
77 |
|
0 | 78 |
struct Town { |
79 |
TileIndex xy; |
|
80 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
81 |
/* Current population of people and amount of houses. */ |
0 | 82 |
uint16 num_houses; |
83 |
uint32 population; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
121
diff
changeset
|
84 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
85 |
/* Town name */ |
0 | 86 |
uint16 townnametype; |
87 |
uint32 townnameparts; |
|
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
121
diff
changeset
|
88 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
89 |
/* NOSAVE: Location of name sign, UpdateTownVirtCoord updates this. */ |
0 | 90 |
ViewportSign sign; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
121
diff
changeset
|
91 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
92 |
/* Makes sure we don't build certain house types twice. |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
93 |
* bit 0 = Building funds received |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
94 |
* bit 1 = CHURCH |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
95 |
* bit 2 = STADIUM */ |
0 | 96 |
byte flags12; |
97 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
98 |
/* Which players have a statue? */ |
0 | 99 |
byte statues; |
100 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
101 |
/* Player ratings as well as a mask that determines which players have a rating. */ |
0 | 102 |
byte have_ratings; |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
103 |
uint8 unwanted[MAX_PLAYERS]; ///< how many months companies aren't wanted by towns (bribe) |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
104 |
PlayerByte exclusivity; ///< which player has exslusivity |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
105 |
uint8 exclusive_counter; ///< months till the exclusivity expires |
0 | 106 |
int16 ratings[MAX_PLAYERS]; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
121
diff
changeset
|
107 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
108 |
/* Maximum amount of passengers and mail that can be transported. */ |
1377
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
109 |
uint32 max_pass; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
110 |
uint32 max_mail; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
111 |
uint32 new_max_pass; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
112 |
uint32 new_max_mail; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
113 |
uint32 act_pass; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
114 |
uint32 act_mail; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
115 |
uint32 new_act_pass; |
7ab329d1fc28
(svn r1881) -Fix: [ 1119308 ] Max passengers / mail variables are now 32 bit
celestar
parents:
1362
diff
changeset
|
116 |
uint32 new_act_mail; |
0 | 117 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
118 |
/* Amount of passengers that were transported. */ |
0 | 119 |
byte pct_pass_transported; |
120 |
byte pct_mail_transported; |
|
121 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
122 |
/* Amount of food and paper that was transported. Actually a bit mask would be enough. */ |
0 | 123 |
uint16 act_food; |
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
124 |
uint16 act_water; |
0 | 125 |
uint16 new_act_food; |
4
cad62d5f9708
(svn r5) -Fix: townname generation of TTDLX savegames. All work
darkvater
parents:
0
diff
changeset
|
126 |
uint16 new_act_water; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
121
diff
changeset
|
127 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
128 |
/* Time until we rebuild a house. */ |
6454
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
129 |
uint16 time_until_rebuild; |
0 | 130 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
131 |
/* When to grow town next time. */ |
6454
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
132 |
uint16 grow_counter; |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
133 |
int16 growth_rate; |
0 | 134 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
135 |
/* Fund buildings program in action? */ |
0 | 136 |
byte fund_buildings_months; |
193
0a7025304867
(svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents:
121
diff
changeset
|
137 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
138 |
/* Fund road reconstruction in action? */ |
0 | 139 |
byte road_build_months; |
140 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
141 |
/* Index in town array */ |
3346
a0d4def7d934
(svn r4130) - CodeChange: Add proper semantics for TownID for such variables instead of using the general uint16-type. We probably need to change GetTown() and IsTownIndex() as well to use TownID.
Darkvater
parents:
2958
diff
changeset
|
142 |
TownID index; |
0 | 143 |
|
6486
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
144 |
/* If this is a larger town, and should grow more quickly. */ |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
145 |
bool larger_town; |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
146 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
147 |
/* NOSAVE: UpdateTownRadius updates this given the house count. */ |
0 | 148 |
uint16 radius[5]; |
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
149 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
150 |
/* NOSAVE: The number of each type of building in the town. */ |
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
151 |
BuildingCounts building_counts; |
0 | 152 |
}; |
153 |
||
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
154 |
struct HouseSpec { |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
155 |
/* Standard properties */ |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
156 |
Year min_date; ///< introduction year of the house |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
157 |
Year max_date; ///< last year it can be built |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
158 |
byte population; ///< population (Zero on other tiles in multi tile house.) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
159 |
byte removal_cost; ///< cost multiplier for removing it |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
160 |
StringID building_name; ///< building name |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
161 |
uint16 remove_rating_decrease; ///< rating decrease if removed |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
162 |
byte mail_generation; ///< mail generation multiplier (tile based, as the acceptances below) |
6341
b670e4765225
(svn r9366) -Codechange: Unify the different houses acceptances attributes on their cargo counterpart, as well as specifying cargo slot.
belugas
parents:
6332
diff
changeset
|
163 |
byte cargo_acceptance[3]; ///< acceptance level for the cargo slots |
b670e4765225
(svn r9366) -Codechange: Unify the different houses acceptances attributes on their cargo counterpart, as well as specifying cargo slot.
belugas
parents:
6332
diff
changeset
|
164 |
CargoID accepts_cargo[3]; ///< 3 input cargo slots |
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
165 |
BuildingFlags building_flags; ///< some flags that describe the house (size, stadium etc...) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
166 |
HouseZones building_availability; ///< where can it be built (climates, zones) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
167 |
bool enabled; ///< the house is still avaible (by default, true.newgrf can disable it, though) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
168 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
169 |
/* NewHouses properties */ |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
170 |
HouseID substitute_id; ///< which house this one is based on |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
171 |
struct SpriteGroup *spritegroup; ///< pointer to the different sprites of the house |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
172 |
HouseID override; ///< which house this one replaces |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
173 |
uint16 callback_mask; ///< House callback flags |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
174 |
byte random_colour[4]; ///< 4 "random" colours |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
175 |
byte probability; ///< Relative probability of appearing (16 is the standard value) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
176 |
HouseExtraFlags extra_flags; ///< some more flags |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
177 |
HouseClassID class_id; ///< defines the class this house has (grf file based) @See HouseGetVariable, prop 0x44 |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
178 |
byte animation_frames; ///< number of animation frames |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
179 |
byte animation_speed; ///< amount of time between each of those frames |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
180 |
byte processing_time; ///< Periodic refresh multiplier |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
181 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
182 |
/* grf file related properties*/ |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
183 |
uint8 local_id; ///< id defined by the grf file for this house |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
184 |
const struct GRFFile *grffile; ///< grf file that introduced this house |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
185 |
}; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
186 |
|
6486
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
187 |
enum TownSizeMode { |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
188 |
TSM_RANDOM, |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
189 |
TSM_FIXED, |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
190 |
TSM_CITY |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
191 |
}; |
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
192 |
|
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
193 |
VARDEF HouseSpec _house_specs[HOUSE_MAX]; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
194 |
|
6247 | 195 |
uint32 GetWorldPopulation(); |
0 | 196 |
|
835
f6a341f541d7
(svn r1312) -Add: Patch which is on by default: population in label of the town
truelight
parents:
820
diff
changeset
|
197 |
void UpdateTownVirtCoord(Town *t); |
6247 | 198 |
void InitializeTown(); |
3346
a0d4def7d934
(svn r4130) - CodeChange: Add proper semantics for TownID for such variables instead of using the general uint16-type. We probably need to change GetTown() and IsTownIndex() as well to use TownID.
Darkvater
parents:
2958
diff
changeset
|
199 |
void ShowTownViewWindow(TownID town); |
0 | 200 |
void ExpandTown(Town *t); |
6486
7d2ae0a167fb
(svn r9667) -Feature: Add the concept of cities. A (configurable) proportion of towns can
maedhros
parents:
6484
diff
changeset
|
201 |
Town *CreateRandomTown(uint attempts, TownSizeMode mode, uint size); |
0 | 202 |
|
203 |
enum { |
|
204 |
ROAD_REMOVE = 0, |
|
205 |
UNMOVEABLE_REMOVE = 1, |
|
206 |
TUNNELBRIDGE_REMOVE = 1, |
|
207 |
INDUSTRY_REMOVE = 2 |
|
208 |
}; |
|
209 |
||
1005 | 210 |
enum { |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
211 |
/* These refer to the maximums, so Appalling is -1000 to -400 |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
212 |
* MAXIMUM RATINGS BOUNDARIES */ |
3432
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
213 |
RATING_MINIMUM = -1000, |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
214 |
RATING_APPALLING = -400, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
215 |
RATING_VERYPOOR = -200, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
216 |
RATING_POOR = 0, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
217 |
RATING_MEDIOCRE = 200, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
218 |
RATING_GOOD = 400, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
219 |
RATING_VERYGOOD = 600, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
220 |
RATING_EXCELLENT = 800, |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
221 |
RATING_OUTSTANDING = 1000, ///< OUTSTANDING |
1005 | 222 |
|
223 |
RATING_MAXIMUM = RATING_OUTSTANDING, |
|
224 |
||
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
225 |
/* RATINGS AFFECTING NUMBERS */ |
1005 | 226 |
RATING_TREE_DOWN_STEP = -35, |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
227 |
RATING_TREE_MINIMUM = RATING_MINIMUM, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
228 |
RATING_TREE_UP_STEP = 7, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
229 |
RATING_TREE_MAXIMUM = 220, |
1005 | 230 |
|
231 |
RATING_TUNNEL_BRIDGE_DOWN_STEP = -250, |
|
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
232 |
RATING_TUNNEL_BRIDGE_MINIMUM = 0, |
1005 | 233 |
|
234 |
RATING_INDUSTRY_DOWN_STEP = -1500, |
|
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
235 |
RATING_INDUSTRY_MINIMUM = RATING_MINIMUM, |
1005 | 236 |
|
237 |
RATING_ROAD_DOWN_STEP = -50, |
|
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
238 |
RATING_ROAD_MINIMUM = -100, |
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4277
diff
changeset
|
239 |
RATING_HOUSE_MINIMUM = RATING_MINIMUM, |
1005 | 240 |
|
241 |
RATING_BRIBE_UP_STEP = 200, |
|
242 |
RATING_BRIBE_MAXIMUM = 800, |
|
3432
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
243 |
RATING_BRIBE_DOWN_TO = -50 // XXX SHOULD BE SOMETHING LOWER? |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
244 |
}; |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
245 |
|
6454
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
246 |
/** This is the number of ticks between towns being processed for building new |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
247 |
* houses or roads. This value originally came from the size of the town array |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
248 |
* in TTD. */ |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
249 |
static const byte TOWN_GROWTH_FREQUENCY = 70; |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
250 |
|
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
251 |
/** Simple value that indicates the house has reached the final stage of |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
252 |
* construction. */ |
ad53226c2027
(svn r9613) -Feature: Make it possible to have some control over the town growth. The
maedhros
parents:
6422
diff
changeset
|
253 |
static const byte TOWN_HOUSE_COMPLETED = 3; |
3432
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
254 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
255 |
/** This enum is used in conjonction with town->flags12. |
3432
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
256 |
* IT simply states what bit is used for. |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
257 |
* It is pretty unrealistic (IMHO) to only have one church/stadium |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
258 |
* per town, NO MATTER the population of it. |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
259 |
* And there are 5 more bits available on flags12... |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
260 |
*/ |
650dd1972479
(svn r4261) CodeChange : Add and Use Accessor for Houses Construction. And cleaning on town.flags12 too
belugas
parents:
3349
diff
changeset
|
261 |
enum { |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
262 |
TOWN_IS_FUNDED = 0, ///< Town has received some funds for |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
263 |
TOWN_HAS_CHURCH = 1, ///< There can be only one church by town. |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
264 |
TOWN_HAS_STADIUM = 2 ///< There can be only one stadium by town. |
1005 | 265 |
}; |
266 |
||
2958
ac0a9673b522
(svn r3520) Remove unused parameters from some functions
tron
parents:
2817
diff
changeset
|
267 |
bool CheckforTownRating(uint32 flags, Town *t, byte type); |
0 | 268 |
|
4277
345e1bd9525a
(svn r5907) Remove more indirection by using pointers instead of IDs. Also fix some bogus warnings on MSVC by using (void*) casts
tron
parents:
3674
diff
changeset
|
269 |
VARDEF const Town** _town_sort; |
919
544f374ee392
(svn r1407) -Codechange: changed a lot around _stations, _vehicles, _towns and _industries
truelight
parents:
835
diff
changeset
|
270 |
|
5216
8bd14ee39af2
(svn r7331) - Codechange: Rename all memory pool macro's and types to "old pool", so the new pool implementation can be committed alongside it.
matthijs
parents:
4983
diff
changeset
|
271 |
DECLARE_OLD_POOL(Town, Town, 3, 8000) |
1260
632f63689178
(svn r1764) -Add: dynamic towns, you can now have up to 64k towns (let me know when
truelight
parents:
1220
diff
changeset
|
272 |
|
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
273 |
static inline HouseSpec *GetHouseSpecs(HouseID house_id) |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
274 |
{ |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
275 |
assert(house_id < HOUSE_MAX); |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
276 |
return &_house_specs[house_id]; |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
277 |
} |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
278 |
|
1260
632f63689178
(svn r1764) -Add: dynamic towns, you can now have up to 64k towns (let me know when
truelight
parents:
1220
diff
changeset
|
279 |
/** |
1330
5d76a0522a11
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1260
diff
changeset
|
280 |
* Check if a Town really exists. |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
281 |
* @param town to inquiry |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
282 |
* @return true if it exists |
1330
5d76a0522a11
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1260
diff
changeset
|
283 |
*/ |
2436
7d5df545bd5d
(svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents:
2186
diff
changeset
|
284 |
static inline bool IsValidTown(const Town* town) |
1330
5d76a0522a11
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1260
diff
changeset
|
285 |
{ |
4346
66105d4f6e83
(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones
truelight
parents:
4344
diff
changeset
|
286 |
return town->xy != 0; |
1330
5d76a0522a11
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1260
diff
changeset
|
287 |
} |
5d76a0522a11
(svn r1834) - Fix: NPF does not check the owner of its target, busses try to enter other players' depots. TODO
matthijs
parents:
1260
diff
changeset
|
288 |
|
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
289 |
/** |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
290 |
* Check if a TownID is valid. |
6484
79156627e1ba
(svn r9665) -Documentation: Doxygen corrections,errors, corrections of corrections...
belugas
parents:
6454
diff
changeset
|
291 |
* @param index to inquiry in the pool of town |
6422
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
292 |
* @return true if it exists |
6679df1c05ba
(svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents:
6341
diff
changeset
|
293 |
*/ |
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
294 |
static inline bool IsValidTownID(TownID index) |
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
295 |
{ |
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
296 |
return index < GetTownPoolSize() && IsValidTown(GetTown(index)); |
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
297 |
} |
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
298 |
|
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
299 |
VARDEF uint _total_towns; |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
300 |
|
6247 | 301 |
static inline TownID GetMaxTownIndex() |
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
302 |
{ |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
303 |
/* TODO - This isn't the real content of the function, but |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
304 |
* with the new pool-system this will be replaced with one that |
5247
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
305 |
* _really_ returns the highest index. Now it just returns |
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
306 |
* the next safe value we are sure about everything is below. |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
307 |
*/ |
5298
46eabcb5c2b2
(svn r7451) -Fix (7372): GetNum(Towns|Industries) should return the actual number of towns and industries.
rubidium
parents:
5247
diff
changeset
|
308 |
return GetTownPoolSize() - 1; |
5247
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
309 |
} |
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
310 |
|
6247 | 311 |
static inline uint GetNumTowns() |
5247
1f982de55b88
(svn r7372) - CodeChange: Rename all GetXXXArraySize() functions to GetNumXXX() and add GetMaxXXXIndex() functions. This prepares for the new pool interface.
matthijs
parents:
5216
diff
changeset
|
312 |
{ |
4357
aaba385fa723
(svn r6058) -Fix: Get(Industry|Town)ArraySize could never return 0
truelight
parents:
4356
diff
changeset
|
313 |
return _total_towns; |
4354
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
314 |
} |
10f4ce894eb1
(svn r6055) -Codechange: added GetXXXArraySize, which returns HighestID + 1 (or, will do that).
truelight
parents:
4352
diff
changeset
|
315 |
|
4356
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
316 |
/** |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
317 |
* Return a random valid town. |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
318 |
*/ |
6247 | 319 |
static inline Town *GetRandomTown() |
4356
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
320 |
{ |
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
321 |
int num = RandomRange(GetNumTowns()); |
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
322 |
TownID index = INVALID_TOWN; |
4356
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
323 |
|
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
324 |
while (num >= 0) { |
4356
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
325 |
num--; |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
326 |
|
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
327 |
index++; |
5982
52b4f9d7764b
(svn r8681) -Fix (FS#608): wrong comment (rfalke)
rubidium
parents:
5969
diff
changeset
|
328 |
/* Make sure we have a valid town */ |
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
329 |
while (!IsValidTownID(index)) { |
4356
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
330 |
index++; |
5299
cf162c141e2f
(svn r7452) -Fix: GetRandom(Industry|Town) must return a valid industry/town and should not need to loop over the pool for a second time.
rubidium
parents:
5298
diff
changeset
|
331 |
assert(index <= GetMaxTownIndex()); |
4356
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
332 |
} |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
333 |
} |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
334 |
|
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
335 |
return GetTown(index); |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
336 |
} |
ec4e13f21cd0
(svn r6057) -Codechange: made a function GetRandomXXX, that _always_ returns a valid XXX, unless there are none to pick from. Then NULL is returned.
truelight
parents:
4354
diff
changeset
|
337 |
|
4396
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
338 |
void DestroyTown(Town *t); |
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
339 |
|
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
340 |
static inline void DeleteTown(Town *t) |
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
341 |
{ |
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
342 |
DestroyTown(t); |
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
343 |
t->xy = 0; |
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
344 |
} |
28cfaf264db6
(svn r6149) -Codechange: DeleteTown removes a town from the pool
truelight
parents:
4357
diff
changeset
|
345 |
|
5969
57cbd6e884f5
(svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents:
5587
diff
changeset
|
346 |
Town* CalcClosestTownFromTile(TileIndex tile, uint threshold); |
57cbd6e884f5
(svn r8651) -Codechange: group the functions related to getting and setting the town index and move one function that is not related to the map array out of town_map.h.
rubidium
parents:
5587
diff
changeset
|
347 |
|
4983 | 348 |
#define FOR_ALL_TOWNS_FROM(t, start) for (t = GetTown(start); t != NULL; t = (t->index + 1U < GetTownPoolSize()) ? GetTown(t->index + 1U) : NULL) if (IsValidTown(t)) |
1260
632f63689178
(svn r1764) -Add: dynamic towns, you can now have up to 64k towns (let me know when
truelight
parents:
1220
diff
changeset
|
349 |
#define FOR_ALL_TOWNS(t) FOR_ALL_TOWNS_FROM(t, 0) |
632f63689178
(svn r1764) -Add: dynamic towns, you can now have up to 64k towns (let me know when
truelight
parents:
1220
diff
changeset
|
350 |
|
0 | 351 |
VARDEF bool _town_sort_dirty; |
352 |
VARDEF byte _town_sort_order; |
|
353 |
||
354 |
VARDEF Town *_cleared_town; |
|
355 |
VARDEF int _cleared_town_rating; |
|
356 |
||
6332
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
357 |
uint OriginalTileRandomiser(uint x, uint y); |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
358 |
void ResetHouses(); |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
359 |
|
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
360 |
void ClearTownHouse(Town *t, TileIndex tile); |
f3f436dcd7d0
(svn r9315) -Merge: The newhouses branch. With this merge comes almost complete support for
maedhros
parents:
6247
diff
changeset
|
361 |
|
0 | 362 |
#endif /* TOWN_H */ |