src/tree_gui.cpp
author Tero Marttila <terom@fixme.fi>
Tue, 22 Jul 2008 21:51:14 +0300
changeset 11180 982e9f814f97
parent 11161 7d0fac8f14cd
permissions -rw-r--r--
scan for tarfiles in CACHE_DIR, remember what Subdirectory a tar was found in, set the GCF_FLAG on GRFs loaded from there, and hide those in the NewGRF GUI
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
{
11161
7d0fac8f14cd (svn r13719) -Codechange: rename IsValidPlayer to IsValidPlayerID in line with all other structs/classes that are in a pool.
rubidium
parents: 10775
diff changeset
   182
	if (_game_mode != GM_EDITOR && !IsValidPlayerID(_current_player)) return;
10517
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
}