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