# tilehighlight_func.h File Reference

Functions related to tile highlights. More...

`#include "gfx_type.h"`
`#include "window_type.h"`
`#include "viewport_type.h"`
`#include "tilehighlight_type.h"`

Go to the source code of this file.

## Typedefs
typedef void | PlaceProc (TileIndex tile)
## Functions
void | PlaceProc_DemolishArea (TileIndex tile)
bool | GUIPlaceProcDragXY (ViewportDragDropSelectionProcess proc, TileIndex start_tile, TileIndex end_tile)
| A central place to handle all X_AND_Y dragged GUI functions.
bool | HandlePlacePushButton (Window *w, int widget, CursorID cursor, ViewportHighlightMode mode, PlaceProc *placeproc)
| This code is shared for the majority of the pushbuttons.
void | SetObjectToPlaceWnd (CursorID icon, SpriteID pal, ViewportHighlightMode mode, Window *w)
void | SetObjectToPlace (CursorID icon, SpriteID pal, ViewportHighlightMode mode, WindowClass window_class, WindowNumber window_num)
void | ResetObjectToPlace ()
void | VpSelectTilesWithMethod (int x, int y, ViewportPlaceMethod method)
| Selects tiles while dragging.
void | VpStartPlaceSizing (TileIndex tile, ViewportPlaceMethod method, ViewportDragDropSelectionProcess process)
| highlighting tiles while only going over them with the mouse
void | VpSetPresizeRange (TileIndex from, TileIndex to)
| Highlights all tiles between a set of two tiles.
void | VpSetPlaceSizingLimit (int limit)
void | UpdateTileSelection ()
| Updates tile highlighting for all cases.
## Variables
PlaceProc * | _place_proc
TileHighlightData | _thd

## Detailed Description

Functions related to tile highlights.

Definition in file tilehighlight_func.h.

## Function Documentation

bool GUIPlaceProcDragXY | ( | ViewportDragDropSelectionProcess | proc,
|  | TileIndex | start_tile,
|  | TileIndex | end_tile |
| ) |  |  |

A central place to handle all X_AND_Y dragged GUI functions.

Parameters:

  | e | WindowEvent variable holding in its higher bits (excluding the lower 4, since that defined the X_Y drag) the type of action to be performed

Returns:
  Returns true if the action was found and handled, and false otherwise. This allows for additional implements that are more local. For example X_Y drag of convertrail which belongs in rail_gui.cpp and not terraform_gui.cpp

Definition at line 113 of file terraform_gui.cpp.

References _settings_game, CMD_CLEAR_AREA, CMD_LEVEL_LAND, CMD_MSG, GameSettings::construction, DoCommandP(), ConstructionSettings::freeform_edges, GenerateDesertArea(), GenerateRockyArea(), MapMaxX(), MapMaxY(), TileDiffXY(), TileX(), and TileY().

Referenced by BuildRailToolbarWindow::OnPlaceMouseUp().

bool HandlePlacePushButton | ( | Window * | w,
|  | int | widget,
|  | CursorID | cursor,
|  | ViewportHighlightMode | mode,
|  | PlaceProc * | placeproc |
| ) |  |  |

This code is shared for the majority of the pushbuttons.

Handles e.g. the pressing of a button (to build things), playing of click sound and sets certain parameters

Parameters:

  | w | Window which called the function
  | widget | ID of the widget (=button) that called this function
  | cursor | How should the cursor image change? E.g. cursor with depot image in it
  | mode | Tile highlighting mode, e.g. drawing a rectangle or a dot on the ground
  | placeproc | Procedure which will be called when someone clicks on the map

Returns:
  true if the button is clicked, false if it's unclicked

Definition at line 90 of file main_gui.cpp.

References Window::IsWidgetDisabled(), Window::IsWidgetLowered(), Window::LowerWidget(), Window::SetDirty(), Window::window_class, and Window::window_number.

Referenced by BuildRailClick_AutoRail(), BuildRailClick_AutoSignals(), BuildRailClick_Bridge(), BuildRailClick_Convert(), BuildRailClick_Demolish(), BuildRailClick_Depot(), BuildRailClick_E(), BuildRailClick_N(), BuildRailClick_NE(), BuildRailClick_NW(), BuildRailClick_Station(), BuildRailClick_Tunnel(), BuildRailClick_Waypoint(), BuildRoadClick_AutoRoad(), BuildRoadClick_X_Dir(), BuildRoadClick_Y_Dir(), and EditorTerraformClick_Dynamite().

void UpdateTileSelection | ( |  | ) |

Updates tile highlighting for all cases.

Uses _thd.selstart and _thd.selend and _thd.place_mode (set elsewhere) to determine _thd.pos and _thd.size Also drawstyle is determined. Uses _thd.new.* as a buffer and calls SetSelectionTilesDirty() twice, Once for the old and once for the new selection. _thd is TileHighlightData, found in viewport.h

Definition at line 2138 of file viewport.cpp.

References GetAutorailHT(), SetSelectionTilesDirty(), Swap(), TILE_SIZE, VHM_NONE, VHM_POINT, VHM_RAIL, VHM_RECT, VHM_SPECIAL, Point::x, and Point::y.

Referenced by StationJoinerNeeded().

void VpSelectTilesWithMethod | ( | int | x,
|  | int | y,
|  | ViewportPlaceMethod | method |
| ) |  |  |

Selects tiles while dragging.

Parameters:

  | x | X coordinate of end of selection
  | y | Y coordinate of end of selection
  | method | modifies the way tiles are selected. Possible methods are VPM_* in viewport.h

Definition at line 2567 of file viewport.cpp.

References _settings_client, abs(), CalcHeightdiff(), CalcRaildirsDrawstyle(), Clamp(), Delta(), DistanceManhattan(), ClientSettings::gui, HT_DIR_X, HT_DIR_Y, HT_LINE, GUISettings::measure_tooltip, ShowMeasurementTooltips(), TILE_SIZE, TileX(), TileY(), VPM_FIX_X, VPM_FIX_Y, VPM_RAILDIRS, VPM_SIGNALDIRS, VPM_X_AND_Y, VPM_X_AND_Y_LIMITED, and VPM_X_OR_Y.

Referenced by BuildRailToolbarWindow::OnPlaceDrag().

void VpSetPresizeRange | ( | TileIndex | from,
|  | TileIndex | to |
| ) |  |  |

Highlights all tiles between a set of two tiles.

Used in dock and tunnel placement

Parameters:

  | from | TileIndex of the first tile to highlight
  | to | TileIndex of the last tile to highlight

Definition at line 2261 of file viewport.cpp.

References DistanceManhattan(), ShowMeasurementTooltips(), TILE_SIZE, TileX(), and TileY().

Referenced by BuildRailToolbarWindow::OnPlacePresize().