1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #pragma once
11 
12 #include "../common.h"
13 #include "Map.h"
14 #include "Scenery.h"
15 
16 enum SMALL_SCENERY_FLAGS : uint32_t
17 {
18     SMALL_SCENERY_FLAG_FULL_TILE = (1 << 0),            // 0x1
19     SMALL_SCENERY_FLAG_VOFFSET_CENTRE = (1 << 1),       // 0x2
20     SMALL_SCENERY_FLAG_REQUIRE_FLAT_SURFACE = (1 << 2), // 0x4
21     SMALL_SCENERY_FLAG_ROTATABLE = (1 << 3),            // 0x8; when set, user can set rotation, otherwise rotation is automatic
22     SMALL_SCENERY_FLAG_ANIMATED = (1 << 4),             // 0x10
23     SMALL_SCENERY_FLAG_CAN_WITHER = (1 << 5),           // 0x20
24     SMALL_SCENERY_FLAG_CAN_BE_WATERED = (1 << 6),       // 0x40
25     SMALL_SCENERY_FLAG_ANIMATED_FG = (1 << 7),          // 0x80
26     SMALL_SCENERY_FLAG_DIAGONAL = (1 << 8),             // 0x100
27     SMALL_SCENERY_FLAG_HAS_GLASS = (1 << 9),            // 0x200
28     SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR = (1 << 10),  // 0x400
29     SMALL_SCENERY_FLAG_FOUNTAIN_SPRAY_1 = (1 << 11),    // 0x800
30     SMALL_SCENERY_FLAG_FOUNTAIN_SPRAY_4 = (1 << 12),    // 0x1000
31     SMALL_SCENERY_FLAG_IS_CLOCK = (1 << 13),            // 0x2000
32     SMALL_SCENERY_FLAG_SWAMP_GOO = (1 << 14),           // 0x4000
33     SMALL_SCENERY_FLAG_HAS_FRAME_OFFSETS = (1 << 15),   // 0x8000
34     SMALL_SCENERY_FLAG17 = (1 << 16),                   // 0x10000
35     SMALL_SCENERY_FLAG_STACKABLE = (1 << 17),           // 0x20000; means scenery item can be placed in the air and over water
36     SMALL_SCENERY_FLAG_NO_WALLS = (1 << 18),            // 0x40000
37     SMALL_SCENERY_FLAG_HAS_SECONDARY_COLOUR = (1 << 19), // 0x80000
38     SMALL_SCENERY_FLAG_NO_SUPPORTS = (1 << 20),          // 0x100000
39     SMALL_SCENERY_FLAG_VISIBLE_WHEN_ZOOMED = (1 << 21),  // 0x200000
40     SMALL_SCENERY_FLAG_COG = (1 << 22),                  // 0x400000
41     SMALL_SCENERY_FLAG_BUILD_DIRECTLY_ONTOP = (1 << 23), // 0x800000; means supports can be built on this object. Used for base
42                                                          // blocks.
43     SMALL_SCENERY_FLAG_HALF_SPACE = (1 << 24),           // 0x1000000
44     SMALL_SCENERY_FLAG_THREE_QUARTERS = (1 << 25),       // 0x2000000
45     SMALL_SCENERY_FLAG_PAINT_SUPPORTS = (1 << 26),       // 0x4000000; used for scenery items which are support structures
46     SMALL_SCENERY_FLAG27 = (1 << 27),                    // 0x8000000
47 
48     SMALL_SCENERY_FLAG_IS_TREE = (1 << 28), // Added by OpenRCT2
49 };
50 
51 enum
52 {
53     MAP_ELEM_SMALL_SCENERY_COLOUR_FLAG_NEEDS_SUPPORTS = (1 << 5),
54 };
55 
56 SmallSceneryEntry* get_small_scenery_entry(ObjectEntryIndex entryIndex);
57