src/terraform_gui.cpp
author rubidium
Fri, 04 Jul 2008 19:00:11 +0000
changeset 11118 f66e0a4ce878
parent 11071 91ac7664ad1e
child 11161 7d0fac8f14cd
permissions -rw-r--r--
(svn r13676) -Fix [FS#2126]: inactive companies from old (TTD) saves could be marked active in some cases, which then loads garbage in their statistics and such.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
10429
1b99254f9607 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 9286
diff changeset
     3
/** @file terraform_gui.cpp GUI related to terraforming the map. */
6918
5589c415e28f (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6432
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
92a3b0aa0946 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1780
diff changeset
     6
#include "openttd.h"
5573
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
     7
#include "bridge_map.h"
3144
426b825578f9 (svn r3763) Adapt to the new 'map accessors go in foo_map.h'-scheme
tron
parents: 3076
diff changeset
     8
#include "clear_map.h"
8750
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8732
diff changeset
     9
#include "player_func.h"
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8732
diff changeset
    10
#include "player_base.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    11
#include "gui.h"
8603
88c5ce6a5215 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8602
diff changeset
    12
#include "window_gui.h"
8720
4e60c30e2006 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8706
diff changeset
    13
#include "viewport_func.h"
4e60c30e2006 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8706
diff changeset
    14
#include "gfx_func.h"
8612
6414fc21c2f3 (svn r11677) -Codechange: move price and command related types/functions to their respective places.
rubidium
parents: 8604
diff changeset
    15
#include "command_func.h"
9286
d446bf9f4a68 (svn r12501) -Codechange: split signs.h.
rubidium
parents: 9282
diff changeset
    16
#include "signs_func.h"
2159
3b634157c3b2 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2154
diff changeset
    17
#include "variables.h"
8627
448ebf3a8291 (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h'
rubidium
parents: 8617
diff changeset
    18
#include "functions.h"
8653
a83f7a536919 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8640
diff changeset
    19
#include "sound_func.h"
9282
2bb9703aeb39 (svn r12490) -Codechange: rename engine.h to engine_func.h and remove unneeded inclusions of engine.h and/or replace them with engine_type.h.
rubidium
parents: 8968
diff changeset
    20
#include "station_base.h"
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
    21
#include "unmovable_map.h"
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
    22
#include "textbuf_gui.h"
8732
b18f578f7c16 (svn r11800) -Codechange: move some functions to a more logical location + some type safety.
rubidium
parents: 8720
diff changeset
    23
#include "genworld.h"
8766
c86cfa3a7580 (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8760
diff changeset
    24
#include "settings_type.h"
8955
8d6bb31af11b (svn r12029) -Feature: Allow trees on shore.
frosch
parents: 8946
diff changeset
    25
#include "tree_map.h"
10444
3876060cdef7 (svn r12986) -Codechange: move the landscape and transport related types from openttd.h to their own headers.
rubidium
parents: 10434
diff changeset
    26
#include "landscape_type.h"
10445
2dd7d9d0a957 (svn r12987) -Codechange: split viewport and tile selection.
rubidium
parents: 10444
diff changeset
    27
#include "tilehighlight_func.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    28
8760
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    29
#include "table/sprites.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    30
#include "table/strings.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    31
1977
4392ae3d8e31 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1919
diff changeset
    32
void CcTerraform(bool success, TileIndex tile, uint32 p1, uint32 p2)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    33
{
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    34
	if (success) {
541
e1cd34389f79 (svn r925) Use sound enums
tron
parents: 507
diff changeset
    35
		SndPlayTileFx(SND_1F_SPLAT, tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    36
	} else {
8706
e76561c3dd66 (svn r11773) -Codechange: move some non-clear-land functions from clear_cmd.cpp to a more correct location.
rubidium
parents: 8701
diff changeset
    37
		extern TileIndex _terraform_err_tile;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    38
		SetRedErrorSquare(_terraform_err_tile);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    39
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    40
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    41
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    43
/** Scenario editor command that generates desert areas */
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    44
static void GenerateDesertArea(TileIndex end, TileIndex start)
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    45
{
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    46
	int size_x, size_y;
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    47
	int sx = TileX(start);
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    48
	int sy = TileY(start);
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    49
	int ex = TileX(end);
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    50
	int ey = TileY(end);
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    51
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    52
	if (_game_mode != GM_EDITOR) return;
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    53
6432
8fb778a7f2d7 (svn r8841) -Fix
tron
parents: 6144
diff changeset
    54
	if (ex < sx) Swap(ex, sx);
8fb778a7f2d7 (svn r8841) -Fix
tron
parents: 6144
diff changeset
    55
	if (ey < sy) Swap(ey, sy);
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    56
	size_x = (ex - sx) + 1;
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    57
	size_y = (ey - sy) + 1;
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    58
1710
65510674894c (svn r2214) - Fix: Dragging the desert tool over half-desert turns it into full-desert; dragging the tool while pressing ctrl, will remove the desert area.
Darkvater
parents: 1632
diff changeset
    59
	_generating_world = true;
1981
de031d2aed47 (svn r2487) Replace TILE_XY by TileXY/TileDiffXY
tron
parents: 1977
diff changeset
    60
	BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
1710
65510674894c (svn r2214) - Fix: Dragging the desert tool over half-desert turns it into full-desert; dragging the tool while pressing ctrl, will remove the desert area.
Darkvater
parents: 1632
diff changeset
    61
		if (GetTileType(tile) != MP_WATER) {
8946
85eff1ad8cda (svn r12020) -Documentation: Correct description of TropicZone.
frosch
parents: 8940
diff changeset
    62
			SetTropicZone(tile, (_ctrl_pressed) ? TROPICZONE_NORMAL : TROPICZONE_DESERT);
1780
93fde4f32bfc (svn r2284) - Fix (regression): [ 1197177 ] Scenario editor: desert add/remove tool removes industries. Fixed a bit too agressive desert generator. It still does remove the industry (sand's a bitch on machinery), but at least it does it cleanly :)
Darkvater
parents: 1710
diff changeset
    63
			DoCommandP(tile, 0, 0, NULL, CMD_LANDSCAPE_CLEAR);
1710
65510674894c (svn r2214) - Fix: Dragging the desert tool over half-desert turns it into full-desert; dragging the tool while pressing ctrl, will remove the desert area.
Darkvater
parents: 1632
diff changeset
    64
			MarkTileDirtyByTile(tile);
65510674894c (svn r2214) - Fix: Dragging the desert tool over half-desert turns it into full-desert; dragging the tool while pressing ctrl, will remove the desert area.
Darkvater
parents: 1632
diff changeset
    65
		}
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    66
	} END_TILE_LOOP(tile, size_x, size_y, 0);
1710
65510674894c (svn r2214) - Fix: Dragging the desert tool over half-desert turns it into full-desert; dragging the tool while pressing ctrl, will remove the desert area.
Darkvater
parents: 1632
diff changeset
    67
	_generating_world = false;
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    68
}
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
    69
3017
915fae59d5e0 (svn r3597) Miscellaneous (I like that word) changes: Fix some indentation, add consts, reduce indentation level by short-circuit logic, convert if cascades to switch, whitespace, bracing, plus some minor stuff
tron
parents: 2955
diff changeset
    70
/** Scenario editor command that generates rocky areas */
2615
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    71
static void GenerateRockyArea(TileIndex end, TileIndex start)
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    72
{
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    73
	int size_x, size_y;
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    74
	bool success = false;
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    75
	int sx = TileX(start);
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    76
	int sy = TileY(start);
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    77
	int ex = TileX(end);
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    78
	int ey = TileY(end);
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    79
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    80
	if (_game_mode != GM_EDITOR) return;
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    81
6432
8fb778a7f2d7 (svn r8841) -Fix
tron
parents: 6144
diff changeset
    82
	if (ex < sx) Swap(ex, sx);
8fb778a7f2d7 (svn r8841) -Fix
tron
parents: 6144
diff changeset
    83
	if (ey < sy) Swap(ey, sy);
2615
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    84
	size_x = (ex - sx) + 1;
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    85
	size_y = (ey - sy) + 1;
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    86
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    87
	BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
5573
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    88
		switch (GetTileType(tile)) {
8955
8d6bb31af11b (svn r12029) -Feature: Allow trees on shore.
frosch
parents: 8946
diff changeset
    89
			case MP_TREES:
8d6bb31af11b (svn r12029) -Feature: Allow trees on shore.
frosch
parents: 8946
diff changeset
    90
				if (GetTreeGround(tile) == TREE_GROUND_SHORE) continue;
8d6bb31af11b (svn r12029) -Feature: Allow trees on shore.
frosch
parents: 8946
diff changeset
    91
			/* FALL THROUGH */
5573
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    92
			case MP_CLEAR:
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    93
				MakeClear(tile, CLEAR_ROCKS, 3);
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    94
				break;
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    95
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    96
			default: continue;
2615
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
    97
		}
5573
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    98
		MarkTileDirtyByTile(tile);
afa6f92a71fd (svn r7573) -Merged the bridge branch. Allows to build bridges of arbitrary rail/road combinations (including signals)
celestar
parents: 5072
diff changeset
    99
		success = true;
2615
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
   100
	} END_TILE_LOOP(tile, size_x, size_y, 0);
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
   101
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
   102
	if (success) SndPlayTileFx(SND_1F_SPLAT, end);
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
   103
}
4f6f464ba3eb (svn r3153) - Feature: [ 1276827 ] Drag and drop rocky areas in scenario editor (MeusH-ish)
Darkvater
parents: 2186
diff changeset
   104
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   105
/**
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   106
 * A central place to handle all X_AND_Y dragged GUI functions.
6918
5589c415e28f (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6432
diff changeset
   107
 * @param e WindowEvent variable holding in its higher bits (excluding the lower
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   108
 * 4, since that defined the X_Y drag) the type of action to be performed
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   109
 * @return Returns true if the action was found and handled, and false otherwise. This
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   110
 * allows for additional implements that are more local. For example X_Y drag
6918
5589c415e28f (svn r9558) -Documentation: doxygen and comment changes: 'T' now. Almost done
belugas
parents: 6432
diff changeset
   111
 * of convertrail which belongs in rail_gui.cpp and not terraform_gui.cpp
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   112
 **/
10616
ef4c5cd1b2b1 (svn r13160) -Codechange: prepare GUIPlaceProcDragXY for the removal of WindowEvent.
rubidium
parents: 10595
diff changeset
   113
bool GUIPlaceProcDragXY(ViewportDragDropSelectionProcess proc, TileIndex start_tile, TileIndex end_tile)
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   114
{
10616
ef4c5cd1b2b1 (svn r13160) -Codechange: prepare GUIPlaceProcDragXY for the removal of WindowEvent.
rubidium
parents: 10595
diff changeset
   115
	switch (proc) {
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   116
		case DDSP_DEMOLISH_AREA:
7165
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   117
			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   118
			break;
8692
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   119
		case DDSP_RAISE_AND_LEVEL_AREA:
8700
05e6ee04b2b6 (svn r11767) -Fix: do not call rail specific functions when building road bridge
smatz
parents: 8698
diff changeset
   120
			DoCommandP(end_tile, start_tile, 1, CcTerraform, CMD_LEVEL_LAND | CMD_MSG(STR_0808_CAN_T_RAISE_LAND_HERE));
8692
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   121
			break;
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   122
		case DDSP_LOWER_AND_LEVEL_AREA:
8698
3968b1da2966 (svn r11765) -Fix: compile warning (Roujin).
rubidium
parents: 8692
diff changeset
   123
			DoCommandP(end_tile, start_tile, (uint32)-1, CcTerraform, CMD_LEVEL_LAND | CMD_MSG(STR_0809_CAN_T_LOWER_LAND_HERE));
8692
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   124
			break;
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   125
		case DDSP_LEVEL_AREA:
8017
8c46e61c510f (svn r11040) -Fix [FS#1179]: removing CMD_AUTO from some commands could remotely trigger an assertion.
rubidium
parents: 7837
diff changeset
   126
			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_LEVEL_LAND);
7165
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   127
			break;
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   128
		case DDSP_CREATE_ROCKS:
7165
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   129
			GenerateRockyArea(end_tile, start_tile);
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   130
			break;
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   131
		case DDSP_CREATE_DESERT:
7165
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   132
			GenerateDesertArea(end_tile, start_tile);
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   133
			break;
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   134
		default:
37eb253f3c06 (svn r9900) -Codechange: Separate the variables for how to highlight a land area and what to do with it afterwards.
maedhros
parents: 7096
diff changeset
   135
			return false;
1632
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   136
	}
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   137
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   138
	return true;
c4ae19bfebf7 (svn r2136) - Fix: [ 1174313 ] terrain hotkeys nonfunctional in scenario editor (D,Q,W,E,R,T,Y,U fltr)
Darkvater
parents: 1363
diff changeset
   139
}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   140
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   141
typedef void OnButtonClick(Window *w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   142
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   143
static const uint16 _terraform_keycodes[] = {
606
0e507bb0f63a (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 545
diff changeset
   144
	'Q',
0e507bb0f63a (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 545
diff changeset
   145
	'W',
0e507bb0f63a (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 545
diff changeset
   146
	'E',
936
245a9f54ad42 (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D')
dominik
parents: 867
diff changeset
   147
	'D',
606
0e507bb0f63a (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 545
diff changeset
   148
	'U',
0e507bb0f63a (svn r1030) Some toolbar icons are arranged differently:
dominik
parents: 545
diff changeset
   149
	'I',
613
ce1bb8c92cc5 (svn r1037) Rearranged landscaping hotkeys a bit more.
dominik
parents: 608
diff changeset
   150
	'O',
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   151
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   152
10469
017f89d04372 (svn r13012) -Fix (r13011): the PlaceProc that was moved depended on another function...
rubidium
parents: 10468
diff changeset
   153
void CcPlaySound1E(bool success, TileIndex tile, uint32 p1, uint32 p2);
017f89d04372 (svn r13012) -Fix (r13011): the PlaceProc that was moved depended on another function...
rubidium
parents: 10468
diff changeset
   154
10468
baf373c51679 (svn r13011) -Codechange: move PlaceProc_BuyLand out of rail_gui.cpp to the place where it is used and remove some unneeded globalisations of some other PlaceProc functions.
rubidium
parents: 10462
diff changeset
   155
static void PlaceProc_BuyLand(TileIndex tile)
baf373c51679 (svn r13011) -Codechange: move PlaceProc_BuyLand out of rail_gui.cpp to the place where it is used and remove some unneeded globalisations of some other PlaceProc functions.
rubidium
parents: 10462
diff changeset
   156
{
baf373c51679 (svn r13011) -Codechange: move PlaceProc_BuyLand out of rail_gui.cpp to the place where it is used and remove some unneeded globalisations of some other PlaceProc functions.
rubidium
parents: 10462
diff changeset
   157
	DoCommandP(tile, 0, 0, CcPlaySound1E, CMD_PURCHASE_LAND_AREA | CMD_NO_WATER | CMD_MSG(STR_5806_CAN_T_PURCHASE_THIS_LAND));
baf373c51679 (svn r13011) -Codechange: move PlaceProc_BuyLand out of rail_gui.cpp to the place where it is used and remove some unneeded globalisations of some other PlaceProc functions.
rubidium
parents: 10462
diff changeset
   158
}
baf373c51679 (svn r13011) -Codechange: move PlaceProc_BuyLand out of rail_gui.cpp to the place where it is used and remove some unneeded globalisations of some other PlaceProc functions.
rubidium
parents: 10462
diff changeset
   159
1977
4392ae3d8e31 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1919
diff changeset
   160
void PlaceProc_DemolishArea(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   161
{
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   162
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   163
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   164
2817
58dcead3f545 (svn r3365) Staticise 36 functions
tron
parents: 2790
diff changeset
   165
static void PlaceProc_RaiseLand(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   166
{
8692
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   167
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_RAISE_AND_LEVEL_AREA);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   168
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   169
2817
58dcead3f545 (svn r3365) Staticise 36 functions
tron
parents: 2790
diff changeset
   170
static void PlaceProc_LowerLand(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   171
{
8692
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   172
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_LOWER_AND_LEVEL_AREA);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   173
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   174
10468
baf373c51679 (svn r13011) -Codechange: move PlaceProc_BuyLand out of rail_gui.cpp to the place where it is used and remove some unneeded globalisations of some other PlaceProc functions.
rubidium
parents: 10462
diff changeset
   175
static void PlaceProc_LevelLand(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   176
{
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   177
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_LEVEL_AREA);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   178
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   179
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   180
/** Enum referring to the widgets of the terraform toolbar */
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   181
enum TerraformToolbarWidgets {
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   182
	TTW_CLOSEBOX = 0,                     ///< Close window button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   183
	TTW_CAPTION,                          ///< Window caption
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   184
	TTW_STICKY,                           ///< Sticky window button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   185
	TTW_SEPERATOR,                        ///< Thin seperator line between level land button and demolish button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   186
	TTW_BUTTONS_START,                    ///< Start of pushable buttons
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   187
	TTW_LOWER_LAND = TTW_BUTTONS_START,   ///< Lower land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   188
	TTW_RAISE_LAND,                       ///< Raise land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   189
	TTW_LEVEL_LAND,                       ///< Level land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   190
	TTW_DEMOLISH,                         ///< Demolish aka dynamite button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   191
	TTW_BUY_LAND,                         ///< Buy land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   192
	TTW_PLANT_TREES,                      ///< Plant trees button (note: opens seperate window, no place-push-button)
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   193
	TTW_PLACE_SIGN,                       ///< Place sign button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   194
};
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   195
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   196
static void TerraformClick_Lower(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   197
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   198
	HandlePlacePushButton(w, TTW_LOWER_LAND, ANIMCURSOR_LOWERLAND, VHM_POINT, PlaceProc_LowerLand);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   199
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   200
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   201
static void TerraformClick_Raise(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   202
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   203
	HandlePlacePushButton(w, TTW_RAISE_LAND, ANIMCURSOR_RAISELAND, VHM_POINT, PlaceProc_RaiseLand);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   204
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   205
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   206
static void TerraformClick_Level(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   207
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   208
	HandlePlacePushButton(w, TTW_LEVEL_LAND, SPR_CURSOR_LEVEL_LAND, VHM_POINT, PlaceProc_LevelLand);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   209
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   210
936
245a9f54ad42 (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D')
dominik
parents: 867
diff changeset
   211
static void TerraformClick_Dynamite(Window *w)
245a9f54ad42 (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D')
dominik
parents: 867
diff changeset
   212
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   213
	HandlePlacePushButton(w, TTW_DEMOLISH, ANIMCURSOR_DEMOLISH , VHM_RECT, PlaceProc_DemolishArea);
936
245a9f54ad42 (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D')
dominik
parents: 867
diff changeset
   214
}
245a9f54ad42 (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D')
dominik
parents: 867
diff changeset
   215
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   216
static void TerraformClick_BuyLand(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   217
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   218
	HandlePlacePushButton(w, TTW_BUY_LAND, SPR_CURSOR_BUY_LAND, VHM_RECT, PlaceProc_BuyLand);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   219
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   220
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   221
static void TerraformClick_Trees(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   222
{
3817
a7baf79a424e (svn r4827) -Fix (FS#160) In the terraform toolbar, don't treat the plant tree button as place-push-button, because it isn't
celestar
parents: 3447
diff changeset
   223
	/* This button is NOT a place-push-button, so don't treat it as such */
a7baf79a424e (svn r4827) -Fix (FS#160) In the terraform toolbar, don't treat the plant tree button as place-push-button, because it isn't
celestar
parents: 3447
diff changeset
   224
	ShowBuildTreesToolbar();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   225
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   226
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   227
static void TerraformClick_PlaceSign(Window *w)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   228
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   229
	HandlePlacePushButton(w, TTW_PLACE_SIGN, SPR_CURSOR_SIGN, VHM_RECT, PlaceProc_Sign);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   230
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   231
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   232
static OnButtonClick * const _terraform_button_proc[] = {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   233
	TerraformClick_Lower,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   234
	TerraformClick_Raise,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   235
	TerraformClick_Level,
936
245a9f54ad42 (svn r1424) Add dynamite to landscaping toolbar (hotkey 'D')
dominik
parents: 867
diff changeset
   236
	TerraformClick_Dynamite,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   237
	TerraformClick_BuyLand,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   238
	TerraformClick_Trees,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   239
	TerraformClick_PlaceSign,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   240
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   241
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   242
struct TerraformToolbarWindow : Window {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   243
	TerraformToolbarWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   244
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   245
		this->FindWindowPlacementAndResize(desc);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   246
	}
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2615
diff changeset
   247
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   248
	~TerraformToolbarWindow()
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   249
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   250
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   251
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   252
	virtual void OnPaint()
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   253
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   254
		this->DrawWidgets();
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   255
	}
616
3ab1124303e0 (svn r1040) Fix: All character hotkeys are disabled now when a window for typing is open
dominik
parents: 613
diff changeset
   256
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   257
	virtual void OnClick(Point pt, int widget)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   258
	{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   259
		if (widget >= TTW_BUTTONS_START) _terraform_button_proc[widget - TTW_BUTTONS_START](this);
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   260
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   261
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   262
	virtual EventState OnKeyPress(uint16 key, uint16 keycode)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   263
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   264
		for (uint i = 0; i != lengthof(_terraform_keycodes); i++) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   265
			if (keycode == _terraform_keycodes[i]) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   266
				_terraform_button_proc[i](this);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   267
				return ES_HANDLED;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   268
			}
2639
8a7342eb3a78 (svn r3181) -Bracing
tron
parents: 2615
diff changeset
   269
		}
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   270
		return ES_NOT_HANDLED;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   271
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   272
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   273
	virtual void OnPlaceObject(Point pt, TileIndex tile)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   274
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   275
		_place_proc(tile);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   276
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   277
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   278
	virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   279
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   280
		VpSelectTilesWithMethod(pt.x, pt.y, select_method);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   281
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   282
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   283
	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   284
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   285
		if (pt.x != -1) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   286
			switch (select_proc) {
10616
ef4c5cd1b2b1 (svn r13160) -Codechange: prepare GUIPlaceProcDragXY for the removal of WindowEvent.
rubidium
parents: 10595
diff changeset
   287
				default: NOT_REACHED();
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   288
				case DDSP_DEMOLISH_AREA:
8692
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   289
				case DDSP_RAISE_AND_LEVEL_AREA:
5408c091b204 (svn r11759) -Feature: Add drag-n-drop support to the raise/lower land tools. Land is raised/lowered at the start and the rest of the area levelled to match. Patch by Roujin.
peter1138
parents: 8653
diff changeset
   290
				case DDSP_LOWER_AND_LEVEL_AREA:
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   291
				case DDSP_LEVEL_AREA:
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   292
					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
7166
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   293
					break;
3937d5ea59df (svn r9901) -Codechange: Decide what to do with selected land areas based on the specific variable, not how it was highlighted.
maedhros
parents: 7165
diff changeset
   294
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   295
		}
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   296
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   297
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   298
	virtual void OnPlaceObjectAbort()
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   299
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   300
		this->RaiseButtons();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   301
	}
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   302
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   303
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   304
static const Widget _terraform_widgets[] = {
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   305
{ WWT_CLOSEBOX,   RESIZE_NONE,     7,   0,  10,   0,  13, STR_00C5,                STR_018B_CLOSE_WINDOW},             // TTW_CLOSEBOX
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   306
{  WWT_CAPTION,   RESIZE_NONE,     7,  11, 145,   0,  13, STR_LANDSCAPING_TOOLBAR, STR_018C_WINDOW_TITLE_DRAG_THIS},   // TTW_CAPTION
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   307
{WWT_STICKYBOX,   RESIZE_NONE,     7, 146, 157,   0,  13, STR_NULL,                STR_STICKY_BUTTON},                 // TTW_STICKY
867
581154a08a78 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 756
diff changeset
   308
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   309
{    WWT_PANEL,   RESIZE_NONE,     7,  66,  69,  14,  35, 0x0,                    STR_NULL},                           // TTW_SEPERATOR
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   310
{   WWT_IMGBTN,   RESIZE_NONE,     7,   0,  21,  14,  35, SPR_IMG_TERRAFORM_DOWN,  STR_018E_LOWER_A_CORNER_OF_LAND},   // TTW_LOWER_LAND
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   311
{   WWT_IMGBTN,   RESIZE_NONE,     7,  22,  43,  14,  35, SPR_IMG_TERRAFORM_UP,    STR_018F_RAISE_A_CORNER_OF_LAND},   // TTW_RAISE_LAND
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   312
{   WWT_IMGBTN,   RESIZE_NONE,     7,  44,  65,  14,  35, SPR_IMG_LEVEL_LAND,      STR_LEVEL_LAND_TOOLTIP},            // TTW_LEVEL_LAND
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   313
{   WWT_IMGBTN,   RESIZE_NONE,     7,  70,  91,  14,  35, SPR_IMG_DYNAMITE,        STR_018D_DEMOLISH_BUILDINGS_ETC},   // TTW_DEMOLISH
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   314
{   WWT_IMGBTN,   RESIZE_NONE,     7,  92, 113,  14,  35, SPR_IMG_BUY_LAND,        STR_0329_PURCHASE_LAND_FOR_FUTURE}, // TTW_BUY_LAND
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   315
{   WWT_IMGBTN,   RESIZE_NONE,     7, 114, 135,  14,  35, SPR_IMG_PLANTTREES,      STR_0185_PLANT_TREES_PLACE_SIGNS},  // TTW_PLANT_TREES
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   316
{   WWT_IMGBTN,   RESIZE_NONE,     7, 136, 157,  14,  35, SPR_IMG_SIGN,            STR_0289_PLACE_SIGN},               // TTW_PLACE_SIGN
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   317
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 30
diff changeset
   318
{   WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   319
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   320
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   321
static const WindowDesc _terraform_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7818
diff changeset
   322
	WDP_ALIGN_TBR, 22 + 36, 158, 36, 158, 36,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6111
diff changeset
   323
	WC_SCEN_LAND_GEN, WC_NONE,
756
d1f1dc31b6f4 (svn r1212) -Feature: sticky windows all build-toolbars
darkvater
parents: 651
diff changeset
   324
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   325
	_terraform_widgets,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   326
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   327
6111
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   328
void ShowTerraformToolbar(Window *link)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   329
{
5005
21e84e53c732 (svn r7022) -Fix [FS#292]: Properly guard against viewing company-sensitive information from
Darkvater
parents: 4994
diff changeset
   330
	if (!IsValidPlayer(_current_player)) return;
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   331
	Window *w = AllocateWindowDescFront<TerraformToolbarWindow>(&_terraform_desc, 0);
6111
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   332
	if (w != NULL && link != NULL) {
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   333
		/* Align the terraform toolbar under the main toolbar and put the linked
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   334
		 * toolbar to left of it
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   335
		 */
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   336
		w->top = 22;
10712
386f0a25dbc6 (svn r13260) -Fix: linked terraform toolbar wasn't marked dirty after moving
smatz
parents: 10707
diff changeset
   337
		w->SetDirty();
6111
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   338
		link->left = w->left - link->width;
10434
d6accd017341 (svn r12976) -Codechange: use w->SetDirty() instead of SetWindowDirty(w) when it's certain that w != NULL.
rubidium
parents: 10429
diff changeset
   339
		link->SetDirty();
6111
32f6149dc192 (svn r8436) -Fix
tron
parents: 5835
diff changeset
   340
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   341
}
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   342
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   343
static byte _terraform_size = 1;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   344
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   345
/**
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   346
 * Raise/Lower a bigger chunk of land at the same time in the editor. When
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   347
 * raising get the lowest point, when lowering the highest point, and set all
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   348
 * tiles in the selection to that height.
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   349
 * @todo : Incorporate into game itself to allow for ingame raising/lowering of
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   350
 *         larger chunks at the same time OR remove altogether, as we have 'level land' ?
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   351
 * @param tile The top-left tile where the terraforming will start
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   352
 * @param mode 1 for raising, 0 for lowering land
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   353
 */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   354
static void CommonRaiseLowerBigLand(TileIndex tile, int mode)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   355
{
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   356
	int sizex, sizey;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   357
	uint h;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   358
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   359
	if (_terraform_size == 1) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   360
		StringID msg =
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   361
			mode ? STR_0808_CAN_T_RAISE_LAND_HERE : STR_0809_CAN_T_LOWER_LAND_HERE;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   362
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   363
		DoCommandP(tile, SLOPE_N, (uint32)mode, CcTerraform, CMD_TERRAFORM_LAND | CMD_MSG(msg));
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   364
	} else {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   365
		assert(_terraform_size != 0);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   366
		/* check out for map overflows */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   367
		sizex = min(MapSizeX() - TileX(tile) - 1, _terraform_size);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   368
		sizey = min(MapSizeY() - TileY(tile) - 1, _terraform_size);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   369
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   370
		if (sizex == 0 || sizey == 0) return;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   371
11067
df918e13ef3b (svn r13624) -Fix [FS#2106]: crash when one tries to raise the nothern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor.
rubidium
parents: 10959
diff changeset
   372
		SndPlayTileFx(SND_1F_SPLAT, tile);
df918e13ef3b (svn r13624) -Fix [FS#2106]: crash when one tries to raise the nothern corner of MP_VOID tiles (i.e. the southern corner of the tiles on the southern map edge) in the scenario editor.
rubidium
parents: 10959
diff changeset
   373
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   374
		if (mode != 0) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   375
			/* Raise land */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   376
			h = 15; // XXX - max height
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   377
			BEGIN_TILE_LOOP(tile2, sizex, sizey, tile) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   378
				h = min(h, TileHeight(tile2));
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   379
			} END_TILE_LOOP(tile2, sizex, sizey, tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   380
		} else {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   381
			/* Lower land */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   382
			h = 0;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   383
			BEGIN_TILE_LOOP(tile2, sizex, sizey, tile) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   384
				h = max(h, TileHeight(tile2));
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   385
			} END_TILE_LOOP(tile2, sizex, sizey, tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   386
		}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   387
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   388
		BEGIN_TILE_LOOP(tile2, sizex, sizey, tile) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   389
			if (TileHeight(tile2) == h) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   390
				DoCommandP(tile2, SLOPE_N, (uint32)mode, NULL, CMD_TERRAFORM_LAND);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   391
			}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   392
		} END_TILE_LOOP(tile2, sizex, sizey, tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   393
	}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   394
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   395
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   396
static void PlaceProc_RaiseBigLand(TileIndex tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   397
{
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   398
	CommonRaiseLowerBigLand(tile, 1);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   399
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   400
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   401
static void PlaceProc_LowerBigLand(TileIndex tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   402
{
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   403
	CommonRaiseLowerBigLand(tile, 0);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   404
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   405
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   406
static void PlaceProc_RockyArea(TileIndex tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   407
{
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   408
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_ROCKS);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   409
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   410
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   411
static void PlaceProc_LightHouse(TileIndex tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   412
{
8968
6acd7b197c81 (svn r12043) -Fix [FS#1736]: allow building transmitters and lighthouses on tree tiles
smatz
parents: 8955
diff changeset
   413
	/* not flat || not(trees || clear without bridge above) */
6acd7b197c81 (svn r12043) -Fix [FS#1736]: allow building transmitters and lighthouses on tree tiles
smatz
parents: 8955
diff changeset
   414
	if (GetTileSlope(tile, NULL) != SLOPE_FLAT || !(IsTileType(tile, MP_TREES) || (IsTileType(tile, MP_CLEAR) && !IsBridgeAbove(tile)))) {
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   415
		return;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   416
	}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   417
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   418
	MakeLighthouse(tile);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   419
	MarkTileDirtyByTile(tile);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   420
	SndPlayTileFx(SND_1F_SPLAT, tile);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   421
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   422
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   423
static void PlaceProc_Transmitter(TileIndex tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   424
{
8968
6acd7b197c81 (svn r12043) -Fix [FS#1736]: allow building transmitters and lighthouses on tree tiles
smatz
parents: 8955
diff changeset
   425
	/* not flat || not(trees || clear without bridge above) */
6acd7b197c81 (svn r12043) -Fix [FS#1736]: allow building transmitters and lighthouses on tree tiles
smatz
parents: 8955
diff changeset
   426
	if (GetTileSlope(tile, NULL) != SLOPE_FLAT || !(IsTileType(tile, MP_TREES) || (IsTileType(tile, MP_CLEAR) && !IsBridgeAbove(tile)))) {
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   427
		return;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   428
	}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   429
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   430
	MakeTransmitter(tile);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   431
	MarkTileDirtyByTile(tile);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   432
	SndPlayTileFx(SND_1F_SPLAT, tile);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   433
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   434
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   435
static void PlaceProc_DesertArea(TileIndex tile)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   436
{
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   437
	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_DESERT);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   438
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   439
8856
7f8b5c11bea6 (svn r11926) -Feature: Rivers. Graphics must be provided by NewGRF else rivers are drawn as canals. Rivers can currently only be placed with-in the scenario editor.
peter1138
parents: 8766
diff changeset
   440
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   441
static const Widget _scen_edit_land_gen_widgets[] = {
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   442
{  WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                  STR_018B_CLOSE_WINDOW},                   // ETTW_CLOSEBOX
11071
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   443
{   WWT_CAPTION,   RESIZE_NONE,     7,    11,   150,     0,    13, STR_0223_LAND_GENERATION,  STR_018C_WINDOW_TITLE_DRAG_THIS},         // ETTW_CAPTION
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   444
{ WWT_STICKYBOX,   RESIZE_NONE,     7,   151,   162,     0,    13, STR_NULL,                  STR_STICKY_BUTTON},                       // ETTW_STICKY
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   445
{     WWT_PANEL,   RESIZE_NONE,     7,     0,   162,    14,   102, 0x0,                       STR_NULL},                                // ETTW_BACKGROUND
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   446
{    WWT_IMGBTN,   RESIZE_NONE,    14,     2,    23,    16,    37, SPR_IMG_DYNAMITE,          STR_018D_DEMOLISH_BUILDINGS_ETC},         // ETTW_DEMOLISH
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   447
{    WWT_IMGBTN,   RESIZE_NONE,    14,    24,    45,    16,    37, SPR_IMG_TERRAFORM_DOWN,    STR_018E_LOWER_A_CORNER_OF_LAND},         // ETTW_LOWER_LAND
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   448
{    WWT_IMGBTN,   RESIZE_NONE,    14,    46,    67,    16,    37, SPR_IMG_TERRAFORM_UP,      STR_018F_RAISE_A_CORNER_OF_LAND},         // ETTW_RAISE_LAND
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   449
{    WWT_IMGBTN,   RESIZE_NONE,    14,    68,    89,    16,    37, SPR_IMG_LEVEL_LAND,        STR_LEVEL_LAND_TOOLTIP},                  // ETTW_LEVEL_LAND
11071
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   450
{    WWT_IMGBTN,   RESIZE_NONE,    14,   90,    111,    16,    37, SPR_IMG_ROCKS,             STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE}, // ETTW_PLACE_ROCKS
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   451
{    WWT_IMGBTN,   RESIZE_NONE,    14,   112,   133,    16,    37, SPR_IMG_LIGHTHOUSE_DESERT, STR_NULL},                                // ETTW_PLACE_DESERT_LIGHTHOUSE XXX - dynamic
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   452
{    WWT_IMGBTN,   RESIZE_NONE,    14,   134,   156,    16,    37, SPR_IMG_TRANSMITTER,       STR_028E_PLACE_TRANSMITTER},              // ETTW_PLACE_TRANSMITTER
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   453
{    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    45,    56, SPR_ARROW_UP,              STR_0228_INCREASE_SIZE_OF_LAND_AREA},     // ETTW_INCREASE_SIZE
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   454
{    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    58,    69, SPR_ARROW_DOWN,            STR_0229_DECREASE_SIZE_OF_LAND_AREA},     // ETTW_DECREASE_SIZE
11071
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   455
{   WWT_TEXTBTN,   RESIZE_NONE,    14,    2,    161,    76,    87, STR_SE_NEW_WORLD,          STR_022A_GENERATE_RANDOM_LAND},           // ETTW_NEW_SCENARIO
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   456
{   WWT_TEXTBTN,   RESIZE_NONE,    14,    2,    161,    89,   100, STR_022B_RESET_LANDSCAPE,  STR_RESET_LANDSCAPE_TOOLTIP},             // ETTW_RESET_LANDSCAPE
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   457
{   WIDGETS_END},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   458
};
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   459
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   460
static const int8 _multi_terraform_coords[][2] = {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   461
	{  0, -2},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   462
	{  4,  0}, { -4,  0}, {  0,  2},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   463
	{ -8,  2}, { -4,  4}, {  0,  6}, {  4,  4}, {  8,  2},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   464
	{-12,  0}, { -8, -2}, { -4, -4}, {  0, -6}, {  4, -4}, {  8, -2}, { 12,  0},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   465
	{-16,  2}, {-12,  4}, { -8,  6}, { -4,  8}, {  0, 10}, {  4,  8}, {  8,  6}, { 12,  4}, { 16,  2},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   466
	{-20,  0}, {-16, -2}, {-12, -4}, { -8, -6}, { -4, -8}, {  0,-10}, {  4, -8}, {  8, -6}, { 12, -4}, { 16, -2}, { 20,  0},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   467
	{-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},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   468
	{-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},
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   469
};
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   470
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   471
/** Enum referring to the widgets of the editor terraform toolbar */
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   472
enum EditorTerraformToolbarWidgets {
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   473
	ETTW_START = 0,                        ///< Used for iterations
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   474
	ETTW_CLOSEBOX = ETTW_START,            ///< Close window button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   475
	ETTW_CAPTION,                          ///< Window caption
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   476
	ETTW_STICKY,                           ///< Sticky window button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   477
	ETTW_BACKGROUND,                       ///< Background of the lower part of the window
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   478
	ETTW_BUTTONS_START,                    ///< Start of pushable buttons
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   479
	ETTW_DEMOLISH = ETTW_BUTTONS_START,    ///< Demolish aka dynamite button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   480
	ETTW_LOWER_LAND,                       ///< Lower land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   481
	ETTW_RAISE_LAND,                       ///< Raise land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   482
	ETTW_LEVEL_LAND,                       ///< Level land button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   483
	ETTW_PLACE_ROCKS,                      ///< Place rocks button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   484
	ETTW_PLACE_DESERT_LIGHTHOUSE,          ///< Place desert button (in tropical climate) / place lighthouse button (else)
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   485
	ETTW_PLACE_TRANSMITTER,                ///< Place transmitter button
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   486
	ETTW_BUTTONS_END,                      ///< End of pushable buttons
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   487
	ETTW_INCREASE_SIZE = ETTW_BUTTONS_END, ///< Upwards arrow button to increase terraforming size
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   488
	ETTW_DECREASE_SIZE,                    ///< Downwards arrow button to decrease terraforming size
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   489
	ETTW_NEW_SCENARIO,                     ///< Button for generating a new scenario
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   490
	ETTW_RESET_LANDSCAPE,                  ///< Button for removing all player-owned property
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   491
};
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   492
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   493
/**
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   494
 * @todo Merge with terraform_gui.cpp (move there) after I have cooled down at its braindeadness
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   495
 * and changed OnButtonClick to include the widget as well in the function declaration. Post 0.4.0 - Darkvater
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   496
 */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   497
static void EditorTerraformClick_Dynamite(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   498
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   499
	HandlePlacePushButton(w, ETTW_DEMOLISH, ANIMCURSOR_DEMOLISH, VHM_RECT, PlaceProc_DemolishArea);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   500
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   501
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   502
static void EditorTerraformClick_LowerBigLand(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   503
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   504
	HandlePlacePushButton(w, ETTW_LOWER_LAND, ANIMCURSOR_LOWERLAND, VHM_POINT, PlaceProc_LowerBigLand);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   505
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   506
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   507
static void EditorTerraformClick_RaiseBigLand(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   508
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   509
	HandlePlacePushButton(w, ETTW_RAISE_LAND, ANIMCURSOR_RAISELAND, VHM_POINT, PlaceProc_RaiseBigLand);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   510
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   511
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   512
static void EditorTerraformClick_LevelLand(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   513
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   514
	HandlePlacePushButton(w, ETTW_LEVEL_LAND, SPR_CURSOR_LEVEL_LAND, VHM_POINT, PlaceProc_LevelLand);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   515
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   516
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   517
static void EditorTerraformClick_RockyArea(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   518
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   519
	HandlePlacePushButton(w, ETTW_PLACE_ROCKS, SPR_CURSOR_ROCKY_AREA, VHM_RECT, PlaceProc_RockyArea);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   520
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   521
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   522
static void EditorTerraformClick_DesertLightHouse(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   523
{
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10712
diff changeset
   524
	HandlePlacePushButton(w, ETTW_PLACE_DESERT_LIGHTHOUSE, SPR_CURSOR_LIGHTHOUSE, VHM_RECT, (_settings_game.game_creation.landscape == LT_TROPIC) ? PlaceProc_DesertArea : PlaceProc_LightHouse);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   525
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   526
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   527
static void EditorTerraformClick_Transmitter(Window *w)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   528
{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   529
	HandlePlacePushButton(w, ETTW_PLACE_TRANSMITTER, SPR_CURSOR_TRANSMITTER, VHM_RECT, PlaceProc_Transmitter);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   530
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   531
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   532
static const uint16 _editor_terraform_keycodes[] = {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   533
	'D',
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   534
	'Q',
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   535
	'W',
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   536
	'E',
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   537
	'R',
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   538
	'T',
11071
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   539
	'Y'
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   540
};
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   541
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   542
typedef void OnButtonClick(Window *w);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   543
static OnButtonClick * const _editor_terraform_button_proc[] = {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   544
	EditorTerraformClick_Dynamite,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   545
	EditorTerraformClick_LowerBigLand,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   546
	EditorTerraformClick_RaiseBigLand,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   547
	EditorTerraformClick_LevelLand,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   548
	EditorTerraformClick_RockyArea,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   549
	EditorTerraformClick_DesertLightHouse,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   550
	EditorTerraformClick_Transmitter
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   551
};
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   552
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   553
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   554
/** Callback function for the scenario editor 'reset landscape' confirmation window
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   555
 * @param w Window unused
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   556
 * @param confirmed boolean value, true when yes was clicked, false otherwise */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   557
static void ResetLandscapeConfirmationCallback(Window *w, bool confirmed)
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   558
{
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   559
	if (confirmed) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   560
		Player *p;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   561
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   562
		/* Set generating_world to true to get instant-green grass after removing
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   563
		 * player property. */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   564
		_generating_world = true;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   565
		/* Delete all players */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   566
		FOR_ALL_PLAYERS(p) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   567
			if (p->is_active) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   568
				ChangeOwnershipOfPlayerItems(p->index, PLAYER_SPECTATOR);
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   569
				p->is_active = false;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   570
			}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   571
		}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   572
		_generating_world = false;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   573
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   574
		/* Delete all stations owned by a player */
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   575
		Station *st;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   576
		FOR_ALL_STATIONS(st) {
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   577
			if (IsValidPlayer(st->owner)) delete st;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   578
		}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   579
	}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   580
}
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   581
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   582
struct ScenarioEditorLandscapeGenerationWindow : Window {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   583
	ScenarioEditorLandscapeGenerationWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   584
	{
10775
7061477bfbcf (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 10712
diff changeset
   585
		this->widget[ETTW_PLACE_DESERT_LIGHTHOUSE].tooltips = (_settings_game.game_creation.landscape == LT_TROPIC) ? STR_028F_DEFINE_DESERT_AREA : STR_028D_PLACE_LIGHTHOUSE;
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   586
		this->FindWindowPlacementAndResize(desc);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   587
	}
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   588
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   589
	virtual void OnPaint() {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   590
		this->DrawWidgets();
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   591
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   592
		int n = _terraform_size * _terraform_size;
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   593
		const int8 *coords = &_multi_terraform_coords[0][0];
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   594
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   595
		assert(n != 0);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   596
		do {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   597
			DrawSprite(SPR_WHITE_POINT, PAL_NONE, 88 + coords[0], 55 + coords[1]);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   598
			coords += 2;
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   599
		} while (--n);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   600
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   601
		if (this->IsWidgetLowered(ETTW_LOWER_LAND) || this->IsWidgetLowered(ETTW_RAISE_LAND)) { // change area-size if raise/lower corner is selected
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   602
			SetTileSelectSize(_terraform_size, _terraform_size);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   603
		}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   604
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   605
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   606
	virtual EventState OnKeyPress(uint16 key, uint16 keycode)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   607
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   608
		for (uint i = 0; i != lengthof(_editor_terraform_keycodes); i++) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   609
			if (keycode == _editor_terraform_keycodes[i]) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   610
				_editor_terraform_button_proc[i](this);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   611
				return ES_HANDLED;
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   612
			}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   613
		}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   614
		return ES_NOT_HANDLED;
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   615
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   616
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   617
	virtual void OnClick(Point pt, int widget)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   618
	{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   619
		if (IsInsideMM(widget, ETTW_BUTTONS_START, ETTW_BUTTONS_END)) {
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   620
			_editor_terraform_button_proc[widget - ETTW_BUTTONS_START](this);
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   621
		} else {
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   622
			switch (widget) {
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   623
				case ETTW_INCREASE_SIZE:
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   624
				case ETTW_DECREASE_SIZE: { // Increase/Decrease terraform size
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   625
					int size = (widget == ETTW_INCREASE_SIZE) ? 1 : -1;
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   626
					this->HandleButtonClick(widget);
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   627
					size += _terraform_size;
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   628
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   629
					if (!IsInsideMM(size, 1, 8 + 1)) return;
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   630
					_terraform_size = size;
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   631
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   632
					SndPlayFx(SND_15_BEEP);
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   633
					this->SetDirty();
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   634
				} break;
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   635
				case ETTW_NEW_SCENARIO: // gen random land
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   636
					this->HandleButtonClick(widget);
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   637
					ShowCreateScenario();
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   638
					break;
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   639
				case ETTW_RESET_LANDSCAPE: // Reset landscape
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   640
					ShowQuery(
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   641
						STR_022C_RESET_LANDSCAPE,
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   642
						STR_RESET_LANDSCAPE_CONFIRMATION_TEXT,
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   643
						NULL,
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   644
						ResetLandscapeConfirmationCallback);
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   645
					break;
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   646
			}
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   647
		}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   648
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   649
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   650
	virtual void OnTimeout()
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   651
	{
10672
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   652
		for (uint i = ETTW_START; i < this->widget_count; i++) {
6bf5b967d84c (svn r13216) -Codechange [FS#2026]: enumify and comment Editor Terraform Toolbar widgets (Roujin)
smatz
parents: 10641
diff changeset
   653
			if (i == ETTW_BUTTONS_START) i = ETTW_BUTTONS_END; // skip the buttons
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   654
			if (this->IsWidgetLowered(i)) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   655
				this->RaiseWidget(i);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   656
				this->InvalidateWidget(i);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   657
			}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   658
		}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   659
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   660
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   661
	virtual void OnPlaceObject(Point pt, TileIndex tile)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   662
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   663
		_place_proc(tile);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   664
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   665
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   666
	virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   667
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   668
		VpSelectTilesWithMethod(pt.x, pt.y, select_method);
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   669
	}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   670
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   671
	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   672
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   673
		if (pt.x != -1) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   674
			switch (select_proc) {
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   675
				default: NOT_REACHED();
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   676
				case DDSP_CREATE_ROCKS:
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   677
				case DDSP_CREATE_DESERT:
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   678
				case DDSP_RAISE_AND_LEVEL_AREA:
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   679
				case DDSP_LOWER_AND_LEVEL_AREA:
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   680
				case DDSP_LEVEL_AREA:
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   681
				case DDSP_DEMOLISH_AREA:
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   682
					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   683
					break;
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   684
			}
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   685
		}
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   686
	}
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   687
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   688
	virtual void OnPlaceObjectAbort()
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   689
	{
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   690
		this->RaiseButtons();
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   691
		this->SetDirty();
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   692
	}
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   693
};
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   694
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   695
static const WindowDesc _scen_edit_land_gen_desc = {
11071
91ac7664ad1e (svn r13628) -Feature: enable building of aqueducts in the scenario editor
skidd13
parents: 11067
diff changeset
   696
	WDP_AUTO, WDP_AUTO, 163, 103, 163, 103,
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   697
	WC_SCEN_LAND_GEN, WC_NONE,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   698
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   699
	_scen_edit_land_gen_widgets,
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   700
};
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   702
void ShowEditorTerraformToolbar()
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   703
{
10628
07a68255029e (svn r13172) -Codechange: make a window class of the terraform toolbars.
rubidium
parents: 10616
diff changeset
   704
	AllocateWindowDescFront<ScenarioEditorLandscapeGenerationWindow>(&_scen_edit_land_gen_desc, 0);
8701
051036216675 (svn r11768) -Codechange: move some terraform related gui stuff from main_gui.cpp to terraform_gui.cpp (and introduce terraform_gui.h). Based on a patch by Roujin.
rubidium
parents: 8700
diff changeset
   705
}