Debug: Use zoning dropdown for debug zoning modes

Control visibility using misc_debug 2, instead of controlling
debug modes themselves using misc_debug
This commit is contained in:
Jonathan G Rennison
2024-01-10 18:28:43 +00:00
parent a0475b16a0
commit 1914c11459
6 changed files with 79 additions and 41 deletions

View File

@@ -26,7 +26,6 @@
#include "zoning.h"
#include "viewport_func.h"
#include "road_map.h"
#include "debug_settings.h"
#include "animated_tile.h"
#include "3rdparty/cpp-btree/btree_set.h"
@@ -271,31 +270,6 @@ SpriteID TileZoneCheckTraceRestrictEvaluation(TileIndex tile, Owner owner)
if (IsTunnelBridgeWithSignalSimulation(tile) && IsTunnelBridgeRestrictedSignal(tile)) {
return SPR_ZONING_INNER_HIGHLIGHT_RED;
}
if (unlikely(HasBit(_misc_debug_flags, MDF_ZONING_RS_WATER_FLOOD_STATE)) && IsNonFloodingWaterTile(tile)) {
return SPR_ZONING_INNER_HIGHLIGHT_YELLOW;
}
if (unlikely(HasBit(_misc_debug_flags, MDF_ZONING_RS_TROPIC_ZONE))) {
switch (GetTropicZone(tile)) {
case TROPICZONE_DESERT:
return SPR_ZONING_INNER_HIGHLIGHT_YELLOW;
case TROPICZONE_RAINFOREST:
return SPR_ZONING_INNER_HIGHLIGHT_LIGHT_BLUE;
default:
break;
}
}
if (unlikely(HasBit(_misc_debug_flags, MDF_ZONING_RS_ANIMATED_TILE)) && _animated_tiles.find(tile) != _animated_tiles.end()) {
return SPR_ZONING_INNER_HIGHLIGHT_YELLOW;
}
if (unlikely(HasBit(_misc_debug_flags, MDF_ZONING_RS_WATER_REGION))) {
extern uint GetWaterRegionTileDebugColourIndex(TileIndex tile);
uint colour_index = GetWaterRegionTileDebugColourIndex(tile);
if (colour_index == 0) {
return ZONING_INVALID_SPRITE_ID;
} else {
return std::min<SpriteID>(SPR_ZONING_INNER_HIGHLIGHT_RED + colour_index - 1, SPR_ZONING_INNER_HIGHLIGHT_YELLOW);
}
}
return ZONING_INVALID_SPRITE_ID;
}
@@ -351,6 +325,45 @@ inline SpriteID TileZoneCheckOneWayRoadEvaluation(TileIndex tile)
}
}
inline SpriteID TileZoneDebugWaterFlood(TileIndex tile)
{
if (IsNonFloodingWaterTile(tile)) {
return SPR_ZONING_INNER_HIGHLIGHT_YELLOW;
}
return ZONING_INVALID_SPRITE_ID;
}
inline SpriteID TileZoneDebugWaterRegion(TileIndex tile)
{
extern uint GetWaterRegionTileDebugColourIndex(TileIndex tile);
uint colour_index = GetWaterRegionTileDebugColourIndex(tile);
if (colour_index == 0) {
return ZONING_INVALID_SPRITE_ID;
} else {
return std::min<SpriteID>(SPR_ZONING_INNER_HIGHLIGHT_RED + colour_index - 1, SPR_ZONING_INNER_HIGHLIGHT_YELLOW);
}
}
inline SpriteID TileZoneDebugTropicZone(TileIndex tile)
{
switch (GetTropicZone(tile)) {
case TROPICZONE_DESERT:
return SPR_ZONING_INNER_HIGHLIGHT_YELLOW;
case TROPICZONE_RAINFOREST:
return SPR_ZONING_INNER_HIGHLIGHT_LIGHT_BLUE;
default:
return ZONING_INVALID_SPRITE_ID;
}
}
inline SpriteID TileZoneDebugAnimatedTile(TileIndex tile)
{
if (_animated_tiles.find(tile) != _animated_tiles.end()) {
return SPR_ZONING_INNER_HIGHLIGHT_YELLOW;
}
return ZONING_INVALID_SPRITE_ID;
}
/**
* General evaluation function; calls all the other functions depending on
* evaluation mode.
@@ -376,7 +389,13 @@ SpriteID TileZoningSpriteEvaluation(TileIndex tile, Owner owner, ZoningEvaluatio
case ZEM_2x2_GRID: return TileZoneCheckRoadGridEvaluation(tile, 3);
case ZEM_3x3_GRID: return TileZoneCheckRoadGridEvaluation(tile, 4);
case ZEM_ONE_WAY_ROAD: return TileZoneCheckOneWayRoadEvaluation(tile);
default: return ZONING_INVALID_SPRITE_ID;
case ZEM_DBG_WATER_FLOOD: return TileZoneDebugWaterFlood(tile);
case ZEM_DBG_WATER_REGION: return TileZoneDebugWaterRegion(tile);
case ZEM_DBG_TROPIC_ZONE: return TileZoneDebugTropicZone(tile);
case ZEM_DBG_ANIMATED_TILE: return TileZoneDebugAnimatedTile(tile);
default: return ZONING_INVALID_SPRITE_ID;
}
}