Simplifies map_window_get_pixel_colour_ride

- Splits uint32 into two uint16
- Reuse code for unowned land colour
This commit is contained in:
Joshua Moerman 2018-03-08 20:26:48 +01:00 committed by Aaron van Geffen
parent 887619a87e
commit e5d143b748
1 changed files with 19 additions and 22 deletions

View File

@ -1,4 +1,4 @@
#pragma region Copyright (c) 2014-2017 OpenRCT2 Developers #pragma region Copyright (c) 2014-2018 OpenRCT2 Developers
/***************************************************************************** /*****************************************************************************
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2. * OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
* *
@ -34,9 +34,9 @@
#include <openrct2-ui/interface/Widget.h> #include <openrct2-ui/interface/Widget.h>
#include <openrct2-ui/windows/Window.h> #include <openrct2-ui/windows/Window.h>
#define MAP_COLOUR_2(colourA, colourB) ((colourA << 8) | colourB) #define MAP_COLOUR_2(colourA, colourB) (((colourA) << 8) | (colourB))
#define MAP_COLOUR(colour) MAP_COLOUR_2(colour, colour) #define MAP_COLOUR(colour) MAP_COLOUR_2(colour, colour)
#define FALLBACK_COLOUR(colour) ((colour << 24) | colour << 16) #define MAP_COLOUR_UNOWNED(colour) (PALETTE_INDEX_10 | ((colour) & 0xFF00))
#define MAP_WINDOW_MAP_SIZE (MAXIMUM_MAP_SIZE_TECHNICAL * 2) #define MAP_WINDOW_MAP_SIZE (MAXIMUM_MAP_SIZE_TECHNICAL * 2)
@ -1582,7 +1582,7 @@ static uint16 map_window_get_pixel_colour_peep(sint32 x, sint32 y)
colour = WaterColour; colour = WaterColour;
if (!(tileElement->properties.surface.ownership & OWNERSHIP_OWNED)) if (!(tileElement->properties.surface.ownership & OWNERSHIP_OWNED))
colour = PALETTE_INDEX_10 | (colour & 0xFF00); colour = MAP_COLOUR_UNOWNED(colour);
const sint32 maxSupportedTileElementType = (sint32)Util::CountOf(ElementTypeAddColour); const sint32 maxSupportedTileElementType = (sint32)Util::CountOf(ElementTypeAddColour);
while (!tile_element_is_last_for_tile(tileElement++)) { while (!tile_element_is_last_for_tile(tileElement++)) {
@ -1599,26 +1599,23 @@ static uint16 map_window_get_pixel_colour_peep(sint32 x, sint32 y)
static uint16 map_window_get_pixel_colour_ride(sint32 x, sint32 y) static uint16 map_window_get_pixel_colour_ride(sint32 x, sint32 y)
{ {
rct_tile_element *tileElement;
Ride *ride; Ride *ride;
uint32 colour; uint16 colourA = 0; // highlight colour
uint16 colourB = MAP_COLOUR(PALETTE_INDEX_13); // surface colour (dark grey)
colour = FALLBACK_COLOUR(PALETTE_INDEX_13);
tileElement = map_get_surface_element_at(x >> 5, y >> 5); // as an improvement we could use first_element to show underground stuff?
rct_tile_element * tileElement = map_get_surface_element_at(x >> 5, y >> 5);
do { do {
switch (tile_element_get_type(tileElement)) { switch (tile_element_get_type(tileElement)) {
case TILE_ELEMENT_TYPE_SURFACE: case TILE_ELEMENT_TYPE_SURFACE:
if (map_get_water_height(tileElement) > 0) { if (map_get_water_height(tileElement) > 0)
colour &= 0xFFFF; // Why is this a different water colour as above (195)?
colour |= FALLBACK_COLOUR(PALETTE_INDEX_194); colourB = MAP_COLOUR(PALETTE_INDEX_194);
} if (!(tileElement->properties.surface.ownership & OWNERSHIP_OWNED))
if (!(tileElement->properties.surface.ownership & OWNERSHIP_OWNED)) { colourB = MAP_COLOUR_UNOWNED(colourB);
colour &= 0xFF00FFFF;
colour |= PALETTE_INDEX_10 << 16;
}
break; break;
case TILE_ELEMENT_TYPE_PATH: case TILE_ELEMENT_TYPE_PATH:
colour = MAP_COLOUR(PALETTE_INDEX_14); colourA = MAP_COLOUR(PALETTE_INDEX_14); // lighter grey
break; break;
case TILE_ELEMENT_TYPE_ENTRANCE: case TILE_ELEMENT_TYPE_ENTRANCE:
if (tileElement->properties.entrance.type == ENTRANCE_TYPE_PARK_ENTRANCE) if (tileElement->properties.entrance.type == ENTRANCE_TYPE_PARK_ENTRANCE)
@ -1626,15 +1623,15 @@ static uint16 map_window_get_pixel_colour_ride(sint32 x, sint32 y)
// fall-through // fall-through
case TILE_ELEMENT_TYPE_TRACK: case TILE_ELEMENT_TYPE_TRACK:
ride = get_ride(track_element_get_ride_index(tileElement)); ride = get_ride(track_element_get_ride_index(tileElement));
colour = RideKeyColours[RideColourKey[ride->type]]; colourA = RideKeyColours[RideColourKey[ride->type]];
break; break;
} }
} while (!tile_element_is_last_for_tile(tileElement++)); } while (!tile_element_is_last_for_tile(tileElement++));
if ((colour & 0xFFFF) == 0) if (colourA != 0)
colour >>= 16; return colourA;
return colour & 0xFFFF; return colourB;
} }
static void map_window_set_pixels(rct_window *w) static void map_window_set_pixels(rct_window *w)