Data Structures | Functions | Variables

terraform_gui.cpp File Reference

GUI related to terraforming the map. More...

#include "stdafx.h"
#include "clear_map.h"
#include "company_func.h"
#include "company_base.h"
#include "gui.h"
#include "window_gui.h"
#include "window_func.h"
#include "viewport_func.h"
#include "command_func.h"
#include "signs_func.h"
#include "sound_func.h"
#include "base_station_base.h"
#include "textbuf_gui.h"
#include "genworld.h"
#include "tree_map.h"
#include "landscape_type.h"
#include "tilehighlight_func.h"
#include "strings_func.h"
#include "newgrf_object.h"
#include "object.h"
#include "hotkeys.h"
#include "engine_base.h"
#include "terraform_gui.h"
#include "widgets/terraform_widget.h"
#include "table/strings.h"

Go to the source code of this file.

Data Structures

struct  TerraformToolbarWindow
 Terra form toolbar managing class. More...
struct  ScenarioEditorLandscapeGenerationWindow
 Landscape generation window handler in the scenario editor. More...

Functions

void CcTerraform (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
static void GenerateDesertArea (TileIndex end, TileIndex start)
 Scenario editor command that generates desert areas.
static void GenerateRockyArea (TileIndex end, TileIndex start)
 Scenario editor command that generates rocky areas.
bool GUIPlaceProcDragXY (ViewportDragDropSelectionProcess proc, TileIndex start_tile, TileIndex end_tile)
 A central place to handle all X_AND_Y dragged GUI functions.
void PlaceProc_DemolishArea (TileIndex tile)
 Start a drag for demolishing an area.
static EventState TerraformToolbarGlobalHotkeys (int hotkey)
 Handler for global hotkeys of the TerraformToolbarWindow.
WindowShowTerraformToolbar (Window *link)
 Show the toolbar for terraforming in the game.
static void CommonRaiseLowerBigLand (TileIndex tile, int mode)
 Raise/Lower a bigger chunk of land at the same time in the editor.
static void ResetLandscapeConfirmationCallback (Window *w, bool confirmed)
 Callback function for the scenario editor 'reset landscape' confirmation window.
static EventState TerraformToolbarEditorGlobalHotkeys (int hotkey)
 Handler for global hotkeys of the ScenarioEditorLandscapeGenerationWindow.
WindowShowEditorTerraformToolbar ()
 Show the toolbar for terraforming in the scenario editor.

Variables

static Hotkey terraform_hotkeys []
static const NWidgetPart _nested_terraform_widgets []
static WindowDesc _terraform_desc (WDP_MANUAL,"toolbar_landscape", 0, 0, WC_SCEN_LAND_GEN, WC_NONE, WDF_CONSTRUCTION, _nested_terraform_widgets, lengthof(_nested_terraform_widgets),&TerraformToolbarWindow::hotkeys)
static byte _terraform_size = 1
static const int8 _multi_terraform_coords [][2]
static const NWidgetPart _nested_scen_edit_land_gen_widgets []
static Hotkey terraform_editor_hotkeys []
static WindowDesc _scen_edit_land_gen_desc (WDP_AUTO,"toolbar_landscape_scen", 0, 0, WC_SCEN_LAND_GEN, WC_NONE, WDF_CONSTRUCTION, _nested_scen_edit_land_gen_widgets, lengthof(_nested_scen_edit_land_gen_widgets),&ScenarioEditorLandscapeGenerationWindow::hotkeys)

Detailed Description

GUI related to terraforming the map.

Definition in file terraform_gui.cpp.


Function Documentation

static void CommonRaiseLowerBigLand ( TileIndex  tile,
int  mode 
) [static]

Raise/Lower a bigger chunk of land at the same time in the editor.

When raising get the lowest point, when lowering the highest point, and set all tiles in the selection to that height.

Todo:
: Incorporate into game itself to allow for ingame raising/lowering of larger chunks at the same time OR remove altogether, as we have 'level land' ?
Parameters:
tile The top-left tile where the terraforming will start
mode 1 for raising, 0 for lowering land

Definition at line 398 of file terraform_gui.cpp.

References _settings_client, OrthogonalTileArea::ClampToMap(), CMD_MSG, CMD_TERRAFORM_LAND, SoundSettings::confirm, DoCommandP(), OrthogonalTileArea::h, max(), MAX_TILE_HEIGHT, min(), SLOPE_N, SND_1F_SPLAT_OTHER, ClientSettings::sound, TILE_AREA_LOOP, TileHeight(), and OrthogonalTileArea::w.

Referenced by ScenarioEditorLandscapeGenerationWindow::OnPlaceObject().

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

A central place to handle all X_AND_Y dragged GUI functions.

Parameters:
proc Procedure related to the dragging
start_tile Begin of the dragging
end_tile End 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 103 of file terraform_gui.cpp.

References _ctrl_pressed, _settings_game, CMD_CLEAR_AREA, CMD_LEVEL_LAND, CMD_MSG, GameSettings::construction, DDSP_CREATE_DESERT, DDSP_CREATE_ROCKS, DDSP_DEMOLISH_AREA, DDSP_LEVEL_AREA, DDSP_LOWER_AND_LEVEL_AREA, DDSP_RAISE_AND_LEVEL_AREA, DoCommandP(), ConstructionSettings::freeform_edges, GenerateDesertArea(), GenerateRockyArea(), LM_LEVEL, LM_LOWER, LM_RAISE, MapMaxX(), MapMaxY(), TileDiffXY(), TileX(), and TileY().

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

void PlaceProc_DemolishArea ( TileIndex  tile  ) 
static void ResetLandscapeConfirmationCallback ( Window w,
bool  confirmed 
) [static]
Window* ShowEditorTerraformToolbar (  ) 

Show the toolbar for terraforming in the scenario editor.

Returns:
The allocated toolbar.

Definition at line 757 of file terraform_gui.cpp.

Referenced by ScenarioEditorToolbarWindow::OnHotkey(), and TerraformToolbarEditorGlobalHotkeys().

Window* ShowTerraformToolbar ( Window link  ) 
static EventState TerraformToolbarEditorGlobalHotkeys ( int  hotkey  )  [static]

Handler for global hotkeys of the ScenarioEditorLandscapeGenerationWindow.

Parameters:
hotkey Hotkey
Returns:
ES_HANDLED if hotkey was accepted.

Definition at line 724 of file terraform_gui.cpp.

References Window::OnHotkey(), and ShowEditorTerraformToolbar().

static EventState TerraformToolbarGlobalHotkeys ( int  hotkey  )  [static]

Handler for global hotkeys of the TerraformToolbarWindow.

Parameters:
hotkey Hotkey
Returns:
ES_HANDLED if hotkey was accepted.

Definition at line 298 of file terraform_gui.cpp.

References Window::OnHotkey(), and ShowTerraformToolbar().


Variable Documentation

const int8 _multi_terraform_coords[][2] [static]
Initial value:
 {
  {  0, -2},
  {  4,  0}, { -4,  0}, {  0,  2},
  { -8,  2}, { -4,  4}, {  0,  6}, {  4,  4}, {  8,  2},
  {-12,  0}, { -8, -2}, { -4, -4}, {  0, -6}, {  4, -4}, {  8, -2}, { 12,  0},
  {-16,  2}, {-12,  4}, { -8,  6}, { -4,  8}, {  0, 10}, {  4,  8}, {  8,  6}, { 12,  4}, { 16,  2},
  {-20,  0}, {-16, -2}, {-12, -4}, { -8, -6}, { -4, -8}, {  0,-10}, {  4, -8}, {  8, -6}, { 12, -4}, { 16, -2}, { 20,  0},
  {-24,  2}, {-20,  4}, {-16,  6}, {-12,  8}, { -8, 10}, { -4, 12}, {  0, 14}, {  4, 12}, {  8, 10}, { 12,  8}, { 16,  6}, { 20,  4}, { 24,  2},
  {-28,  0}, {-24, -2}, {-20, -4}, {-16, -6}, {-12, -8}, { -8,-10}, { -4,-12}, {  0,-14}, {  4,-12}, {  8,-10}, { 12, -8}, { 16, -6}, { 20, -4}, { 24, -2}, { 28,  0},
}

Definition at line 437 of file terraform_gui.cpp.

const NWidgetPart _nested_terraform_widgets[] [static]
Initial value:
 {
  NWidget(NWID_HORIZONTAL),
    NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
    NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_LANDSCAPING_TOOLBAR, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
    NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN),
  EndContainer(),
  NWidget(NWID_HORIZONTAL),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_LOWER_LAND), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_TERRAFORM_DOWN, STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_RAISE_LAND), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_TERRAFORM_UP, STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_LEVEL_LAND), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_LEVEL_LAND, STR_LANDSCAPING_LEVEL_LAND_TOOLTIP),

    NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetMinimalSize(4, 22), EndContainer(),

    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_DEMOLISH), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_DYNAMITE, STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_BUY_LAND), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_BUY_LAND, STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND),
    NWidget(WWT_PUSHIMGBTN, COLOUR_DARK_GREEN, WID_TT_PLANT_TREES), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_PLANTTREES, STR_SCENEDIT_TOOLBAR_PLANT_TREES),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_PLACE_SIGN), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_SIGN, STR_SCENEDIT_TOOLBAR_PLACE_SIGN),
    NWidget(NWID_SELECTION, INVALID_COLOUR, WID_TT_SHOW_PLACE_OBJECT),
      NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_PLACE_OBJECT), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_TRANSMITTER, STR_SCENEDIT_TOOLBAR_PLACE_OBJECT),
    EndContainer(),
  EndContainer(),
}

