OpenTTD Source 20241224-master-gf74b0cf984
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.
 
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, WidgetID widget, CursorID cursor, HighLightStyle mode)
 This code is shared for the majority of the pushbuttons.
 
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.
 
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.
 
void ResetObjectToPlace ()
 Reset the cursor and mouse mode handling back to default (normal cursor, only clicking in windows).
 
void VpSelectTilesWithMethod (int x, int y, ViewportPlaceMethod method)
 Selects tiles while dragging.
 
void VpStartDragging (ViewportDragDropSelectionProcess process)
 Drag over the map while holding the left mouse down.
 
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

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 112 of file terraform_gui.cpp.

References _ctrl_pressed, _settings_game, GameSettings::construction, DDSP_CREATE_DESERT, DDSP_CREATE_ROCKS, DDSP_DEMOLISH_AREA, DDSP_LEVEL_AREA, DDSP_LOWER_AND_LEVEL_AREA, DDSP_RAISE_AND_LEVEL_AREA, ConstructionSettings::freeform_edges, GenerateDesertArea(), GenerateRockyArea(), LM_LEVEL, LM_LOWER, LM_RAISE, Map::MaxX(), Map::MaxY(), TileDiffXY(), TileX(), and TileY().

Referenced by BuildAirToolbarWindow::OnPlaceMouseUp(), BuildDocksToolbarWindow::OnPlaceMouseUp(), BuildRailToolbarWindow::OnPlaceMouseUp(), BuildRoadToolbarWindow::OnPlaceMouseUp(), TerraformToolbarWindow::OnPlaceMouseUp(), and ScenarioEditorLandscapeGenerationWindow::OnPlaceMouseUp().

◆ HandlePlacePushButton()

bool HandlePlacePushButton ( Window w,
WidgetID  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 63 of file main_gui.cpp.

References _settings_client, SoundSettings::click_beep, Window::IsWidgetDisabled(), Window::IsWidgetLowered(), Window::LowerWidget(), ResetObjectToPlace(), Window::SetDirty(), SetObjectToPlace(), SND_15_BEEP, ClientSettings::sound, Window::window_class, and Window::window_number.

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

◆ PlaceProc_DemolishArea()

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

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

Referenced by _GenerateWorld(), GenerateWorld(), HandlePlacePushButton(), ResetObjectToPlace(), SetObjectToPlaceWnd(), and BuildTreesWindow::UpdateMode().

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

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

Referenced by DepotWindow::DepotClick(), CompanyWindow::OnClick(), DepotWindow::OnClick(), VehicleGroupWindow::OnClick(), NewGRFWindow::OnClick(), OrdersWindow::OnClick(), RefitWindow::OnClick(), StoryBookWindow::OnPageElementClick(), and OrdersWindow::OrderClick_Goto().

◆ UpdateTileSelection()

void UpdateTileSelection ( )

◆ VpSelectTilesWithMethod()

◆ VpSetPlaceSizingLimit()

void VpSetPlaceSizingLimit ( int  limit)

Definition at line 2767 of file viewport.cpp.

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

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

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

◆ VpStartDragging()

◆ VpStartPlaceSizing()

Variable Documentation

◆ _thd

TileHighlightData _thd
extern

Definition at line 191 of file viewport.cpp.