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 "Location.hpp"
14 #include "Map.h"
15 
16 #include <vector>
17 
18 #pragma pack(push, 1)
19 struct rct_entrance_type
20 {
21     rct_string_id string_idx; // 0x00
22     uint32_t image_id;        // 0x02
23     uint8_t scrolling_mode;   // 0x06
24     uint8_t text_height;      // 0x07
25 };
26 assert_struct_size(rct_entrance_type, 8);
27 #pragma pack(pop)
28 
29 struct TileElement;
30 
31 enum
32 {
33     ENTRANCE_ELEMENT_FLAGS2_LEGACY_PATH_ENTRY = (1 << 0),
34 };
35 
36 constexpr const uint8_t ParkEntranceHeight = 12 * COORDS_Z_STEP;
37 constexpr const uint8_t RideEntranceHeight = 7 * COORDS_Z_STEP;
38 constexpr const uint8_t RideExitHeight = 5 * COORDS_Z_STEP;
39 
40 extern bool gParkEntranceGhostExists;
41 extern CoordsXYZD gParkEntranceGhostPosition;
42 
43 #define MAX_PARK_ENTRANCES 4
44 
45 constexpr int32_t MaxRideEntranceOrExitHeight = 244 * COORDS_Z_STEP;
46 
47 using ParkEntranceIndex = uint8_t;
48 constexpr const ParkEntranceIndex PARK_ENTRANCE_INDEX_NULL = 255;
49 
50 extern std::vector<CoordsXYZD> gParkEntrances;
51 
52 extern CoordsXYZD gRideEntranceExitGhostPosition;
53 extern StationIndex gRideEntranceExitGhostStationIndex;
54 
55 void park_entrance_remove_ghost();
56 money32 park_entrance_place_ghost(const CoordsXYZD& entranceLoc);
57 
58 void reset_park_entrance();
59 void maze_entrance_hedge_replacement(const CoordsXYE& entrance);
60 void maze_entrance_hedge_removal(const CoordsXYE& entrance);
61 
62 void fix_park_entrance_locations();
63