rubidium@8213: /* $Id$ */ rubidium@8213: rubidium@8213: /** @file town_type.h Types related to towns. */ rubidium@8213: rubidium@8213: #ifndef TOWN_TYPE_H rubidium@8213: #define TOWN_TYPE_H rubidium@8213: rubidium@8213: #include "core/enum_type.hpp" rubidium@8213: rubidium@8213: typedef uint16 TownID; rubidium@8213: typedef uint16 HouseID; rubidium@8213: typedef uint16 HouseClassID; rubidium@8213: rubidium@8213: struct Town; rubidium@8213: struct HouseSpec; rubidium@8213: rubidium@8213: enum TownSizeMode { rubidium@8213: TSM_RANDOM, rubidium@8213: TSM_FIXED, rubidium@8213: TSM_CITY rubidium@8213: }; rubidium@8213: rubidium@8213: enum { rubidium@8213: /* These refer to the maximums, so Appalling is -1000 to -400 rubidium@8213: * MAXIMUM RATINGS BOUNDARIES */ rubidium@8213: RATING_MINIMUM = -1000, rubidium@8213: RATING_APPALLING = -400, rubidium@8213: RATING_VERYPOOR = -200, rubidium@8213: RATING_POOR = 0, rubidium@8213: RATING_MEDIOCRE = 200, rubidium@8213: RATING_GOOD = 400, rubidium@8213: RATING_VERYGOOD = 600, rubidium@8213: RATING_EXCELLENT = 800, rubidium@8213: RATING_OUTSTANDING = 1000, ///< OUTSTANDING rubidium@8213: rubidium@8213: RATING_MAXIMUM = RATING_OUTSTANDING, rubidium@8213: smatz@8814: RATING_INITIAL = 500, ///< initial rating smatz@8814: rubidium@8213: /* RATINGS AFFECTING NUMBERS */ rubidium@8213: RATING_TREE_DOWN_STEP = -35, rubidium@8213: RATING_TREE_MINIMUM = RATING_MINIMUM, rubidium@8213: RATING_TREE_UP_STEP = 7, rubidium@8213: RATING_TREE_MAXIMUM = 220, rubidium@8213: smatz@8814: RATING_GROWTH_UP_STEP = 5, ///< when a town grows, all players have rating increased a bit ... smatz@8814: RATING_GROWTH_MAXIMUM = RATING_MEDIOCRE, ///< ... up to RATING_MEDIOCRE smatz@8814: RATING_STATION_UP_STEP = 12, ///< when a town grows, player gains reputation for all well serviced stations ... smatz@8814: RATING_STATION_DOWN_STEP = -15, ///< ... but loses for bad serviced stations smatz@8814: rubidium@8213: RATING_TUNNEL_BRIDGE_DOWN_STEP = -250, rubidium@8213: RATING_TUNNEL_BRIDGE_MINIMUM = 0, rubidium@8213: rubidium@8213: RATING_INDUSTRY_DOWN_STEP = -1500, rubidium@8213: RATING_INDUSTRY_MINIMUM = RATING_MINIMUM, rubidium@8213: frosch@9342: RATING_ROAD_DOWN_STEP_INNER = -50, ///< removing a roadpiece in the middle frosch@9342: RATING_ROAD_DOWN_STEP_EDGE = -18, ///< removing a roadpiece at the edge rubidium@8213: RATING_ROAD_MINIMUM = -100, rubidium@8213: RATING_HOUSE_MINIMUM = RATING_MINIMUM, rubidium@8213: rubidium@8213: RATING_BRIBE_UP_STEP = 200, rubidium@8213: RATING_BRIBE_MAXIMUM = 800, rubidium@8213: RATING_BRIBE_DOWN_TO = -50 // XXX SHOULD BE SOMETHING LOWER? rubidium@8213: }; rubidium@8213: rubidium@8213: /** rubidium@8213: * Town Layouts rubidium@8213: */ rubidium@8213: enum TownLayout { rubidium@8213: TL_NO_ROADS = 0, ///< Build no more roads, but still build houses rubidium@8213: TL_ORIGINAL, ///< Original algorithm (min. 1 distance between roads) rubidium@8213: TL_BETTER_ROADS, ///< Extended original algorithm (min. 2 distance between roads) rubidium@8213: TL_2X2_GRID, ///< Geometric 2x2 grid algorithm rubidium@8213: TL_3X3_GRID, ///< Geometric 3x3 grid algorithm rubidium@8213: skidd13@8796: TL_RANDOM, ///< Random town layout skidd13@8796: rubidium@8213: NUM_TLS, ///< Number of town layouts rubidium@8213: }; rubidium@8213: rubidium@8213: /* It needs to be 8bits, because we save and load it as such */ rubidium@8213: /** Define basic enum properties */ rubidium@8213: template <> struct EnumPropsT : MakeEnumPropsT {}; rubidium@8213: typedef TinyEnumT TownLayoutByte; //typedefing-enumification of TownLayout rubidium@8213: rubidium@8213: #endif /* TOWN_TYPE_H */