src/tree_gui.cpp
author rubidium
Fri, 04 Jul 2008 19:00:11 +0000
changeset 11118 f66e0a4ce878
parent 10775 7061477bfbcf
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: 2167
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2167
diff changeset
     2
10467
a8de2b5759bd (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents: 10462
diff changeset
     3
/** @file tree_gui.cpp GUIs for building trees. */
6527
f584ab6d87f8 (svn r8987) -Cleanup: doxygen changes. Again. Mostly (still) @files missing tags and (more than just) a few comments style.
belugas
parents: 6523
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: 1879
diff changeset
     6
#include "openttd.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
     7
#include "window_gui.h"
8720
4e60c30e2006 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8710
diff changeset
     8
#include "gfx_func.h"
10467
a8de2b5759bd (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents: 10462
diff changeset
     9
#include "tilehighlight_func.h"
8750
fdd6054e7bae (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8720
diff changeset
    10
#include "player_func.h"
10467
a8de2b5759bd (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents: 10462
diff changeset
    11
#include "command_func.h"
8653
a83f7a536919 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8648
diff changeset
    12
#include "sound_func.h"
8766
c86cfa3a7580 (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8760
diff changeset
    13
#include "settings_type.h"
8615
6b91ca653bad (svn r11680) -Codechange: refactor more out of openttd.h and functions.h.
rubidium
parents: 8612
diff changeset
    14
8760
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    15
#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
    16
#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
    17
#include "table/tree_land.h"
ce0891c412ce (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8750
diff changeset
    18
10467
a8de2b5759bd (svn r13010) -Codechange: move the tree building GUI out of misc_gui.cpp.
rubidium
parents: 10462
diff changeset
    19
void PlaceTreesRandomly();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    20
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    21
class BuildTreesWindow : public Window
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    22
{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    23
	uint16 base;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    24
	uint16 count;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    25
	int tree_to_plant;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    26
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    27
	enum BuildTreesWidgets {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    28
		BTW_CLOSE,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    29
		BTW_CAPTION,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    30
		BTW_BACKGROUND,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    31
		BTW_TYPE_11,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    32
		BTW_TYPE_12,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    33
		BTW_TYPE_13,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    34
		BTW_TYPE_14,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    35
		BTW_TYPE_21,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    36
		BTW_TYPE_22,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    37
		BTW_TYPE_23,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    38
		BTW_TYPE_24,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    39
		BTW_TYPE_31,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    40
		BTW_TYPE_32,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    41
		BTW_TYPE_33,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    42
		BTW_TYPE_34,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    43
		BTW_TYPE_RANDOM,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    44
		BTW_MANY_RANDOM,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    45
	};
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    46
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    47
public:
10525
da5bc725cda4 (svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium
parents: 10517
diff changeset
    48
	BuildTreesWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    49
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    50
		if (_game_mode != GM_EDITOR) {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    51
			this->HideWidget(BTW_MANY_RANDOM);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    52
			int offset = this->widget[BTW_MANY_RANDOM].bottom - this->widget[BTW_MANY_RANDOM].top;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    53
			this->height -= offset;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    54
			this->widget[BTW_BACKGROUND].bottom -= offset;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    55
		}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    56
		ResetObjectToPlace();
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    57
		this->FindWindowPlacementAndResize(desc);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    58
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    59
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    60
	virtual void OnPaint()
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    61
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    62
		static const PalSpriteID tree_sprites[] = {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    63
			{ 0x655, PAL_NONE }, { 0x663, PAL_NONE }, { 0x678, PAL_NONE }, { 0x62B, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    64
			{ 0x647, PAL_NONE }, { 0x639, PAL_NONE }, { 0x64E, PAL_NONE }, { 0x632, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    65
			{ 0x67F, PAL_NONE }, { 0x68D, PAL_NONE }, { 0x69B, PAL_NONE }, { 0x6A9, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    66
			{ 0x6AF, PAL_NONE }, { 0x6D2, PAL_NONE }, { 0x6D9, PAL_NONE }, { 0x6C4, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    67
			{ 0x6CB, PAL_NONE }, { 0x6B6, PAL_NONE }, { 0x6BD, PAL_NONE }, { 0x6E0, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    68
			{ 0x72E, PAL_NONE }, { 0x734, PAL_NONE }, { 0x74A, PAL_NONE }, { 0x74F, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    69
			{ 0x76B, PAL_NONE }, { 0x78F, PAL_NONE }, { 0x788, PAL_NONE }, { 0x77B, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    70
			{ 0x75F, PAL_NONE }, { 0x774, PAL_NONE }, { 0x720, PAL_NONE }, { 0x797, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    71
			{ 0x79E, PAL_NONE }, { 0x7A5, PALETTE_TO_GREEN }, { 0x7AC, PALETTE_TO_RED }, { 0x7B3, PAL_NONE },
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    72
			{ 0x7BA, PAL_NONE }, { 0x7C1, PALETTE_TO_RED, }, { 0x7C8, PALETTE_TO_PALE_GREEN }, { 0x7CF, PALETTE_TO_YELLOW }, { 0x7D6, PALETTE_TO_RED }
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    73
		};
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    74
10595
7957c71b0dfe (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents: 10525
diff changeset
    75
		this->DrawWidgets();
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    76
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: 10707
diff changeset
    77
		int i = this->base = _tree_base_by_landscape[_settings_game.game_creation.landscape];
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: 10707
diff changeset
    78
		int count = this->count = _tree_count_by_landscape[_settings_game.game_creation.landscape];
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    79
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    80
		int x = 18;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    81
		int y = 54;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    82
		do {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    83
			DrawSprite(tree_sprites[i].sprite, tree_sprites[i].pal, x, y);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    84
			x += 35;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    85
			if (!(++i & 3)) {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    86
				x -= 35 * 4;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    87
				y += 47;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    88
			}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    89
		} while (--count);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    90
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    91
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    92
	virtual void OnClick(Point pt, int widget)
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    93
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    94
		switch (widget) {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    95
			case BTW_TYPE_11: case BTW_TYPE_12: case BTW_TYPE_13: case BTW_TYPE_14:
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    96
			case BTW_TYPE_21: case BTW_TYPE_22: case BTW_TYPE_23: case BTW_TYPE_24:
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    97
			case BTW_TYPE_31: case BTW_TYPE_32: case BTW_TYPE_33: case BTW_TYPE_34:
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    98
				if (widget - BTW_TYPE_11 >= this->count) break;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
    99
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   100
				if (HandlePlacePushButton(this, widget, SPR_CURSOR_TREE, VHM_RECT, NULL)) {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   101
					this->tree_to_plant = this->base + widget - BTW_TYPE_11;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   102
				}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   103
				break;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   104
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   105
			case BTW_TYPE_RANDOM: // tree of random type.
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   106
				if (HandlePlacePushButton(this, BTW_TYPE_RANDOM, SPR_CURSOR_TREE, VHM_RECT, NULL)) {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   107
					this->tree_to_plant = -1;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   108
				}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   109
				break;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   110
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   111
			case BTW_MANY_RANDOM: // place trees randomly over the landscape
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   112
				this->LowerWidget(BTW_MANY_RANDOM);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   113
				this->flags4 |= 5 << WF_TIMEOUT_SHL;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   114
				SndPlayFx(SND_15_BEEP);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   115
				PlaceTreesRandomly();
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   116
				MarkWholeScreenDirty();
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   117
				break;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   118
		}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   119
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   120
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   121
	virtual void OnPlaceObject(Point pt, TileIndex tile)
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   122
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   123
		VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_PLANT_TREES);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   124
		VpSetPlaceSizingLimit(20);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   125
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   126
10618
1bfb775dd5f2 (svn r13162) -Fix (r13160): trees couldn't be planted, correct function wasn't overloaded
smatz
parents: 10595
diff changeset
   127
	virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   128
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   129
		VpSelectTilesWithMethod(pt.x, pt.y, select_method);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   130
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   131
10618
1bfb775dd5f2 (svn r13162) -Fix (r13160): trees couldn't be planted, correct function wasn't overloaded
smatz
parents: 10595
diff changeset
   132
	virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   133
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   134
		if (pt.x != -1 && select_proc == DDSP_PLANT_TREES) {
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   135
			DoCommandP(end_tile, this->tree_to_plant, start_tile, NULL,
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   136
				CMD_PLANT_TREE | CMD_MSG(STR_2805_CAN_T_PLANT_TREE_HERE));
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   137
		}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   138
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   139
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   140
	virtual void OnTimeout()
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   141
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   142
		this->RaiseWidget(BTW_MANY_RANDOM);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   143
		this->InvalidateWidget(BTW_MANY_RANDOM);
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   144
	}
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   145
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   146
	virtual void OnPlaceObjectAbort()
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   147
	{
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   148
		this->RaiseButtons();
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   149
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   150
};
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
static const Widget _build_trees_widgets[] = {
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   153
{   WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,              STR_018B_CLOSE_WINDOW},              // BTW_CLOSE
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   154
{    WWT_CAPTION,   RESIZE_NONE,     7,    11,   142,     0,    13, STR_2802_TREES,        STR_018C_WINDOW_TITLE_DRAG_THIS},    // BTW_CAPTION
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   155
{      WWT_PANEL,   RESIZE_NONE,     7,     0,   142,    14,   183, 0x0,                   STR_NULL},                           // BTW_BACKGROUND
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   156
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_11
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   157
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_12
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   158
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_13
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   159
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    16,    61, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_14
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   160
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_21
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   161
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_22
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   162
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_23
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   163
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,    63,   108, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_24
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   164
{      WWT_PANEL,   RESIZE_NONE,    14,     2,    35,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_31
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   165
{      WWT_PANEL,   RESIZE_NONE,    14,    37,    70,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_32
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   166
{      WWT_PANEL,   RESIZE_NONE,    14,    72,   105,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_33
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   167
{      WWT_PANEL,   RESIZE_NONE,    14,   107,   140,   110,   155, 0x0,                   STR_280D_SELECT_TREE_TYPE_TO_PLANT}, // BTW_TYPE_34
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   168
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   157,   168, STR_TREES_RANDOM_TYPE, STR_TREES_RANDOM_TYPE_TIP},          // BTW_TYPE_RANDOM
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   169
{    WWT_TEXTBTN,   RESIZE_NONE,    14,     2,   140,   170,   181, STR_028A_RANDOM_TREES, STR_028B_PLANT_TREES_RANDOMLY_OVER}, // BTW_MANY_RANDOM
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 172
diff changeset
   170
{    WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   171
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   172
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   173
static const WindowDesc _build_trees_desc = {
7837
65d7362153a6 (svn r10704) -Codechange: provide an infrastructure to have resizable windows that are smaller than the default window size.
rubidium
parents: 7817
diff changeset
   174
	WDP_AUTO, WDP_AUTO, 143, 184, 143, 184,
6144
5a0ffbf27ced (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 6001
diff changeset
   175
	WC_BUILD_TREES, WC_NONE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   176
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   177
	_build_trees_widgets,
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
6573
7624f942237f (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6565
diff changeset
   180
void ShowBuildTreesToolbar()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   181
{
10517
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   182
	if (_game_mode != GM_EDITOR && !IsValidPlayer(_current_player)) return;
2e55d1418bd8 (svn r13061) -Codechange: make a class of the BuildTreesWindow.
glx
parents: 10467
diff changeset
   183
	AllocateWindowDescFront<BuildTreesWindow>(&_build_trees_desc, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   184
}