terraform_gui.cpp File Reference

GUI related to terraforming the map. More...

#include "stdafx.h"
#include "openttd.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 "gfx_func.h"
#include "command_func.h"
#include "signs_func.h"
#include "variables.h"
#include "functions.h"
#include "sound_func.h"
#include "base_station_base.h"
#include "unmovable_map.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 "table/sprites.h"
#include "table/strings.h"

Go to the source code of this file.

Data Structures

struct  TerraformToolbarWindow
struct  ScenarioEditorLandscapeGenerationWindow

Typedefs

typedef void OnButtonClick (Window *w)

Enumerations

enum  TerraformToolbarWidgets {
  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
}
 Enum referring to the widgets of the terraform toolbar. More...
enum  EditorTerraformToolbarWidgets {
  ETTW_START = 0, 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_LIGHTHOUSE, ETTW_PLACE_TRANSMITTER, 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 (bool success, 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 CcPlaySound1E (bool success, TileIndex tile, uint32 p1, uint32 p2)
static void PlaceProc_BuyLand (TileIndex tile)
void PlaceProc_DemolishArea (TileIndex tile)
static void PlaceProc_RaiseLand (TileIndex tile)
static void PlaceProc_LowerLand (TileIndex tile)
static void PlaceProc_LevelLand (TileIndex tile)
static void TerraformClick_Lower (Window *w)
static void TerraformClick_Raise (Window *w)
static void TerraformClick_Level (Window *w)
static void TerraformClick_Dynamite (Window *w)
static void TerraformClick_BuyLand (Window *w)
static void TerraformClick_Trees (Window *w)
static void TerraformClick_PlaceSign (Window *w)
WindowShowTerraformToolbar (Window *link)
void ShowTerraformToolbarWithTool (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 PlaceProc_RaiseBigLand (TileIndex tile)
static void PlaceProc_LowerBigLand (TileIndex tile)
static void PlaceProc_RockyArea (TileIndex tile)
static void PlaceProc_LightHouse (TileIndex tile)
static void PlaceProc_Transmitter (TileIndex tile)
static void PlaceProc_DesertArea (TileIndex tile)
static void EditorTerraformClick_Dynamite (Window *w)
static void EditorTerraformClick_LowerBigLand (Window *w)
static void EditorTerraformClick_RaiseBigLand (Window *w)
static void EditorTerraformClick_LevelLand (Window *w)
static void EditorTerraformClick_RockyArea (Window *w)
static void EditorTerraformClick_DesertLightHouse (Window *w)
static void EditorTerraformClick_Transmitter (Window *w)
static void ResetLandscapeConfirmationCallback (Window *w, bool confirmed)
 Callback function for the scenario editor 'reset landscape' confirmation window.
WindowShowEditorTerraformToolbar ()
void ShowEditorTerraformToolbarWithTool (uint16 key, uint16 keycode)

Variables

static const uint16 _terraform_keycodes []
static OnButtonClick *const _terraform_button_proc []
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 []
static const uint16 _editor_terraform_keycodes []
static OnButtonClick *const _editor_terraform_button_proc []
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_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_LIGHTHOUSE  Place desert button (in tropical climate) / place lighthouse button (else).
ETTW_PLACE_TRANSMITTER  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 497 of file terraform_gui.cpp.

Enum referring to the widgets of the terraform toolbar.

Enumerator:
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.

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

References CMD_MSG, CMD_TERRAFORM_LAND, DoCommandP(), MapSizeX(), MapSizeY(), max(), min(), SLOPE_N, TILE_LOOP, TileHeight(), TileX(), and TileY().

static void EditorTerraformClick_Dynamite ( Window w  )  [static]

Todo:
Merge with terraform_gui.cpp (move there) after I have cooled down at its braindeadness and changed OnButtonClick to include the widget as well in the function declaration. Post 0.4.0 - Darkvater

Definition at line 566 of file terraform_gui.cpp.

References ANIMCURSOR_DEMOLISH, ETTW_DEMOLISH, HandlePlacePushButton(), and HT_RECT.

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 119 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().

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

References CMD_LANDSCAPE_CLEAR, DC_BANKRUPT, DC_EXEC, DoCommand(), INVALID_OWNER, BaseStation::IsInUse(), MarkWholeScreenDirty(), and BaseStation::xy.


Variable Documentation

OnButtonClick* const _editor_terraform_button_proc[] [static]

Initial value:

 {
  EditorTerraformClick_Dynamite,
  EditorTerraformClick_LowerBigLand,
  EditorTerraformClick_RaiseBigLand,
  EditorTerraformClick_LevelLand,
  EditorTerraformClick_RockyArea,
  EditorTerraformClick_DesertLightHouse,
  EditorTerraformClick_Transmitter
}

Definition at line 612 of file terraform_gui.cpp.

const uint16 _editor_terraform_keycodes[] [static]

Initial value:

 {
  'D',
  'Q',
  'W',
  'E',
  'R',
  'T',
  'Y'
}

Definition at line 601 of file terraform_gui.cpp.

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 485 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),
  EndContainer(),
}

Definition at line 320 of file terraform_gui.cpp.

OnButtonClick* const _terraform_button_proc[] [static]

Initial value:

 {
  TerraformClick_Lower,
  TerraformClick_Raise,
  TerraformClick_Level,
  TerraformClick_Dynamite,
  TerraformClick_BuyLand,
  TerraformClick_Trees,
  TerraformClick_PlaceSign,
}

Definition at line 241 of file terraform_gui.cpp.

const uint16 _terraform_keycodes[] [static]

Initial value:

 {
  'Q',
  'W',
  'E',
  'D',
  'U',
  'I',
  'O',
}

Definition at line 156 of file terraform_gui.cpp.


Generated on Wed Dec 30 20:40:20 2009 for OpenTTD by  doxygen 1.5.6