1 /* $Id: object_land.h 25876 2013-10-17 21:41:17Z planetmaker $ */
4 * This file is part of OpenTTD.
5 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
10 /** @file object_land.h Sprites to use and how to display them for object tiles. */
12 #define TILE_SEQ_LINE(sz, img) { 0, 0, 0, 16, 16, sz, {img, PAL_NONE} },
13 #define TILE_SEQ_END() { (int8)0x80, 0, 0, 0, 0, 0, {0, 0} }
15 static const DrawTileSeqStruct _object_nothing
[] = {
19 static const DrawTileSeqStruct _object_transmitter_seq
[] = {
20 { 7, 7, 0, 2, 2, 70, {SPR_TRANSMITTER
, PAL_NONE
}},
24 static const DrawTileSeqStruct _object_lighthouse_seq
[] = {
25 { 4, 4, 0, 7, 7, 61, {SPR_LIGHTHOUSE
, PAL_NONE
}},
29 static const DrawTileSeqStruct _object_statue_seq
[] = {
30 { 0, 0, 0, 16, 16, 25, {SPR_STATUE_COMPANY
| (1 << PALETTE_MODIFIER_COLOUR
), PAL_NONE
}},
34 static const DrawTileSeqStruct _object_owned_land_seq
[] = {
35 { 8, 8, 0, 1, 1, 6, {SPR_BOUGHT_LAND
| (1 << PALETTE_MODIFIER_COLOUR
), PAL_NONE
}},
39 extern const DrawTileSprites _objects
[] = {
40 { { SPR_FLAT_2_THIRD_GRASS_TILE
, PAL_NONE
}, _object_transmitter_seq
},
41 { { SPR_FLAT_2_THIRD_GRASS_TILE
, PAL_NONE
}, _object_lighthouse_seq
},
42 { { SPR_CONCRETE_GROUND
, PAL_NONE
}, _object_statue_seq
},
43 { { SPR_FLAT_BARE_LAND
, PAL_NONE
}, _object_owned_land_seq
},
47 static const DrawTileSeqStruct _object_hq_medium_north
[] = {
48 TILE_SEQ_LINE(20, SPR_MEDIUMHQ_NORTH_WALL
| (1 << PALETTE_MODIFIER_COLOUR
))
52 static const DrawTileSeqStruct _object_hq_medium_east
[] = {
53 TILE_SEQ_LINE(20, SPR_MEDIUMHQ_EAST_WALL
| (1 << PALETTE_MODIFIER_COLOUR
))
57 static const DrawTileSeqStruct _object_hq_medium_west
[] = {
58 TILE_SEQ_LINE(20, SPR_MEDIUMHQ_WEST_WALL
| (1 << PALETTE_MODIFIER_COLOUR
))
62 static const DrawTileSeqStruct _object_hq_large_north
[] = {
63 TILE_SEQ_LINE(50, SPR_LARGEHQ_NORTH_BUILD
| (1 << PALETTE_MODIFIER_COLOUR
))
67 static const DrawTileSeqStruct _object_hq_large_east
[] = {
68 TILE_SEQ_LINE(50, SPR_LARGEHQ_EAST_BUILD
| (1 << PALETTE_MODIFIER_COLOUR
))
72 static const DrawTileSeqStruct _object_hq_large_west
[] = {
73 TILE_SEQ_LINE(50, SPR_LARGEHQ_WEST_BUILD
| (1 << PALETTE_MODIFIER_COLOUR
))
77 static const DrawTileSeqStruct _object_hq_huge_north
[] = {
78 TILE_SEQ_LINE(60, SPR_HUGEHQ_NORTH_BUILD
| (1 << PALETTE_MODIFIER_COLOUR
))
82 static const DrawTileSeqStruct _object_hq_huge_east
[] = {
83 TILE_SEQ_LINE(60, SPR_HUGEHQ_EAST_BUILD
| (1 << PALETTE_MODIFIER_COLOUR
))
87 static const DrawTileSeqStruct _object_hq_huge_west
[] = {
88 TILE_SEQ_LINE(60, SPR_HUGEHQ_WEST_BUILD
| (1 << PALETTE_MODIFIER_COLOUR
))
95 #define TILE_SPRITE_LINE(img, dtss) { {img | (1 << PALETTE_MODIFIER_COLOUR), PAL_NONE}, dtss },
97 static const DrawTileSprites _object_hq
[] = {
98 TILE_SPRITE_LINE(SPR_TINYHQ_NORTH
, _object_nothing
)
99 TILE_SPRITE_LINE(SPR_TINYHQ_WEST
, _object_nothing
)
100 TILE_SPRITE_LINE(SPR_TINYHQ_EAST
, _object_nothing
)
101 TILE_SPRITE_LINE(SPR_TINYHQ_SOUTH
, _object_nothing
)
103 TILE_SPRITE_LINE(SPR_SMALLHQ_NORTH
, _object_nothing
)
104 TILE_SPRITE_LINE(SPR_SMALLHQ_WEST
, _object_nothing
)
105 TILE_SPRITE_LINE(SPR_SMALLHQ_EAST
, _object_nothing
)
106 TILE_SPRITE_LINE(SPR_SMALLHQ_SOUTH
, _object_nothing
)
108 TILE_SPRITE_LINE(SPR_MEDIUMHQ_NORTH
, _object_hq_medium_north
)
109 TILE_SPRITE_LINE(SPR_MEDIUMHQ_WEST
, _object_hq_medium_west
)
110 TILE_SPRITE_LINE(SPR_MEDIUMHQ_EAST
, _object_hq_medium_east
)
111 TILE_SPRITE_LINE(SPR_MEDIUMHQ_SOUTH
, _object_nothing
)
113 TILE_SPRITE_LINE(SPR_LARGEHQ_NORTH_GROUND
, _object_hq_large_north
)
114 TILE_SPRITE_LINE(SPR_LARGEHQ_WEST_GROUND
, _object_hq_large_west
)
115 TILE_SPRITE_LINE(SPR_LARGEHQ_EAST_GROUND
, _object_hq_large_east
)
116 TILE_SPRITE_LINE(SPR_LARGEHQ_SOUTH
, _object_nothing
)
118 TILE_SPRITE_LINE(SPR_HUGEHQ_NORTH_GROUND
, _object_hq_huge_north
)
119 TILE_SPRITE_LINE(SPR_HUGEHQ_WEST_GROUND
, _object_hq_huge_west
)
120 TILE_SPRITE_LINE(SPR_HUGEHQ_EAST_GROUND
, _object_hq_huge_east
)
121 TILE_SPRITE_LINE(SPR_HUGEHQ_SOUTH
, _object_nothing
)
124 #undef TILE_SPRITE_LINE
126 #define M(name, size, build_cost_multiplier, clear_cost_multiplier, height, climate, gen_amount, flags) { GRFFilePropsBase<2>(), INVALID_OBJECT_CLASS, name, climate, size, build_cost_multiplier, clear_cost_multiplier, 0, MAX_DAY + 1, flags, {0, 0, 0, 0}, 0, height, 1, gen_amount, true }
137 /** Specification of the original object structures. */
138 extern const ObjectSpec _original_objects
[] = {
139 M(STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER
, 0x11, 0, 0, 10, T
|A
|S
, 15, OBJECT_FLAG_CANNOT_REMOVE
| OBJECT_FLAG_ONLY_IN_SCENEDIT
),
140 M(STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE
, 0x11, 0, 0, 8, T
|A
, 8, OBJECT_FLAG_CANNOT_REMOVE
| OBJECT_FLAG_ONLY_IN_SCENEDIT
| OBJECT_FLAG_SCALE_BY_WATER
),
141 M(STR_TOWN_BUILDING_NAME_STATUE_1
, 0x11, 0, 0, 5, T
|S
|A
|Y
, 0, OBJECT_FLAG_CANNOT_REMOVE
| OBJECT_FLAG_ONLY_IN_GAME
| OBJECT_FLAG_ONLY_IN_SCENEDIT
), // Yes, we disallow building this everywhere. Happens in "special" case!
142 M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND
, 0x11, 10, 10, 0, T
|S
|A
|Y
, 0, OBJECT_FLAG_AUTOREMOVE
| OBJECT_FLAG_ONLY_IN_GAME
| OBJECT_FLAG_CLEAR_INCOME
| OBJECT_FLAG_HAS_NO_FOUNDATION
), // Only non-silly use case is to use it when you cannot build a station, so disallow bridges
143 M(STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS
, 0x22, 0, 0, 7, T
|S
|A
|Y
, 0, OBJECT_FLAG_CANNOT_REMOVE
| OBJECT_FLAG_ONLY_IN_GAME
),