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 "TileElement.h" 14 15 enum 16 { 17 TERRAIN_GRASS, 18 TERRAIN_SAND, 19 TERRAIN_DIRT, 20 TERRAIN_ROCK, 21 TERRAIN_MARTIAN, 22 TERRAIN_CHECKERBOARD, 23 TERRAIN_GRASS_CLUMPS, 24 TERRAIN_ICE, 25 TERRAIN_GRID_RED, 26 TERRAIN_GRID_YELLOW, 27 TERRAIN_GRID_BLUE, 28 TERRAIN_GRID_GREEN, 29 TERRAIN_SAND_DARK, 30 TERRAIN_SAND_LIGHT, 31 32 TERRAIN_RCT2_COUNT, 33 34 TERRAIN_ROOF_BROWN = TERRAIN_RCT2_COUNT, 35 TERRAIN_ROOF_GREY, 36 TERRAIN_ROOF_IRON, 37 TERRAIN_ROOF_LOG, 38 TERRAIN_COUNT_REGULAR, // The amount of surface types the user can actually select - what follows are technical types 39 TERRAIN_CHECKERBOARD_INVERTED = TERRAIN_COUNT_REGULAR, 40 TERRAIN_UNDERGROUND_VIEW, 41 }; 42 43 enum 44 { 45 TERRAIN_EDGE_ROCK, 46 TERRAIN_EDGE_WOOD_RED, 47 TERRAIN_EDGE_WOOD_BLACK, 48 TERRAIN_EDGE_ICE, 49 50 TERRAIN_EDGE_RCT2_COUNT, 51 52 TERRAIN_EDGE_BRICK = TERRAIN_EDGE_RCT2_COUNT, 53 TERRAIN_EDGE_IRON, 54 TERRAIN_EDGE_GREY, 55 TERRAIN_EDGE_YELLOW, 56 TERRAIN_EDGE_RED, 57 TERRAIN_EDGE_PURPLE, 58 TERRAIN_EDGE_GREEN, 59 TERRAIN_EDGE_STONE_BROWN, 60 TERRAIN_EDGE_STONE_GREY, 61 TERRAIN_EDGE_SKYSCRAPER_A, 62 TERRAIN_EDGE_SKYSCRAPER_B, 63 64 TERRAIN_EDGE_COUNT 65 }; 66 67 enum 68 { 69 GRASS_LENGTH_MOWED, 70 GRASS_LENGTH_CLEAR_0, 71 GRASS_LENGTH_CLEAR_1, 72 GRASS_LENGTH_CLEAR_2, 73 GRASS_LENGTH_CLUMPS_0, 74 GRASS_LENGTH_CLUMPS_1, 75 GRASS_LENGTH_CLUMPS_2 76 }; 77 78 enum 79 { 80 OWNERSHIP_UNOWNED = 0, 81 OWNERSHIP_CONSTRUCTION_RIGHTS_OWNED = (1 << 4), 82 OWNERSHIP_OWNED = (1 << 5), 83 OWNERSHIP_CONSTRUCTION_RIGHTS_AVAILABLE = (1 << 6), 84 OWNERSHIP_AVAILABLE = (1 << 7) 85 }; 86 87 enum 88 { 89 TILE_ELEMENT_SLOPE_FLAT = 0x00, 90 TILE_ELEMENT_SLOPE_ALL_CORNERS_UP = 0x0F, 91 92 TILE_ELEMENT_SLOPE_N_CORNER_UP = (1 << 0), 93 TILE_ELEMENT_SLOPE_E_CORNER_UP = (1 << 1), 94 TILE_ELEMENT_SLOPE_S_CORNER_UP = (1 << 2), 95 TILE_ELEMENT_SLOPE_W_CORNER_UP = (1 << 3), 96 TILE_ELEMENT_SLOPE_DOUBLE_HEIGHT = (1 << 4), 97 98 TILE_ELEMENT_SLOPE_W_CORNER_DN = TILE_ELEMENT_SLOPE_ALL_CORNERS_UP & ~TILE_ELEMENT_SLOPE_W_CORNER_UP, 99 TILE_ELEMENT_SLOPE_S_CORNER_DN = TILE_ELEMENT_SLOPE_ALL_CORNERS_UP & ~TILE_ELEMENT_SLOPE_S_CORNER_UP, 100 TILE_ELEMENT_SLOPE_E_CORNER_DN = TILE_ELEMENT_SLOPE_ALL_CORNERS_UP & ~TILE_ELEMENT_SLOPE_E_CORNER_UP, 101 TILE_ELEMENT_SLOPE_N_CORNER_DN = TILE_ELEMENT_SLOPE_ALL_CORNERS_UP & ~TILE_ELEMENT_SLOPE_N_CORNER_UP, 102 103 TILE_ELEMENT_SLOPE_NE_SIDE_UP = TILE_ELEMENT_SLOPE_N_CORNER_UP | TILE_ELEMENT_SLOPE_E_CORNER_UP, 104 TILE_ELEMENT_SLOPE_SE_SIDE_UP = TILE_ELEMENT_SLOPE_E_CORNER_UP | TILE_ELEMENT_SLOPE_S_CORNER_UP, 105 TILE_ELEMENT_SLOPE_NW_SIDE_UP = TILE_ELEMENT_SLOPE_N_CORNER_UP | TILE_ELEMENT_SLOPE_W_CORNER_UP, 106 TILE_ELEMENT_SLOPE_SW_SIDE_UP = TILE_ELEMENT_SLOPE_S_CORNER_UP | TILE_ELEMENT_SLOPE_W_CORNER_UP, 107 108 TILE_ELEMENT_SLOPE_W_E_VALLEY = TILE_ELEMENT_SLOPE_E_CORNER_UP | TILE_ELEMENT_SLOPE_W_CORNER_UP, 109 TILE_ELEMENT_SLOPE_N_S_VALLEY = TILE_ELEMENT_SLOPE_N_CORNER_UP | TILE_ELEMENT_SLOPE_S_CORNER_UP 110 }; 111 112 // Surface 113 #define TILE_ELEMENT_SURFACE_DIAGONAL_FLAG 0x10 // in TileElement.properties.surface.slope 114 #define TILE_ELEMENT_SURFACE_RAISED_CORNERS_MASK 0x0F // in TileElement.properties.surface.slope 115 #define TILE_ELEMENT_SURFACE_SLOPE_MASK \ 116 (TILE_ELEMENT_SURFACE_DIAGONAL_FLAG | TILE_ELEMENT_SURFACE_RAISED_CORNERS_MASK) // in TileElement.properties.surface.slope 117 118 #define TILE_ELEMENT_SURFACE_OWNERSHIP_MASK 0xF0 119 #define TILE_ELEMENT_SURFACE_PARK_FENCE_MASK 0x0F 120