summaryrefslogtreecommitdiff
path: root/src/town_type.h
diff options
context:
space:
mode:
authorNiels Martin Hansen <nielsm@indvikleren.dk>2018-11-07 19:06:39 +0100
committerNiels Martin Hansen <nielsm@indvikleren.dk>2019-03-04 20:19:44 +0100
commit52572cafa62b1ab2f095f8a6d7db23f5d0fa618e (patch)
tree576afdf38e049815a7227d836354dce4260e041e /src/town_type.h
parent7f00a420cbd2e4311a34937bc33966981b0ef5e5 (diff)
downloadopenttd-52572cafa62b1ab2f095f8a6d7db23f5d0fa618e.tar.xz
Add: Option for population-linear town cargo generation
Introduce a new default algorithm for town cargo generation (passengers and mail), and a game setting to choose between the new and original algorithm. The original town cargo generation algorithm has the property of the generated amount relating to the square of each building's population, meaning large towns easily produce more cargo than can realistically be transported. The problem is excessive cargo is amplified if playing with cargodist. The new algorithm introduced instead has a linear relation to the population. The result is that smaller towns will produce slightly more cargo, while the largest towns will produce about a fourth of what they would with the original algorithm. Existing savegames will use the original algorithm, while new games will default to the new algorithm.
Diffstat (limited to 'src/town_type.h')
-rw-r--r--src/town_type.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/town_type.h b/src/town_type.h
index 0c93c8df8..608530106 100644
--- a/src/town_type.h
+++ b/src/town_type.h
@@ -105,6 +105,14 @@ enum TownFounding {
/** It needs to be 8bits, because we save and load it as such */
typedef SimpleTinyEnumT<TownFounding, byte> TownFoundingByte;
+/** Town cargo generation modes */
+enum TownCargoGenMode : byte {
+ TCGM_BEGIN = 0,
+ TCGM_ORIGINAL = 0, ///< Original algorithm (quadratic cargo by population)
+ TCGM_BITCOUNT, ///< Bit-counted algorithm (normal distribution from individual house population)
+ TCGM_END,
+};
+
static const uint MAX_LENGTH_TOWN_NAME_CHARS = 32; ///< The maximum length of a town name in characters including '\0'
/** Store the maximum and actually transported cargo amount for the current and the last month. */