Definition at line 319 of file terraform_gui.cpp.

Hotkey terraform_editor_hotkeys[] [static]
Initial value:
 {
  Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", WID_ETT_DEMOLISH),
  Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", WID_ETT_LOWER_LAND),
  Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", WID_ETT_RAISE_LAND),
  Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", WID_ETT_LEVEL_LAND),
  Hotkey('R', "rocky", WID_ETT_PLACE_ROCKS),
  Hotkey('T', "desert", WID_ETT_PLACE_DESERT),
  Hotkey('O', "object", WID_ETT_PLACE_OBJECT),
  HOTKEY_LIST_END
}

Definition at line 732 of file terraform_gui.cpp.

Hotkey terraform_hotkeys[] [static]
Initial value:
 {
  Hotkey('Q' | WKC_GLOBAL_HOTKEY, "lower", WID_TT_LOWER_LAND),
  Hotkey('W' | WKC_GLOBAL_HOTKEY, "raise", WID_TT_RAISE_LAND),
  Hotkey('E' | WKC_GLOBAL_HOTKEY, "level", WID_TT_LEVEL_LAND),
  Hotkey('D' | WKC_GLOBAL_HOTKEY, "dynamite", WID_TT_DEMOLISH),
  Hotkey('U', "buyland", WID_TT_BUY_LAND),
  Hotkey('I', "trees", WID_TT_PLANT_TREES),
  Hotkey('O', "placesign", WID_TT_PLACE_SIGN),
  Hotkey('P', "placeobject", WID_TT_PLACE_OBJECT),
  HOTKEY_LIST_END
}

Definition at line 306 of file terraform_gui.cpp.