Data Structures | Enumerations | 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 "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...

Enumerations

enum  TerraformToolbarWidgets {
  TTW_SHOW_PLACE_OBJECT, TTW_BUTTONS_START, TTW_LOWER_LAND = TTW_BUTTONS_START, TTW_RAISE_LAND,
  TTW_LEVEL_LAND, TTW_DEMOLISH, TTW_BUY_LAND, TTW_PLANT_TREES,
  TTW_PLACE_SIGN, TTW_PLACE_OBJECT
}
 

Enum referring to the widgets of the terraform toolbar.

More...
enum  EditorTerraformToolbarWidgets {
  ETTW_SHOW_PLACE_DESERT, ETTW_START, ETTW_DOTS = ETTW_START, ETTW_BUTTONS_START,
  ETTW_DEMOLISH = ETTW_BUTTONS_START, ETTW_LOWER_LAND, ETTW_RAISE_LAND, ETTW_LEVEL_LAND,
  ETTW_PLACE_ROCKS, ETTW_PLACE_DESERT, ETTW_PLACE_OBJECT, ETTW_BUTTONS_END,
  ETTW_INCREASE_SIZE = ETTW_BUTTONS_END, ETTW_DECREASE_SIZE, ETTW_NEW_SCENARIO, ETTW_RESET_LANDSCAPE
}
 

Enum referring to the widgets of the editor terraform toolbar.

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.
WindowShowTerraformToolbar (Window *link)
EventState TerraformToolbarGlobalHotkeys (uint16 key, uint16 keycode)
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.
WindowShowEditorTerraformToolbar ()
EventState TerraformToolbarEditorGlobalHotkeys (uint16 key, uint16 keycode)

Variables

Hotkey< TerraformToolbarWindow > * _terraform_hotkeys = TerraformToolbarWindow::terraform_hotkeys
static const NWidgetPart _nested_terraform_widgets []
static const WindowDesc _terraform_desc (WDP_MANUAL, 0, 0, WC_SCEN_LAND_GEN, WC_NONE, WDF_CONSTRUCTION, _nested_terraform_widgets, lengthof(_nested_terraform_widgets))
static byte _terraform_size = 1
static const int8 _multi_terraform_coords [][2]
static const NWidgetPart _nested_scen_edit_land_gen_widgets []
Hotkey
< ScenarioEditorLandscapeGenerationWindow > * 
_terraform_editor_hotkeys = ScenarioEditorLandscapeGenerationWindow::terraform_editor_hotkeys
static const WindowDesc _scen_edit_land_gen_desc (WDP_AUTO, 0, 0, WC_SCEN_LAND_GEN, WC_NONE, WDF_CONSTRUCTION, _nested_scen_edit_land_gen_widgets, lengthof(_nested_scen_edit_land_gen_widgets))

Detailed Description

GUI related to terraforming the map.

Definition in file terraform_gui.cpp.


Enumeration Type Documentation

Enum referring to the widgets of the editor terraform toolbar.

Enumerator:
ETTW_SHOW_PLACE_DESERT 

Should the place desert button be shown?

ETTW_START 

Used for iterations.

ETTW_DOTS 

Invisible widget for rendering the terraform size on.

ETTW_BUTTONS_START 

Start of pushable buttons.

ETTW_DEMOLISH 

Demolish aka dynamite button.

ETTW_LOWER_LAND 

Lower land button.

ETTW_RAISE_LAND 

Raise land button.

ETTW_LEVEL_LAND 

Level land button.

ETTW_PLACE_ROCKS 

Place rocks button.

ETTW_PLACE_DESERT 

Place desert button (in tropical climate).

ETTW_PLACE_OBJECT 

Place transmitter button.

ETTW_BUTTONS_END 

End of pushable buttons.

ETTW_INCREASE_SIZE 

Upwards arrow button to increase terraforming size.

ETTW_DECREASE_SIZE 

Downwards arrow button to decrease terraforming size.

ETTW_NEW_SCENARIO 

Button for generating a new scenario.

ETTW_RESET_LANDSCAPE 

Button for removing all company-owned property.

Definition at line 466 of file terraform_gui.cpp.

Enum referring to the widgets of the terraform toolbar.

Enumerator:
TTW_SHOW_PLACE_OBJECT 

Should the place object button be shown?

TTW_BUTTONS_START 

Start of pushable buttons.

TTW_LOWER_LAND 

Lower land button.

TTW_RAISE_LAND 

Raise land button.

TTW_LEVEL_LAND 

Level land button.

TTW_DEMOLISH 

Demolish aka dynamite button.

TTW_BUY_LAND 

Buy land button.

TTW_PLANT_TREES 

Plant trees button (note: opens seperate window, no place-push-button).

TTW_PLACE_SIGN 

Place sign button.

TTW_PLACE_OBJECT 

Place object button.

Definition at line 145 of 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 415 of file terraform_gui.cpp.

References TileArea::ClampToMap(), CMD_MSG, CMD_TERRAFORM_LAND, DoCommandP(), TileArea::h, max(), MAX_TILE_HEIGHT, min(), SLOPE_N, TILE_AREA_LOOP, TileHeight(), and TileArea::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 100 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]

Callback function for the scenario editor 'reset landscape' confirmation window.

Parameters:
w Window unused
confirmed boolean value, true when yes was clicked, false otherwise

Definition at line 539 of file terraform_gui.cpp.

References _generating_world, CMD_LANDSCAPE_CLEAR, DC_BANKRUPT, DC_EXEC, DoCommand(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_OWNER, IsBuoyTile(), BaseStation::IsInUse(), MarkWholeScreenDirty(), EngineOverrideManager::ResetToCurrentNewGRFConfig(), and BaseStation::xy.

Referenced by ScenarioEditorLandscapeGenerationWindow::OnClick().


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 454 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, TTW_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, TTW_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, TTW_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, TTW_DEMOLISH), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_DYNAMITE, STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, TTW_BUY_LAND), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_BUY_LAND, STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, TTW_PLANT_TREES), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_PLANTTREES, STR_SCENEDIT_TOOLBAR_PLANT_TREES),
    NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, TTW_PLACE_SIGN), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_SIGN, STR_SCENEDIT_TOOLBAR_PLACE_SIGN),
    NWidget(NWID_SELECTION, INVALID_COLOUR, TTW_SHOW_PLACE_OBJECT),
      NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, TTW_PLACE_OBJECT), SetMinimalSize(22, 22),
                SetFill(0, 1), SetDataTip(SPR_IMG_TRANSMITTER, STR_SCENEDIT_TOOLBAR_PLACE_OBJECT),
    EndContainer(),
  EndContainer(),
}

Definition at line 333 of file terraform_gui.cpp.