OpenTTD
Functions | Variables
tilehighlight_func.h File Reference

Functions related to tile highlights. More...

#include "gfx_type.h"
#include "tilehighlight_type.h"

Go to the source code of this file.

Functions

void PlaceProc_DemolishArea (TileIndex tile)
 Start a drag for demolishing an area. More...
 
bool GUIPlaceProcDragXY (ViewportDragDropSelectionProcess proc, TileIndex start_tile, TileIndex end_tile)
 A central place to handle all X_AND_Y dragged GUI functions. More...
 
bool HandlePlacePushButton (Window *w, int widget, CursorID cursor, HighLightStyle mode)
 This code is shared for the majority of the pushbuttons. More...
 
void SetObjectToPlaceWnd (CursorID icon, PaletteID pal, HighLightStyle mode, Window *w)
 Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc. More...
 
void SetObjectToPlace (CursorID icon, PaletteID pal, HighLightStyle mode, WindowClass window_class, WindowNumber window_num)
 Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc. More...
 
void ResetObjectToPlace ()
 Reset the cursor and mouse mode handling back to default (normal cursor, only clicking in windows). More...
 
void VpSelectTilesWithMethod (int x, int y, ViewportPlaceMethod method)
 Selects tiles while dragging. More...
 
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. More...
 
void VpSetPlaceSizingLimit (int limit)
 
void UpdateTileSelection ()
 Updates tile highlighting for all cases. More...
 

Variables

TileHighlightData _thd
 

Detailed Description

Functions related to tile highlights.

Definition in file tilehighlight_func.h.

Function Documentation

◆ GUIPlaceProcDragXY()

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

A central place to handle all X_AND_Y dragged GUI functions.

Parameters
procProcedure related to the dragging
start_tileBegin of the dragging
end_tileEnd of the dragging
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 108 of file terraform_gui.cpp.

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

Referenced by BuildAirToolbarWindow::OnPlaceMouseUp(), and BuildDocksToolbarWindow::OnPlaceMouseUp().

◆ HandlePlacePushButton()

bool HandlePlacePushButton ( Window w,
int  widget,
CursorID  cursor,
HighLightStyle  mode 
)

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
wWindow which called the function
widgetID of the widget (=button) that called this function
cursorHow should the cursor image change? E.g. cursor with depot image in it
modeTile highlighting mode, e.g. drawing a rectangle or a dot on the ground
Returns
true if the button is clicked, false if it's unclicked

Definition at line 103 of file main_gui.cpp.

References _settings_client, SoundSettings::click_beep, Window::IsWidgetDisabled(), and ClientSettings::sound.

Referenced by BuildAirToolbarWindow::OnClick(), BuildTreesWindow::OnClick(), BuildDocksToolbarWindow::OnClick(), TerraformToolbarWindow::OnClick(), BuildRailToolbarWindow::OnClick(), ScenarioEditorLandscapeGenerationWindow::OnClick(), and FoundTownWindow::OnClick().

◆ PlaceProc_DemolishArea()

void PlaceProc_DemolishArea ( TileIndex  tile)

◆ ResetObjectToPlace()

void ResetObjectToPlace ( )

◆ SetObjectToPlace()

void SetObjectToPlace ( CursorID  icon,
PaletteID  pal,
HighLightStyle  mode,
WindowClass  window_class,
WindowNumber  window_num 
)

Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc.

Parameters
iconNew shape of the mouse cursor.
palPalette to use.
modeMode to perform.
window_classWindow class of the window requesting the mode change.
window_numNumber of the window in its class requesting the mode change.

Definition at line 3166 of file viewport.cpp.

References _special_mouse_mode, TileHighlightData::drawstyle, TileHighlightData::GetCallbackWnd(), HT_DRAG, HT_DRAG_MASK, HT_NONE, HT_SPECIAL, TileHighlightData::make_square_red, Window::OnPlaceObjectAbort(), TileHighlightData::place_mode, SetSelectionTilesDirty(), SetTileSelectSize(), WC_INVALID, TileHighlightData::window_class, TileHighlightData::window_number, WSM_DRAGDROP, and WSM_NONE.

Referenced by ResetObjectToPlace(), and SetObjectToPlaceWnd().

◆ SetObjectToPlaceWnd()

void SetObjectToPlaceWnd ( CursorID  icon,
PaletteID  pal,
HighLightStyle  mode,
Window w 
)

Change the cursor and mouse click/drag handling to a mode for performing special operations like tile area selection, object placement, etc.

Parameters
iconNew shape of the mouse cursor.
palPalette to use.
modeMode to perform.
wWindow requesting the mode change.

Definition at line 3151 of file viewport.cpp.

References SetObjectToPlace(), Window::window_class, and Window::window_number.

Referenced by RefitWindow::OnClick(), CompanyWindow::OnClick(), and BuildObjectWindow::SelectOtherObject().

◆ UpdateTileSelection()

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 2355 of file viewport.cpp.

References HT_DRAG_MASK, HT_NONE, HT_SPECIAL, TileHighlightData::IsDraggingDiagonal(), TileHighlightData::new_pos, TileHighlightData::new_size, TileHighlightData::next_drawstyle, TileHighlightData::place_mode, TileHighlightData::selend, TileHighlightData::selstart, Swap(), TILE_SIZE, and TILE_UNIT_MASK.

Referenced by StationJoinerNeeded().

◆ VpSelectTilesWithMethod()

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

◆ VpSetPresizeRange()

void VpSetPresizeRange ( TileIndex  from,
TileIndex  to 
)

Highlights all tiles between a set of two tiles.

Used in dock and tunnel placement

Parameters
fromTileIndex of the first tile to highlight
toTileIndex of the last tile to highlight

Definition at line 2514 of file viewport.cpp.

References DistanceManhattan(), HT_RECT, TileHighlightData::next_drawstyle, TileHighlightData::selend, TileHighlightData::selstart, ShowMeasurementTooltips(), TILE_SIZE, TileX(), and TileY().

Referenced by BuildDocksToolbarWindow::OnPlacePresize(), and BuildRailToolbarWindow::OnPlacePresize().