mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-24 07:14:31 +01:00
add and fix terrain get/set functions
This commit is contained in:
20
src/map.c
20
src/map.c
@@ -25,6 +25,22 @@
|
||||
|
||||
static void tiles_init();
|
||||
|
||||
int map_element_get_terrain(rct_map_element *element)
|
||||
{
|
||||
int terrain = (element->properties.surface.terrain >> 5) & 7;
|
||||
if (element->type & 1)
|
||||
terrain |= (1 << 3);
|
||||
return terrain;
|
||||
}
|
||||
|
||||
int map_element_get_terrain_edge(rct_map_element *element)
|
||||
{
|
||||
int terrain_edge = (element->properties.surface.slope >> 5) & 7;
|
||||
if (element->type & 128)
|
||||
terrain_edge |= (1 << 3);
|
||||
return terrain_edge;
|
||||
}
|
||||
|
||||
void map_element_set_terrain(rct_map_element *element, int terrain)
|
||||
{
|
||||
// Bit 3 for terrain is stored in element.type bit 0
|
||||
@@ -40,7 +56,7 @@ void map_element_set_terrain(rct_map_element *element, int terrain)
|
||||
|
||||
void map_element_set_terrain_edge(rct_map_element *element, int terrain)
|
||||
{
|
||||
// Bit 3 for terrain is stored in element.type bit 0
|
||||
// Bit 3 for terrain is stored in element.type bit 7
|
||||
if (terrain & 8)
|
||||
element->type |= 128;
|
||||
else
|
||||
@@ -48,7 +64,7 @@ void map_element_set_terrain_edge(rct_map_element *element, int terrain)
|
||||
|
||||
// Bits 0, 1, 2 for terrain are stored in element.slope bit 5, 6, 7
|
||||
element->properties.surface.slope &= ~0xE0;
|
||||
element->properties.surface.slope = (terrain & 7) << 5;
|
||||
element->properties.surface.slope |= (terrain & 7) << 5;
|
||||
}
|
||||
|
||||
rct_map_element *map_get_surface_element_at(int x, int y)
|
||||
|
||||
@@ -195,6 +195,10 @@ typedef struct {
|
||||
|
||||
void map_init();
|
||||
void map_update_tile_pointers();
|
||||
int map_element_get_terrain(rct_map_element *element);
|
||||
int map_element_get_terrain_edge(rct_map_element *element);
|
||||
void map_element_set_terrain(rct_map_element *element, int terrain);
|
||||
void map_element_set_terrain_edge(rct_map_element *element, int terrain);
|
||||
rct_map_element *map_get_surface_element_at(int x, int y);
|
||||
int map_element_height(int x, int y);
|
||||
void sub_68B089();
|
||||
|
||||
Reference in New Issue
Block a user