src/town_type.h
author rubidium
Thu, 18 Dec 2008 12:23:08 +0000
changeset 10436 8d3a9fbe8f19
parent 10208 72c00af5c95d
permissions -rw-r--r--
(svn r14689) -Change: make configure die on commonly made user mistakes, like not having SDL development files or zlib headers installed; you can still compile a dedicated server or a binary without zlib, but you have to explicitly force it.
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     1
/* $Id$ */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     2
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     3
/** @file town_type.h Types related to towns. */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     4
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     5
#ifndef TOWN_TYPE_H
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     6
#define TOWN_TYPE_H
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     7
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     8
#include "core/enum_type.hpp"
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
     9
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    10
typedef uint16 TownID;
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    11
typedef uint16 HouseID;
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    12
typedef uint16 HouseClassID;
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    13
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    14
struct Town;
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    15
struct HouseSpec;
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    16
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    17
enum TownSizeMode {
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    18
	TSM_RANDOM,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    19
	TSM_FIXED,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    20
	TSM_CITY
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    21
};
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    22
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    23
enum {
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    24
	/* These refer to the maximums, so Appalling is -1000 to -400
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    25
	 * MAXIMUM RATINGS BOUNDARIES */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    26
	RATING_MINIMUM     = -1000,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    27
	RATING_APPALLING   =  -400,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    28
	RATING_VERYPOOR    =  -200,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    29
	RATING_POOR        =     0,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    30
	RATING_MEDIOCRE    =   200,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    31
	RATING_GOOD        =   400,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    32
	RATING_VERYGOOD    =   600,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    33
	RATING_EXCELLENT   =   800,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    34
	RATING_OUTSTANDING =  1000,         ///< OUTSTANDING
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    35
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    36
	RATING_MAXIMUM = RATING_OUTSTANDING,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    37
8814
bff94f5654b5 (svn r12560) -Cleanup: town_cmd.cpp and header files - variable scope and a bit of coding style
smatz
parents: 8796
diff changeset
    38
	RATING_INITIAL = 500, ///< initial rating
bff94f5654b5 (svn r12560) -Cleanup: town_cmd.cpp and header files - variable scope and a bit of coding style
smatz
parents: 8796
diff changeset
    39
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    40
	/* RATINGS AFFECTING NUMBERS */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    41
	RATING_TREE_DOWN_STEP = -35,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    42
	RATING_TREE_MINIMUM   = RATING_MINIMUM,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    43
	RATING_TREE_UP_STEP   = 7,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    44
	RATING_TREE_MAXIMUM   = 220,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    45
10208
72c00af5c95d (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium
parents: 9913
diff changeset
    46
	RATING_GROWTH_UP_STEP    =   5, ///< when a town grows, all companies have rating increased a bit ...
8814
bff94f5654b5 (svn r12560) -Cleanup: town_cmd.cpp and header files - variable scope and a bit of coding style
smatz
parents: 8796
diff changeset
    47
	RATING_GROWTH_MAXIMUM    = RATING_MEDIOCRE, ///< ... up to RATING_MEDIOCRE
10208
72c00af5c95d (svn r14422) -Codechange: also reflect the changes of r14421 in the filenames.
rubidium
parents: 9913
diff changeset
    48
	RATING_STATION_UP_STEP   =  12, ///< when a town grows, company gains reputation for all well serviced stations ...
8814
bff94f5654b5 (svn r12560) -Cleanup: town_cmd.cpp and header files - variable scope and a bit of coding style
smatz
parents: 8796
diff changeset
    49
	RATING_STATION_DOWN_STEP = -15, ///< ... but loses for bad serviced stations
bff94f5654b5 (svn r12560) -Cleanup: town_cmd.cpp and header files - variable scope and a bit of coding style
smatz
parents: 8796
diff changeset
    50
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    51
	RATING_TUNNEL_BRIDGE_DOWN_STEP = -250,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    52
	RATING_TUNNEL_BRIDGE_MINIMUM   = 0,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    53
9342
6daf441eee26 (svn r13234) -Fix: Check/affect town rating when removing/bulldozing town-owned road under drivethrough stops.
frosch
parents: 8814
diff changeset
    54
	RATING_ROAD_DOWN_STEP_INNER = -50, ///< removing a roadpiece in the middle
6daf441eee26 (svn r13234) -Fix: Check/affect town rating when removing/bulldozing town-owned road under drivethrough stops.
frosch
parents: 8814
diff changeset
    55
	RATING_ROAD_DOWN_STEP_EDGE  = -18, ///< removing a roadpiece at the edge
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    56
	RATING_ROAD_MINIMUM   = -100,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    57
	RATING_HOUSE_MINIMUM  = RATING_MINIMUM,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    58
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    59
	RATING_BRIBE_UP_STEP = 200,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    60
	RATING_BRIBE_MAXIMUM = 800,
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    61
	RATING_BRIBE_DOWN_TO = -50        // XXX SHOULD BE SOMETHING LOWER?
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    62
};
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    63
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    64
/**
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    65
 * Town Layouts
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    66
 */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    67
enum TownLayout {
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    68
	TL_NO_ROADS     = 0, ///< Build no more roads, but still build houses
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    69
	TL_ORIGINAL,         ///< Original algorithm (min. 1 distance between roads)
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    70
	TL_BETTER_ROADS,     ///< Extended original algorithm (min. 2 distance between roads)
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    71
	TL_2X2_GRID,         ///< Geometric 2x2 grid algorithm
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    72
	TL_3X3_GRID,         ///< Geometric 3x3 grid algorithm
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    73
8796
ccf3ed611354 (svn r12534) -Feature: Add a new type of town road layouts - random for each town
skidd13
parents: 8213
diff changeset
    74
	TL_RANDOM,           ///< Random town layout
ccf3ed611354 (svn r12534) -Feature: Add a new type of town road layouts - random for each town
skidd13
parents: 8213
diff changeset
    75
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    76
	NUM_TLS,             ///< Number of town layouts
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    77
};
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    78
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    79
/* It needs to be 8bits, because we save and load it as such */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    80
/** Define basic enum properties */
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    81
template <> struct EnumPropsT<TownLayout> : MakeEnumPropsT<TownLayout, byte, TL_NO_ROADS, NUM_TLS, NUM_TLS> {};
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    82
typedef TinyEnumT<TownLayout> TownLayoutByte; //typedefing-enumification of TownLayout
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    83
9913
d9ce89020cc0 (svn r14063) -Codechange: replace some "magic" constants with enumified constants.
rubidium
parents: 9478
diff changeset
    84
enum {
d9ce89020cc0 (svn r14063) -Codechange: replace some "magic" constants with enumified constants.
rubidium
parents: 9478
diff changeset
    85
	MAX_LENGTH_TOWN_NAME_BYTES  =  31, ///< The maximum length of a town name in bytes including '\0'
d9ce89020cc0 (svn r14063) -Codechange: replace some "magic" constants with enumified constants.
rubidium
parents: 9478
diff changeset
    86
	MAX_LENGTH_TOWN_NAME_PIXELS = 130, ///< The maximum length of a town name in pixels
d9ce89020cc0 (svn r14063) -Codechange: replace some "magic" constants with enumified constants.
rubidium
parents: 9478
diff changeset
    87
};
d9ce89020cc0 (svn r14063) -Codechange: replace some "magic" constants with enumified constants.
rubidium
parents: 9478
diff changeset
    88
8213
7bdd7593eb9b (svn r11776) -Codechange: more header splittings to reduce the dependencies.
rubidium
parents:
diff changeset
    89
#endif /* TOWN_TYPE_H */