mirror of https://github.com/OpenRCT2/OpenRCT2.git
refactor map and add get surface tile helper
This commit is contained in:
parent
e5c79f051c
commit
e9bccf07df
27
src/map.c
27
src/map.c
|
@ -54,6 +54,23 @@ void map_element_set_terrain_edge(rct_map_element *element, int terrain)
|
||||||
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)
|
||||||
|
{
|
||||||
|
// Get first element of the tile
|
||||||
|
rct_map_element *mapElement = TILE_MAP_ELEMENT_POINTER(y * 256 + x);
|
||||||
|
|
||||||
|
// Find the first surface element
|
||||||
|
while ((mapElement->type & MAP_ELEMENT_TYPE_MASK) != MAP_ELEMENT_TYPE_SURFACE) {
|
||||||
|
// Check if last element on tile
|
||||||
|
if (mapElement->flags & MAP_ELEMENT_FLAG_LAST_TILE)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
mapElement++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mapElement;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* rct2: 0x0068AB4C
|
* rct2: 0x0068AB4C
|
||||||
|
@ -136,16 +153,12 @@ int map_element_height(int x, int y)
|
||||||
if (x >= 8192 || y >= 8192)
|
if (x >= 8192 || y >= 8192)
|
||||||
return 16;
|
return 16;
|
||||||
|
|
||||||
// Find the tile the element is on
|
// Truncate subtile coordinates
|
||||||
int x_tile = x & 0xFFFFFFE0;
|
int x_tile = x & 0xFFFFFFE0;
|
||||||
int y_tile = y & 0xFFFFFFE0;
|
int y_tile = y & 0xFFFFFFE0;
|
||||||
|
|
||||||
i = ((y_tile * 256) + x_tile) / 32;
|
// Get the surface element for the tile
|
||||||
|
mapElement = map_get_surface_element_at(x_tile / 32, y_tile / 32);
|
||||||
mapElement = TILE_MAP_ELEMENT_POINTER(i);
|
|
||||||
while (mapElement->type & MAP_ELEMENT_TYPE_MASK) {
|
|
||||||
mapElement++;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32 height =
|
uint32 height =
|
||||||
((mapElement->properties.surface.terrain & MAP_ELEMENT_WATER_HEIGHT_MASK) << 20) |
|
((mapElement->properties.surface.terrain & MAP_ELEMENT_WATER_HEIGHT_MASK) << 20) |
|
||||||
|
|
Loading…
Reference in New Issue